【问题标题】:Is there way to increment the version automatically which building the job through jenkins?有没有办法自动增加通过詹金斯构建工作的版本?
【发布时间】:2019-01-22 10:18:18
【问题描述】:

每当我运行我的 jenkins 构建时,我都希望我的快照版本自动递增。我知道他们有几个插件,只是想了解有没有办法在没有任何插件的情况下实现这一点?

【问题讨论】:

标签: maven jenkins


【解决方案1】:

您可以自动更改工件版本 - 通过在 Jenkins 管道中将其指定为 ${env.BUILD_NUMBER}(例如),然后将其作为 {revision} 参数传递给 mvn 命令。为此,您需要将此{revision} 变量放入<version> 标记中,如下所示

<version>${revision}</version> 

然后将其提供给 Jenkins 管道中的 maven 命令:

mvn deploy -Drevision=${env.BUILD_NUMBER}

有关详细信息,请参阅this 答案(第一个选项)。

注意:正如@khmarbaise 所指出的,您必须使用flatten-maven-plugin,否则可能会出现一些问题,请参阅this 文章中的详细信息。 (但是,对于我的简单maven项目,没有这样的问题,所以我没有使用那个插件,只有revision参数)

【讨论】:

  • 为什么不呢?从那篇文章中您可以看到,如果您使用像mvn deploy -Drevision=${env.BUILD_NUMBER} 这样的命令,那么它将正常工作。我认为如果您在 Jenkins 中使用自动构建,那么添加 -Drevision=${env.BUILD_NUMBER} 参数不会有问题。如果不向 mvn 命令添加参数,我看不到在 Jenkins 构建中自动递增版本的更好选择。
  • 直到文档(flatten-maven-plugin)结束才阅读。如果您使用您的设置,您生成的 pom 文件将是错误的..意味着您不能使用它们..!! (见这里:maven.apache.org/maven-ci-friendly.html
  • 据我了解,它仅适用于多模块项目,对于简单项目来说一切都很好(我已经尝试过了)。谢谢指出!
  • 不确定,我使用了没有 flatten-maven-plugin 的 revision 参数,并且一切正常,没有任何问题。无论如何,在上面添加您的信息,谢谢!
  • 感谢@biruk1230 .. 我尝试使用修订版并遇到了一些错误
【解决方案2】:

您可以使用versions-maven-plugin

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

目标“build-helper:parse-version”在 pom.xml 中提供实际版本的解析片段,并计算版本的增量片段: 使用可以使用这个 vars 来设置新版本

parsedVersion.nextMajorVersion
parsedVersion.nextMinorVersion
parsedVersion.nextIncrementalVersion

【讨论】:

  • @Tirex- 我如何在 jenkins 文件中调用它?
猜你喜欢
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
相关资源
最近更新 更多