记一次gitlab cicd部署多项目流水线流程

参考文档

gitlab官方中文文档
GitLab CI/CD实现代码推送后自动maven打包发布

项目背景

  1. 项目A。A项目pom中依赖B的jar包
  2. 项目B
  3. 两个项目都仅限prod分支被合并代码时才触发流水线
  4. 两个项目都是maven项目

流程:
gitlab服务器 =>gitlab runner 打包服务器=>部署服务器

流水线触发后,在打包服务器内打包完成,然后再通过ssh命令(这里略过,读者自行搜索)发送至部署服务器并运行部署脚本

打包需求

gitlab runner 服务器内,B项目只需要mvn install更新服务器的本地仓,然后A项目package完发送到部署服务器

gitlab runner 服务器上需要配置的环境

maven

项目B的流水线配置

default:
  tags:
    - shell #此处为Runner的tag,可用于指定Runner

stages:
  - install

job_install:
  stage: install
  script:
    - echo "--开始mvn install 实体包--"
    - mvn clean install
    - echo "--完成--"
  only:
    - prod # 指定分支

项目A的流水线配置

default:
  tags:
    - shell #此处为Runner的tag,可用于指定Runner
stages:
  - install-b
  - package
  - deploy



install_b:
  stage: install-b
  trigger:
    project: my-group/project-b #填写你项目的 所在组和gitlab上的项目名。别写错了
    strategy: depend # 重点
    branch: prod  #重点 由于B的项目流水线设置了只在prod分支运行,所以这里必须指定


package_war:
  stage: package
  script:
    - echo "--开始mvn package --"
    - mvn clean package
    - echo "--完成--"
  artifacts:
    paths:
      - target/a.jar #设置制品,这样下面的部署流程可以引用
  only:
    - prod
deploy_service:
  stage: deploy
  script:
    - echo "--start deploy --"
    - echo $CI_COMMIT_TAG
    - echo "模拟部署"
    - echo "--完成--"
  only:
    - prod

你可能感兴趣的:(gitlab,服务器,运维)