原文链接
前言
在前文后端项目CICD流程构建以及项目CICD流程构建(续篇)我们处理了利用Gitlab
进行项目构建再将构建完成的包传入服务器运行的流程。有小伙伴反馈,在这种当多模块的情况下,不能很方便地构建指定模块,这里我们给出修改示例,通过git commit message
对构建模块进行指定
实现
直接上代码:
image: maven:3.8.5-openjdk-17
stages:
- build
- release
#打印版本号和tag信息
before_script:
- export APPLICATION_VERSION=`mvn spring-boot:build-info | grep Building | awk '{print $4}'`
- echo ${APPLICATION_VERSION}
- export TAG=${CI_COMMIT_BRANCH}_${CI_COMMIT_SHA:0:8}_${APPLICATION_VERSION}
- echo ${TAG}
- echo ${CI_PROJECT_ID}
- echo ${CI_JOB_ID}
- echo ${CI_PROJECT_NAME}
- echo ${PROJECT_NAME}
#构建jar包
build_yui:
stage: build
rules:
- if: $CI_COMMIT_BRANCH == "release" && $CI_COMMIT_MESSAGE =~ /\[yui\]/
script:
- cd yui
# your build step
- export PARAM_VAR="somthing"
- echo "PARAM_VAR=${PARAM_VAR}" >> build.env
- cat build.env
allow_failure: false
artifacts:
reports:
dotenv: yui/build.env
paths:
- yui/target/*.jar
expire_in: 1 week
#deploy to
release_yui:
stage: release
image: astercass/alpine-simple:latest
rules:
- if: $CI_COMMIT_BRANCH == "release" && $CI_COMMIT_MESSAGE =~ /\[yui\]/
script:
# your release step
dependencies:
- build_yui
build_kotomi:
stage: build
rules:
- if: $CI_COMMIT_BRANCH == "release" && $CI_COMMIT_MESSAGE =~ /\[kotomi\]/
script:
- cd kotomi
# your build step
- export PARAM_VAR="somthing"
- echo "PARAM_VAR=${PARAM_VAR}" >> build.env
- cat build.env
allow_failure: false
artifacts:
reports:
dotenv: kotomi/build.env
paths:
- kotomi/target/*.jar
expire_in: 1 week
#deploy to
release_kotomi:
stage: release
image: astercass/alpine-simple:latest
rules:
- if: $CI_COMMIT_BRANCH == "release" && $CI_COMMIT_MESSAGE =~ /\[kotomi\]/
script:
# your release step
dependencies:
- build_kotomi
这里我们有两个模块:kotomi
和yui
,比如我们在某个分支上最后的提交记录包含[kotomi]
则在合并到release
的时候,就会执行build_kotomi
和release_kotomi
,yui
模块亦然,如果最后提交记录同时包含多个模块,则会触发多个模块的构建和发布
举个例子,比如当前分支为feature-supportUserCoinModel-20250101
,测试回归完成后,我们将分支合并到master
:git checkout master && git pull && git merge feature-supportUserCoinModel-20250101
此时修改项目下更新日志文件,再进行提交:
echo "[yui] [kotomi] for support user coin model -- 20250201" >> release.log
git commit -am "build: [yui] [kotomi] for support user coin model"
git push
git checkout release
git merge master
git push
此时位于Gitlab
脚本就会被触发,执行yui
和kotomi
的构建和发布工作