Gitlab CI/CD自动化部署的实现 (三)

CI/CD的最终实现:

一、登录gitlab-runner机器
切换runner普通用户

[root@localhost ~]# su - gitlab-runner

二、编写.gitlab-ci.yml文件
随便创建一个目录,叫什么无所谓

[gitlab-runner@localhost ~]$ mkdir git

将gitlab上想要发布的项目克隆到这个目录里

[gitlab-runner@localhost git]$ git clone git@gitlab.xxx.com:xxx/xxx.git

在项目目录里面创建一个.gitlab-ci.yml文件,如下:

[gitlab-runner@localhost ~]$ cat .gitlab-ci.yml

stages: 
    - test
    - deploy
test_job:
    stage: test
    script: mvn clean package sonar:sonar -Dsonar.host.url=http://sonar.rabbit.com -Dsonar.login=5081ab49551c333d3c03565696bcd22c9ec1b7c5 -Dsonar.java.binaries=target/classes
    only:
        - master
    tags:
        - shell
deploy_job:
    stage: deploy
    script:
        - mvn clean package -P dev -Dmaven.test.skip=true -Djacoco.skip=true
        - bash -x ~/shell/build.sh "$CI_COMMIT_REF_NAME"
    only:
        - dev
        - test
        - master
    tags:

另外包括传包,启动等命令都可以在yml文件里面体现(这里规划到一个脚本build.sh中),这样只要dev/test/master某一分支有commit的改变了,gitlab-ci就会自动创建job来自动发布

至此gitlab CI自动代码发布就顺利实现了

build.sh脚本文件内容:

group_name=$(pwd | awk -F '/' '{print $(NF-1)}')
if [ $group_name != "marsooo" ];then
	echo $group_name"  error"
	exit 1
fi
project=$(pwd | awk -F '/' '{print $NF}')
branch=$1
profix=".tar.gz"
list=""
path=""
if [ $project = "rabbit-app" ];then
	list=$branch"_web"
	profix=".war"
	path=""
elif [[ $project = rabbit-[a-z]*-price ]]; then
	list=$branch"_store"
	project=${project%-*}
	path=$project"-service/"
else
	list=$branch"_order"
	path=$project"-service/"
fi
. ~/shell/server_list.properties
list=$(echo $(eval echo '$'"$list"))
port=$(echo $(eval echo '$'"$1_port"))
OLD_IFS="$IFS"
IFS=","
arr=($list)
IFS="$OLD_IFS"
for i in ${arr[@]}
 do
     ssh -p$port "root@$i" "bash -x /opt/marsooo/gitlab-ci/build_before.sh $project $profix"
     scp -P "$port" $path"target/"*$profix "root@$i:/opt/marsooo/gitlab-ci/$project/"
     ssh -p$port "root@$i" "source /etc/profile;bash -x /opt/marsooo/gitlab-ci/build.sh $project"
 done

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值