81 lines
2.1 KiB
Bash
Executable File
81 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 检查参数
|
|
if [ $# -ne 1 ]; then
|
|
echo "使用方法: ./update.sh [dev|prod]"
|
|
exit 1
|
|
fi
|
|
|
|
MODE=$1
|
|
|
|
# 检查参数是否有效
|
|
if [ "$MODE" != "dev" ] && [ "$MODE" != "prod" ]; then
|
|
echo "无效的参数。请使用 dev 或 prod"
|
|
exit 1
|
|
fi
|
|
|
|
# 构建 VuePress 项目
|
|
echo "开始构建 VuePress 项目..."
|
|
cd doc
|
|
pnpm docs:build
|
|
cd ..
|
|
|
|
# 确保 gateway/static 目录存在
|
|
mkdir -p gateway/static
|
|
|
|
# 清理 gateway/static 目录
|
|
rm -rf gateway/static/*
|
|
|
|
# 复制 VuePress 构建文件到 gateway/static
|
|
echo "复制 VuePress 构建文件到 gateway/static..."
|
|
cp -r doc/src/.vuepress/dist/* gateway/static/
|
|
|
|
if [ "$MODE" = "prod" ]; then
|
|
echo "生产环境模式 - 开始编译 Go 项目..."
|
|
|
|
# 进入 gateway 目录
|
|
cd gateway
|
|
|
|
# 编译 Go 项目
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
|
|
|
|
# 创建临时部署目录
|
|
DEPLOY_DIR="deploy_tmp"
|
|
mkdir -p $DEPLOY_DIR
|
|
|
|
# 复制必要文件到部署目录
|
|
cp main $DEPLOY_DIR/
|
|
cp -r templates $DEPLOY_DIR/
|
|
cp -r static $DEPLOY_DIR/
|
|
|
|
|
|
# 创建 config 目录并复制必要的配置文件
|
|
mkdir -p $DEPLOY_DIR/config
|
|
|
|
# 复制生产环境的配置文件并重命名
|
|
cp .env_prod $DEPLOY_DIR/.env 2>/dev/null || echo "警告: .env_prod 文件不存在"
|
|
|
|
# 使用 zip 打包,包含隐藏文件但排除 .DS_Store
|
|
cd $DEPLOY_DIR && find . -name ".DS_Store" -delete && zip -q -r ../gateway_deploy.zip . -x "*.DS_Store" && cd ..
|
|
|
|
# 上传到生产服务器
|
|
echo "上传文件到生产服务器..."
|
|
scp gateway_deploy.zip root@106.55.227.223:/opt/1panel/deploy/yroot/gateway/
|
|
|
|
# 远程执行部署命令
|
|
echo "在生产服务器上执行部署..."
|
|
ssh root@106.55.227.223 "cd /opt/1panel/deploy/yroot/gateway && \
|
|
rm -rf main templates static .env config && \
|
|
unzip -q gateway_deploy.zip && \
|
|
rm gateway_deploy.zip && \
|
|
docker restart yroot"
|
|
|
|
# 清理临时文件
|
|
rm -rf $DEPLOY_DIR
|
|
rm gateway_deploy.zip
|
|
|
|
echo "生产环境部署完成!"
|
|
else
|
|
echo "开发环境部署完成!"
|
|
fi
|