update ci
This commit is contained in:
parent
cb7bb8feea
commit
a64c341e82
172
.gitlab-ci.yml
172
.gitlab-ci.yml
|
@ -1,12 +1,12 @@
|
|||
stages:
|
||||
- lock
|
||||
- build
|
||||
- save
|
||||
- sync
|
||||
- unlock
|
||||
|
||||
variables:
|
||||
ProjectPath: "mongo.games.com/game" # 项目相对于GOPATH的路径
|
||||
GOPROXY: "https://goproxy.cn,direct"
|
||||
GOPATH: "/home/gopath"
|
||||
GoServerSrcPath: "mongo.games.com/goserver" # 项目相对于GOPATH/src的路径
|
||||
BetaBinPath: "/home/game/" # beta环境部署路径
|
||||
DevelopBinPath: "/home/game/" # develop环境部署路径
|
||||
|
||||
|
@ -25,12 +25,12 @@ lock_job:
|
|||
stage: lock
|
||||
script:
|
||||
- |
|
||||
if [ -f /tmp/ci_lock ]; then
|
||||
echo "流水线已在运行,等待..."
|
||||
if [ -f /tmp/ci_lock_$CI_COMMIT_REF_NAME ]; then
|
||||
echo "流水线($CI_COMMIT_REF_NAME)已在运行,等待..."
|
||||
exit 1
|
||||
else
|
||||
touch /tmp/ci_lock
|
||||
echo "获得锁定,开始流水线。"
|
||||
touch /tmp/ci_lock_$CI_COMMIT_REF_NAME
|
||||
echo "获得锁定,开始流水线($CI_COMMIT_REF_NAME)。"
|
||||
fi
|
||||
|
||||
build-job:
|
||||
|
@ -38,95 +38,91 @@ build-job:
|
|||
only:
|
||||
- dev_login
|
||||
script:
|
||||
- git checkout $CI_COMMIT_REF_NAME
|
||||
- git pull origin $CI_COMMIT_REF_NAME
|
||||
- if [ ! -z "$(git status --porcelain go.mod go.sum)" ]; then
|
||||
GOMODTIDY=1;
|
||||
fi
|
||||
# 拷贝到GOPATH
|
||||
- echo '拷贝到GOPATH'
|
||||
- rsync -rvc --no-perms --delete ./* $GOPATH/src/$ProjectPath
|
||||
# 进入项目目录
|
||||
- cd $GOPATH/src/$ProjectPath
|
||||
# 编译
|
||||
- echo '编译'
|
||||
- if [ "$GOMODTIDY" == 1 ]; then
|
||||
go mod tidy;
|
||||
fi
|
||||
- |
|
||||
while IFS= read -r line || [[ -n $line ]]
|
||||
do
|
||||
cd $line
|
||||
echo "编译 $line"
|
||||
go build -v
|
||||
cd ..
|
||||
done < ./programs.txt
|
||||
# 拉取代码
|
||||
- echo "拉取代码"
|
||||
- git checkout $CI_COMMIT_REF_NAME
|
||||
- git pull origin $CI_COMMIT_REF_NAME
|
||||
|
||||
save-job:
|
||||
stage: save
|
||||
only:
|
||||
- dev_login
|
||||
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 || [[ -n $line ]]
|
||||
do
|
||||
echo "删除 $line 配置"
|
||||
rm ./temp/data/$line
|
||||
done < ./exclude.txt
|
||||
# 拷贝可执行程序
|
||||
- echo '拷贝可执行程序'
|
||||
- |
|
||||
while IFS= read -r line || [[ -n $line ]]
|
||||
do
|
||||
echo "拷贝 $line"
|
||||
mv ./$line/$line ./temp/$line
|
||||
done < ./programs.txt
|
||||
# 替换 go.mod 中的 ../goserver
|
||||
- echo "替换 go.mod 中的 ../goserver"
|
||||
- sed -i "s|mongo.games.com/goserver => .*|mongo.games.com/goserver => $GOPATH/src/$GoServerSrcPath|" go.mod
|
||||
|
||||
sync_job:
|
||||
stage: sync
|
||||
only:
|
||||
- dev_login
|
||||
script:
|
||||
- cd $GOPATH/src/$ProjectPath
|
||||
- if [ "$CI_COMMIT_BRANCH" == "dev_login" ]; then
|
||||
SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVLOGIN";
|
||||
REMOTE_HOST="$REMOTE_HOST_DEVLOGIN";
|
||||
REMOTE_USER="$REMOTE_USER_DEVLOGIN";
|
||||
ServerName="dev_login";
|
||||
BinPath="$DevelopBinPath";
|
||||
else
|
||||
echo "不支持的分支";
|
||||
exit 1;
|
||||
fi
|
||||
- if [ ! -z "$(git status --porcelain go.mod go.sum)" ]; then
|
||||
GOMODTIDY=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
|
||||
# 编译
|
||||
- echo "编译"
|
||||
- if [ "$GOMODTIDY" == 1 ]; then
|
||||
go mod tidy;
|
||||
fi
|
||||
- |
|
||||
while IFS= read -r line || [[ -n $line ]]
|
||||
do
|
||||
cd $line
|
||||
echo "编译 $line"
|
||||
go build -v
|
||||
cd ..
|
||||
done < ./programs.txt
|
||||
|
||||
# 使用 rsync 将文件同步到远程服务器
|
||||
- echo "同步到服务器"
|
||||
- echo "Deploying to remote server using rsync... $BinPath"
|
||||
- rsync -rvz --delete ./temp/ $REMOTE_USER@$REMOTE_HOST:$BinPath
|
||||
# 拷贝文件
|
||||
- echo "拷贝文件"
|
||||
- rm -rf ./temp
|
||||
- mkdir ./temp
|
||||
- mkdir ./temp/data
|
||||
- cp -rfp ./data/* ./temp/data
|
||||
|
||||
# 触发部署
|
||||
- "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline"
|
||||
# 删除自定义配置
|
||||
- echo "删除自定义配置"
|
||||
- |
|
||||
while IFS= read -r line || [[ -n $line ]]
|
||||
do
|
||||
echo "删除 $line 配置"
|
||||
rm ./temp/data/$line
|
||||
done < ./exclude.txt
|
||||
|
||||
# 拷贝可执行程序
|
||||
- echo "拷贝可执行程序"
|
||||
- |
|
||||
while IFS= read -r line || [[ -n $line ]]
|
||||
do
|
||||
echo "拷贝 $line"
|
||||
mv ./$line/$line ./temp/$line
|
||||
done < ./programs.txt
|
||||
|
||||
# 获取部署环境信息
|
||||
- echo "获取部署环境信息"
|
||||
- if [ "$CI_COMMIT_BRANCH" == "dev_login" ]; then
|
||||
SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVLOGIN";
|
||||
REMOTE_HOST="$REMOTE_HOST_DEVLOGIN";
|
||||
REMOTE_USER="$REMOTE_USER_DEVLOGIN";
|
||||
ServerName="dev_login";
|
||||
BinPath="$DevelopBinPath";
|
||||
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... $BinPath"
|
||||
- rsync -rvz --delete ./temp/ $REMOTE_USER@$REMOTE_HOST:$BinPath
|
||||
|
||||
# 触发部署
|
||||
- echo "触发部署"
|
||||
- "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline"
|
||||
|
||||
# 解锁作业,释放锁定
|
||||
unlock_job:
|
||||
stage: unlock
|
||||
script:
|
||||
- rm -f /tmp/ci_lock
|
||||
- echo "释放锁定,流水线结束。"
|
||||
- rm -f /tmp/ci_lock_$CI_COMMIT_REF_NAME
|
||||
- echo "释放锁定,流水线($CI_COMMIT_REF_NAME)结束。"
|
||||
when: always
|
Loading…
Reference in New Issue