自动增量发布版本Jenkins

自动增量发布版本Jenkins,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我有一个在Jenkins中构建的应用程序,我想部署到Octopus。当我这样做的时候,我必须创建一个发布版本,发送给八达通。对于这个发布版本,我必须给出一个数字(例如:“C:\Octopus\Octo.exe”create release--project APP--version 4.8--packageversion=4.8) 如何使版本号自动递增?(例如:我已经构建了应用程序,并在八达通中创建了版本号4.8,下次构建应用程序时,我希望创建版本号4.9) 谢谢詹金斯为每个构建命令提供了一些可

我有一个在Jenkins中构建的应用程序,我想部署到Octopus。当我这样做的时候,我必须创建一个发布版本,发送给八达通。对于这个发布版本,我必须给出一个数字(例如:
“C:\Octopus\Octo.exe”create release--project APP--version 4.8--packageversion=4.8

如何使版本号自动递增?(例如:我已经构建了应用程序,并在八达通中创建了版本号4.8,下次构建应用程序时,我希望创建版本号4.9)

谢谢

詹金斯为每个构建命令提供了一些可用的功能;其中之一就是建造数量,一个不断增加的数字

如果您可以在版本号中添加漏洞,请更改您的版本以包含版本号,如4.8-142,其中142是jenkins提供的版本号。这使您可以在semver意义上增加版本号,同时还可以以更实用的方式控制实际版本


如果您对版本中的版本号不满意,那么应该有一个生成后脚本来更新版本号并将其存储在某个文件中。然后,您可以使用或注入该文件内容。

您可以使用作业属性来存储版本,然后在每次运行时使用以下脚本(由“执行系统groovy脚本”生成步骤执行)对其进行更新:


使用Jenkins Plugins的版本号plugin,它应该给你一个环境变量作为病毒号,更多信息请参见

如果你是从git repo进行部署,你可能已经为每个版本创建了标签(或者至少你应该这样做,这样你可以更容易地跟踪部署的内容)。如果是这种情况,您可以从这些标记派生下一个发行版本,而不必将该版本存储在其他任何地方(只需确保Jenkins在高级克隆行为中获取标记)

然后,您可以使用以下内容计算下一个版本:

def nextVersionFromGit(范围){
def latestVersion=sh returnStdout:true,脚本:'git description--tags“$(git rev list--tags=*.*.*.*--max count=12>/dev/null)“2>/dev/null | | echo 0.0.0”
def(major、minor、patch)=最新版本。标记化('.')。收集{it.toInteger()}
def下一版本
开关(范围){
“重大”案件:
nextVersion=“${major+1}.0.0”
打破
“未成年人”案件:
nextVersion=“${major}.${minor+1}.0”
打破
案例“补丁”:
nextVersion=“${major}.${minor}.${patch+1}”
打破
}
下一版本
}

此方法使用格式,但如果您想要只有2个数字的版本,则可以很容易地对其进行调整。

我在下面使用了这篇文章:

export RELEASE_VERSION=$(jx-release-version) 

git tag -fa v${RELEASE_VERSION} -m 'Release version ${RELEASE_VERSION}' 

git push origin v${RELEASE_VERSION}

Jenkins是一个CI工具。管理版本号是构建管理工具的任务。我看不到其他解决方案,但在您的案例中使用手工制作的过程。@GeroldBroser您能给我一个如何实现这一点的示例吗?ThxSee。一旦它在那里被修改,我将把它作为一个答案发布,包括Jenkins,在这里。Jenkins有自动递增的版本号。您可以传递一些类似“-version 4.${BUILD_NUMBER}”的内容吗?至少在我的jenkins版本中,此代码不会更新作业的config.xml文件,因此在重新启动时,此递增的数字可能会丢失。更新值后,您希望在脚本
job.save()中有一行
将更改保存到文件系统。此方法为
getUpdatedVersion('minor','0.1.13')提供
0.2.13
。我希望它是
0.2.0
。另外,
++
对于非变量的东西似乎是一种非常糟糕的做法。在阅读了上面的所有答案后,我打算建议使用内部版本号。+1
export RELEASE_VERSION=$(jx-release-version) 

git tag -fa v${RELEASE_VERSION} -m 'Release version ${RELEASE_VERSION}' 

git push origin v${RELEASE_VERSION}