97 lines
2.2 KiB
YAML
97 lines
2.2 KiB
YAML
stages:
|
|
- build
|
|
- save
|
|
- sync
|
|
|
|
variables:
|
|
ProjectPath: "mongo.games.com/game"
|
|
|
|
default:
|
|
tags:
|
|
- gitlab
|
|
|
|
build-job:
|
|
stage: build
|
|
only:
|
|
- develop
|
|
- release
|
|
script:
|
|
- git checkout $CI_COMMIT_REF_NAME
|
|
# 拷贝到GOPATH
|
|
- echo '拷贝到GOPATH'
|
|
- cp -rfp ./* $GOPATH/src/$ProjectPath
|
|
# 进入项目目录
|
|
- cd $GOPATH/src/$ProjectPath
|
|
# 编译
|
|
- echo '编译'
|
|
- go env -w GO111MODULE=off
|
|
- |
|
|
while IFS= read -r line
|
|
do
|
|
cd $line
|
|
echo "编译 $line"
|
|
go build -v
|
|
cd ..
|
|
done < shell/programs.txt
|
|
|
|
deploy-job:
|
|
stage: save
|
|
only:
|
|
- develop
|
|
- release
|
|
script:
|
|
- cd $GOPATH/src/$ProjectPath
|
|
# 拷贝文件
|
|
- echo '拷贝文件'
|
|
- rm -rf ./temp
|
|
- mkdir ./temp
|
|
- mkdir ./temp/data
|
|
- cp -rfp ./data/* ./temp/data
|
|
# 删除自定义配置
|
|
- echo '删除自定义配置'
|
|
- |
|
|
while IFS= read -r line
|
|
do
|
|
echo "删除 $line 配置"
|
|
rm ./temp/data/$line
|
|
done < ./shell/exclude.txt
|
|
# 拷贝可执行程序
|
|
- echo '拷贝可执行程序'
|
|
- |
|
|
while IFS= read -r line
|
|
do
|
|
echo "拷贝 $line"
|
|
mv ./$line/$line ./temp/$line
|
|
done < ./shell/programs.txt
|
|
|
|
push_job:
|
|
stage: sync
|
|
only:
|
|
- develop
|
|
- release
|
|
script:
|
|
- cd $GOPATH/src/$ProjectPath
|
|
- if [ "$CI_COMMIT_BRANCH" == "develop" ]; then
|
|
SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVELOP";
|
|
REMOTE_HOST="$REMOTE_HOST_DEVELOP";
|
|
REMOTE_USER="$REMOTE_USER_DEVELOP";
|
|
elif [ "$CI_COMMIT_BRANCH" == "release" ]; then
|
|
SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_BETA";
|
|
REMOTE_HOST="$REMOTE_HOST_BETA";
|
|
REMOTE_USER="$REMOTE_USER_BETA";
|
|
else
|
|
echo "不支持的分支";
|
|
exit 1;
|
|
fi
|
|
|
|
# 设置 .ssh 目录并写入 SSH 私钥
|
|
- echo "设置 SSH keys..."
|
|
- mkdir -p ~/.ssh
|
|
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- ssh-keyscan -H "$REMOTE_HOST" >> ~/.ssh/known_hosts
|
|
|
|
# 使用 rsync 将文件同步到远程服务器
|
|
- echo "同步到服务器"
|
|
- echo "Deploying to remote server using rsync..."
|
|
- rsync -avz --delete ./temp $REMOTE_USER@$REMOTE_HOST:$REMOTE_DEPLOY_PATH |