stages: #定义所有job的阶段和顺序,
- sonar #分别和下面的job的stage相对应
- test
- build
- deploy
cache: #定义需要被缓存的文件、文件夹列表
paths:
- .m2/
variables: #定义变量
MAVEN_OPTS: "-Dmaven.repo.local=.m2" #使用-Dmaven.repo.local参数为每个任务分配本地仓库
MAVEN_IMAGE: registry.cn-beijing.aliyuncs.com/qianjia2018/qianjia_prod:maven3-jdk8 #MAVEN的镜像
CONTAINER_NAME: platform_house_hidden_call_miniapp #容器名
CONTAINER_NAME_SWARM: platform_swarm_house_hidden_call_miniapp #docker swarm名
LAN_REPO: registry-vpc.cn-beijing.aliyuncs.com/qianjia2018 #内网镜像仓库
WAN_REPO: registry.cn-beijing.aliyuncs.com/qianjia2018 #外网镜像仓库
DEV_REPO: $WAN_REPO/qianjia_dev #给镜像仓库加上dev后缀
PRED_REPO: $WAN_REPO/qianjia_pred #给镜像仓库加上pred后缀
PROD_REPO: $LAN_REPO/qianjia_prod #给镜像仓库加上prod后缀
SERVICE_NAME: qj #服务名
SCRIPT_NAME: deployswarm.sh #docker swarm的shell脚本
FILE_NAME: docker-compose-qjtelphone.yml #docker compose d的yml文件
sonar check: #sonar 代码质量检测
image: registry.cn-beijing.aliyuncs.com/qianjia2018/qianjia_dev:sonar1 #镜像来源
stage: sonar #当前job在sonar阶段
script: #定义由runner执行的脚本或命令
- /opt/sonar-runner-2.4/bin/sonar-runner -Dsonar.projectName=$CONTAINER_NAME -Dsonar.projectKey=$CONTAINER_NAME
-Dsonar.projectVersion=1.0 -Dsonar.sources=. -Dsonar.language=java -Dsonar.java.binaries=./*
tags: #对应Runner的tag
- sonarqube-200
only: #只在dev分支执行
- dev
test and build image dev: #测试并构建镜像
image: $MAVEN_IMAGE #镜像来源,对应上面variables中maven的镜像
stage: test #当前job处于testi阶段
script: #定义由runner执行的脚本或命令
- mvn -X package docker:build -q -Dmaven.test.skip=true #
tags: #对应runner的tag
- maven
only: #在哪些分支执行
- dev
- release
- release-swarm
push image: #推送镜像
stage: build #当前job处于build阶段
before_script: #在执行脚本或命令前,先登录镜像仓库
- docker login --username=xxxxxxx--password=xxxxxxxxxxx xxxxxxxxxx.aliyuncs.com
script:
- echo $version
- docker tag $DEV_REPO:$CONTAINER_NAME $LAN_REPO/qianjia_dev:$CONTAINER_NAME #打上和镜像仓库对应的dev标签
- docker push $LAN_REPO/qianjia_dev:$CONTAINER_NAME #上传到镜像仓库
tags: #对应runner 的标签
- docker-run
only: #dev分支下执行
- dev
when: on_success #当前面的工作都成功时才执行工作
push image pred: #测试阶段推送镜像
stage: build #当前job处于build阶段
before_script: #先登录镜像仓库
- docker login --xxxxxxxxxxxxxxxxxxxxxx --password=xxxxxxxx xxxxxxxxxxxxx.aliyuncs.com
script: #定义由runner执行的脚本或命令
- docker tag $DEV_REPO:$CONTAINER_NAME $LAN_REPO/qianjia_pred:$CONTAINER_NAME #打上和镜像仓库对应的pred标签
- docker push $LAN_REPO/qianjia_pred:$CONTAINER_NAME #上传到镜像仓库
tags: #对应的runner标签
- docker-run
only: 对应的git 分支
- release
when: on_success #前面的job成功后才执行工作
push image prodswarm: #生产推送镜像
stage: build #当前job处于build阶段
before_script: #登录镜像仓库
- docker login --username=xxxxxxxxxx --password=xxxxxxxxxxxxxx xxxxxxxxxx.aliyuncs.com
script:
- docker tag $DEV_REPO:$CONTAINER_NAME $PROD_REPO:$CONTAINER_NAME_SWARM #打上和镜像仓库对应的prod标签
- docker push $PROD_REPO:$CONTAINER_NAME_SWARM #上传到镜像仓库
tags: #对应的runner标签
- docker-run
only: #对应的git分支
- release-swarm
when: on_success #前面的job成功后才执行
ssh run on remote machine dev: #dev 远程链接主机并执行命令
stage: deploy #当前job在deploy阶段
script: #定义bash解释器,执行路径下的200.sh脚本,传入后面的参数
- bash ~/.local/bin/200.sh $CONTAINER_NAME 8092 7092 $DEV_REPO:$CONTAINER_NAME guojia 192.168.10.200 #该脚本是个远程登录,并传参,$5 $6是用户密码,${1..4}是给登录后执行的脚本传递的参数
tags: #对应的runner标签
- shell-200
only: #对应git的dev分支
- dev
when: on_success #前面的job成功后才执行
ssh run on remote machine pred: #pred 远程链接主机并执行命令
stage: deploy #当前job在deploy阶段
script: #定义bash解释器,执行路径下的deploy.sh脚本,传入后面的参数
- bash ~/.local/bin/deploy.sh $CONTAINER_NAME 8092 7092 $PRED_REPO:$CONTAINER_NAME zp 39.106.144.161 #该脚本是个远程登录,并传参,$5 $6是用户密码,${1..4}是给登录后执行的脚本传递的参数
tags: #对应的runner标签
- shell-prod
only: #对应git的release分支
- release
when: on_success #前面的job成功后才执行
ssh run on remote machine prodswarm: #prodswarm 远程链接主机并执行命令
stage: deploy #当前job在deploy阶段
script: #定义bash解释器,执行路径下的$SCRIPT_NAME脚本,传入后面的参数
- bash ~/.local/bin/$SCRIPT_NAME $SCRIPT_NAME $SERVICE_NAME $PROD_REPO:$CONTAINER_NAME_SWARM $CONTAINER_NAME_SWARM $FILE_NAME zp 39.106.17.245
#该脚本是个远程登录,并传参,$6 $7是用户密码,${1..5}是给登录后执行的脚本传递的参数
tags: #对应的runner标签
- shell-prod
only: #对应git的release分支
- release-swarm
when: on_success #前面的job成功后才执行
runner流水线.gitlb-ci.yml脚本规范
最新推荐文章于 2024-12-05 21:48:12 发布