如何在jenkins中自动增加XML elt值

如何在jenkins中自动增加XML elt值,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我在我的项目repo中有一个xml文件,签出后,我想为每个构建自动增加版本号的最后一个值。我已经在使用xmlslurper访问版本号,并将其存储在一个变量中。在我的管道脚本中有类似的东西,我的xml文件只是一个带有 1.0.0.0 我会自动增加每个构建的最后一个数字。注:我不想使用詹金斯的版本号。在我的项目回购协议中,只要将最后一位数字改为$BUILD_,就很容易了 @NonCPS String getVersion(String path) { def version = new

我在我的项目repo中有一个xml文件,签出后,我想为每个构建自动增加版本号的最后一个值。我已经在使用xmlslurper访问版本号,并将其存储在一个变量中。在我的管道脚本中有类似的东西,我的xml文件只是一个带有 1.0.0.0 我会自动增加每个构建的最后一个数字。注:我不想使用詹金斯的版本号。在我的项目回购协议中,只要将最后一位数字改为$BUILD_,就很容易了

@NonCPS

String getVersion(String path) 
{
  def version = new xmlSlurper().parse(new File(path))
  return version.toString()
}

node 
{


 stage ('checkout') {
 .........

 }

stage ('build) {
def pwd2=pwd()
def v=getVersion("${pwd2}/VersionNumber.xml")


sh ' dotnet publish path/to/project -p:Fileversion=$v '

 }
}

没有这个插件,所以我想你可以直接使用groovy。如果你不喜欢这个版本号,试试这个

def test = "1.1.1.1"
def splitted = test.split('\\.')
splitted[3] = (((splitted[3] as BigDecimal) + 1) as String)
def testInc = splitted.join('.')
print(testInc)
对于构建编号方法,我建议将整个版本保存在Jenkins文件中,应该简单到:

def version = "1.0.0.${env.BUILD_NUMBER}"

谢谢你的回复。这肯定增加了一倍。那么,如何为每个构建增加?因为这只会在当前版本中增加。当我再次执行管道时,我得到的数字与我之前看到的执行的buildSolutions相同,它们会将更改后的版本提交回源代码管理。但这确实适用于不由代码更改触发的发布版本。现代CI/CD方法会说-使用内部版本号;)我的想法是使用这种方法来控制可以获得的数量,因为构建数量非常高,这在我们的案例中是不受支持的。通过使用这个定制的xml文件,我能够在需要时将数字重置回零。我感谢你的贡献。很高兴我能帮忙。感谢您接受答案。最后一件事,如何使用最后一位的版本号?