runner流水线.gitlb-ci.yml脚本规范

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成功后才执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值