#!/bin/bash # 检查命令行参数,获取环境名称。 # 示例:./build.sh dev 或 ./build.sh prod ENV=$1 # 如果没有指定环境,默认使用 dev if [ -z "$ENV" ]; then echo "错误:必须指定一个环境参数 (例如: dev, test, prod)。" echo "使用方法: $0 <环境>" exit 1 fi echo "开始构建,目标环境: $ENV" # 根据环境设置不同的构建命令 if [ "$ENV" == "dev" ]; then # Dev 环境的构建命令 go build -ldflags="-X 'main.env=dev'" -o ./tmp/goalfymax-admin ./cmd/server elif [ "$ENV" == "test" ]; then # Test 环境的构建命令 go build -ldflags="-X 'main.env=test'" -o ./tmp/goalfymax-admin ./cmd/server else # Prod 环境的构建命令 GOOS=linux GOARCH=amd64 go build -tags prod -ldflags="-X 'main.env=prod'" -o goalfymax-admin ./cmd/server fi # 检查上一个命令(go build)的退出状态。 # $? 是一个特殊变量,表示上一个命令的退出状态码。 # 0 表示成功,非0表示失败。 if [ $? -eq 0 ]; then echo "构建成功!" # 只有在生产环境下才重启服务 if [ "$ENV" == "prod" ]; then # echo "暂时将本地构建的文件移动到远程服务器" # scp ./goalfymax-admin root@44.247.156.94:/data/modules/goalfymax-admin echo "正在重启服务..." supervisorctl restart goalfymax-admin echo "服务重启命令已发送。" else echo "非生产环境,将工作目录切换到 ./tmp 并启动程序..." cd ./tmp ./goalfymax-admin --env $ENV fi else echo "构建失败,服务未重启。" exit 1 fi