game_sync/.gitlab-ci.yml

100 lines
2.3 KiB
YAML

stages:
- build
- save
- sync
variables:
ProjectPath: "mongo.games.com/game"
default:
tags:
- gitlab
build-job:
stage: build
only:
- develop
- release
resource_group: $RESOURCE_GROUP
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
save-job:
stage: save
only:
- develop
- release
resource_group: $RESOURCE_GROUP
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
sync_job:
stage: sync
only:
- develop
- release
resource_group: $RESOURCE_GROUP
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