参考文档
gitlab官方中文文档
GitLab CI/CD实现代码推送后自动maven打包发布
项目背景
- 项目A。A项目pom中依赖B的jar包
- 项目B
- 两个项目都仅限prod分支被合并代码时才触发流水线
- 两个项目都是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