我正在尝试替换Jenkins文件中pom.xml中的快照版本。
发件人:
<abc.version>123-SNAPSHOT</abc.version>
123-SNAPSHOT可以是任何快照版本。
收件人:
<abc.version>234-SNAPSHOT</abc.version>
我尝试了多个命令,这些命令在Mac OS中可以正常工作,但是当我将它们放入Jenkins管道时却失败了。
Jenkins日志中生成的命令在Mac OS上也可以正常使用,但是不执行替换。
以下是我从Jenkins管道复制的一些命令,这些命令在Mac中可以正常运行,但在jenkins管道本身中不能执行替换操作。
詹金斯中的转义命令:
sh "sed -i -e 's/\\<abc.version\\>[-[:alnum:]./]\\{1,\\}\\<\\/abc.version\\>/\\<abc.version\\>234-SNAPSHOT\\<\\/abc.version\\>/' services/spark-jobs/pcs/pom.xml"
在詹金斯管道中执行的命令:
sed -i -e 's/\<abc.version\>[-[:alnum:]./]\{1,\}\<\/abc.version\>/\<abc.version\>234-SNAPSHOT\<\/abc.version\>/' services/spark-jobs/pcs/pom.xml
这不会替换pom.xml中的版本
知道我在这里缺少什么吗?
答案 0 :(得分:0)
您可以通过传递
使用管道实用程序步骤直接读取Jenkinsfile中的pom.xml属性。def pomModel = readMavenPom
def pomVersion = pomModel.getVersion().replace("123", "234")
引用:https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/
如果要在pom.xml中重写版本,可以使用mvn mojo
mvn versions:set -DnewVersion=234-SNAPSHOT
此步骤将使用较新的版本234-SNAPSHOT重写pom.xml文件,并将旧的pom.xml备份为pom.xml.versionsBackup(如果不想将其添加到.gitignore中,请将该通配符包括在其中。 git repo)。