mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 00:10:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#bin/bash
 | 
						|
 | 
						|
#----------------------------------------------
 | 
						|
# 前后端打包编译至指定目录,即快速制作发行版
 | 
						|
#----------------------------------------------
 | 
						|
 | 
						|
project_path=`pwd`
 | 
						|
# 构建后的二进制执行文件名
 | 
						|
exec_file_name="mayfly-go"
 | 
						|
# web项目目录
 | 
						|
web_folder="${project_path}/mayfly_go_web"
 | 
						|
# server目录
 | 
						|
server_folder="${project_path}/server"
 | 
						|
 | 
						|
function echo_red() {
 | 
						|
    echo -e "\033[1;31m$1\033[0m"
 | 
						|
}
 | 
						|
 | 
						|
function echo_green() {
 | 
						|
    echo -e "\033[1;32m$1\033[0m"
 | 
						|
}
 | 
						|
 | 
						|
function echo_yellow() {
 | 
						|
    echo -e "\033[1;33m$1\033[0m"
 | 
						|
}
 | 
						|
 | 
						|
function buildWeb() {
 | 
						|
    cd ${web_folder}
 | 
						|
    copy2Server=$1
 | 
						|
 | 
						|
    echo_yellow "-------------------打包前端开始-------------------"
 | 
						|
    yarn run build
 | 
						|
    if [ "${copy2Server}" == "2" ] ; then
 | 
						|
        echo_green '将打包后的静态文件拷贝至server/static/static'
 | 
						|
        rm -rf ${server_folder}/static/static && mkdir -p ${server_folder}/static/static && cp -r ${web_folder}/dist/* ${server_folder}/static/static
 | 
						|
    fi
 | 
						|
    echo_yellow ">>>>>>>>>>>>>>>>>>>打包前端结束<<<<<<<<<<<<<<<<<<<<\n"
 | 
						|
}
 | 
						|
 | 
						|
function build() {
 | 
						|
    cd ${project_path}
 | 
						|
 | 
						|
    # 打包产物的输出目录
 | 
						|
    toFolder=$1
 | 
						|
    os=$2
 | 
						|
    arch=$3
 | 
						|
    copyStatic=$4
 | 
						|
 | 
						|
    echo_yellow "-------------------${os}-${arch}打包构建开始-------------------"
 | 
						|
 | 
						|
    cd ${server_folder}
 | 
						|
    echo_green "打包构建可执行文件..."
 | 
						|
 | 
						|
    execFileName=${exec_file_name}
 | 
						|
    # 如果是windows系统,可执行文件需要添加.exe结尾
 | 
						|
    if [ "${os}" == "windows" ];then
 | 
						|
        execFileName="${execFileName}.exe"
 | 
						|
    fi
 | 
						|
    CGO_ENABLE=0 GOOS=${os} GOARCH=${arch} go build -o ${execFileName} main.go
 | 
						|
 | 
						|
    if [ -d ${toFolder} ] ; then
 | 
						|
        echo_green "目标文件夹已存在,清空文件夹"
 | 
						|
        sudo rm -rf ${toFolder}
 | 
						|
    fi
 | 
						|
    echo_green "创建'${toFolder}'目录"
 | 
						|
    mkdir ${toFolder}
 | 
						|
 | 
						|
    echo_green "移动二进制文件至'${toFolder}'"
 | 
						|
    mv ${server_folder}/${execFileName} ${toFolder}
 | 
						|
 | 
						|
    if [ "${copy2Server}" == "1" ] ; then
 | 
						|
        echo_green "拷贝前端静态页面至'${toFolder}/static'"
 | 
						|
        mkdir -p ${toFolder}/static && cp -r ${web_folder}/dist/* ${toFolder}/static
 | 
						|
    fi
 | 
						|
 | 
						|
    echo_green "拷贝脚本等资源文件[config.yml、mayfly-go.sql、readme.txt、startup.sh、shutdown.sh]"
 | 
						|
    cp ${server_folder}/config.yml ${toFolder}
 | 
						|
    cp ${server_folder}/mayfly-go.sql ${toFolder}
 | 
						|
    cp ${server_folder}/readme.txt ${toFolder}
 | 
						|
    cp ${server_folder}/startup.sh ${toFolder}
 | 
						|
    cp ${server_folder}/shutdown.sh ${toFolder}
 | 
						|
 | 
						|
    echo_yellow ">>>>>>>>>>>>>>>>>>>${os}-${arch}打包构建完成<<<<<<<<<<<<<<<<<<<<\n"
 | 
						|
}
 | 
						|
 | 
						|
function buildLinuxAmd64() {
 | 
						|
    build "$1/mayfly-go-linux-amd64" "linux" "amd64" $2
 | 
						|
}
 | 
						|
 | 
						|
function buildLinuxArm64() {
 | 
						|
    build "$1/mayfly-go-linux-arm64" "linux" "arm64" $2
 | 
						|
}
 | 
						|
 | 
						|
function buildWindows() {
 | 
						|
    build "$1/mayfly-go-windows" "windows" "amd64" $2
 | 
						|
}
 | 
						|
 | 
						|
function buildMac() {
 | 
						|
    build "$1/mayfly-go-mac" "darwin" "amd64" $2
 | 
						|
}
 | 
						|
 | 
						|
function runBuild() {
 | 
						|
    # 构建结果的目的路径
 | 
						|
    read -p "请输入构建产物输出目录: " toPath
 | 
						|
    if [ ! -d ${toPath} ] ; then
 | 
						|
        echo_red "构建产物输出目录不存在!"
 | 
						|
        exit;
 | 
						|
    fi
 | 
						|
    # 进入目标路径,并赋值全路径
 | 
						|
    cd ${toPath}
 | 
						|
    toPath=`pwd`
 | 
						|
 | 
						|
    read -p "是否构建前端[0|其他->否 1->是 2->构建并拷贝至server/static/static]: " runBuildWeb
 | 
						|
    read -p "请选择构建版本[0|其他->全部 1->linux-amd64 2->linux-arm64 3->windows 4->mac]: " buildType
 | 
						|
    
 | 
						|
    
 | 
						|
    if [ "${runBuildWeb}" == "1" ] || [ "${runBuildWeb}" == "2" ] ; then
 | 
						|
        buildWeb ${runBuildWeb}
 | 
						|
    fi
 | 
						|
 | 
						|
    case ${buildType} in
 | 
						|
         "1")
 | 
						|
            buildLinuxAmd64 ${toPath} ${runBuildWeb}
 | 
						|
        ;;
 | 
						|
         "2")
 | 
						|
            buildLinuxArm64 ${toPath} ${runBuildWeb}
 | 
						|
        ;;
 | 
						|
        "3")
 | 
						|
            buildWindows ${toPath} ${runBuildWeb}
 | 
						|
        ;;
 | 
						|
        "4")
 | 
						|
            buildMac ${toPath} ${runBuildWeb}
 | 
						|
        ;;
 | 
						|
        *)
 | 
						|
            buildLinuxAmd64 ${toPath} ${runBuildWeb}
 | 
						|
            buildLinuxArm64 ${toPath} ${runBuildWeb}
 | 
						|
            buildWindows ${toPath} ${runBuildWeb}
 | 
						|
            buildMac ${toPath} ${runBuildWeb}
 | 
						|
        ;;
 | 
						|
    esac
 | 
						|
}
 | 
						|
 | 
						|
runBuild |