我继承了 2 个项目,一个依赖另一个,两个 Maven 项目都使用 Jenkinsfile 构建。
项目 B 依赖于项目 A 的一些模块。
现在,项目 A 的 pom.xml 中的版本是硬编码的,项目 B 中的依赖项版本也是如此。版本在 Jenkinsfile 中管理,但不在 pom.xml 中更新。这有时会导致项目 B 的本地构建出现问题。
我希望增加项目 A 模块的 poms 中的版本以反映构建,而不是硬编码。
我在网上找到的建议似乎过时了,我不确定它们是否不再相关。我希望使用最好的方法。
詹金斯文件:
env.VERSION = "${env.BUILD_ID}-${(env.BRANCH_NAME).replace('/', '-')}"
if (env.BRANCH_NAME == "master") {
env.VERSION = env.BUILD_ID
}
stage ('Checkout') {
checkout scm
gitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
sh "git config user.email email@email.email"
sh "git config user.name 'jenkins-username'"
sh "git tag -a -f -m 'Jenkins CI Build: ${env.BRANCH_NAME} ${env.BUILD_NUMBER}' ${version}"
}
stage ('Build') {
withCredentials(......) {
ansiColor('xterm') {
sh "docker build --build-arg VERSION=${env.VERSION} --target build -t sometag:build ."
docker_images.each{ image ->
sh "docker build --build-arg VERSION=${env.VERSION} --target ${image} -t ${rootRepo}/${image}:${env.VERSION} -t ${rootRepo}/${image}:${gitCommit} ."
}
}
}
}
pom.xml:
<groupId>my.group</groupId>
<artifactId>my-artifact</artifactId>
<packaging>pom</packaging>
<version>1234</version>
谢谢。
答案 0 :(得分:0)
您可以借助插件 https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/
我们使用以下代码执行此操作,其中 versionTag
是我们要更新 pom.xml 的版本:
def pomFile = 'pom.xml'
def pom = readMavenPom file: pomFile
pom.version = versionTag
writeMavenPom file: pomFile, model: pom
记得提交并推送 pom.xml 之后。