6

如何自动或使用 shell 脚本增加 jenkins 内部版本号?现在我正在使用配置选项做同样的事情,并手动增加。我想自动完成。

4

1 回答 1

22

您所要求的(即在多个作业之间保持内部版本号相同)在 Jenkins中根本不可能。这是按设计完成的(正如 Jenkins 创建者本人所指出的那样)"[JENKINS] assumes that the build number is unique and monotonic.":. 您可以将其更改为更高的值,但将其更改为相同的数字会彻底破坏 Jenkins,因此是不可能的。

构建运行号就是这样:运行号。
它应该是顺序的。无论如何
,它都不是版本号。

然而,有几种方法可以将版本信息获取到构建历史记录中。

说明 Setter Plugin
这是我使用的。它不会更改内部版本号,而是更改描述,这是自动完成的。此外,由于这是描述,因此也可以随时手动修改。

这就是它的样子:
描述 Setter 内部版本号
注意构建#50#51实际具有相同的版本1.3.0.394376
在该版本字符串中,1.3.0是由项目属性确定的当前版本号,而实际上是从构建变量394376获得的 SVN 修订号。$SVN_REVISION_1所以每次在 SVN 中有一个新的提交,我都会得到一个新的修订号。但是,如果没有提交并且由于任何原因(例如 in#50#51)重新构建作业,我的版本号保持不变,因为没有代码更改。

我配置它的方式是:

  • 下载描述设置器插件
  • 在您的Build Steps某处,输出您的版本 *
  • 我只是有:
    echo Version is: ${internalVersionNumberFromWherever}.${SVN_REVISION_1}
  • Next setup Post-build Action with Set build description
  • 设置正则表达式以从控制台中提取版本号: Version is: (.*)
  • 将其他所有内容留空,RegEx 提取的任何内容都(.*)将用作描述。
  • 或者,您可以进一步将描述文本设置为Build - \1。RegEx 中\1对第一组的引用在哪里。(.*)
  • 您可以随时通过从构建历史记录中选择构建运行并单击右侧的“编辑描述”链接来手动更改运行的描述(前提是用户配置了“更新”权限)。

* 请注意,如果您的构建在输出版本文本的步骤之前失败,描述设置器插件将无法获取它。如果您总是想查看版本,那么首先设置版本号的显示。

Build Name Setter plugin
这个插件实际上会改变内部版本号
在此处输入图像描述
但是记住每个内部版本号必须是唯一的限制。
确保这一点的最佳方法是添加${BUILD_NUMBER}到您想要的任意数字(如上图所示)。通过这种方式,您可以拥有构建编号50.123,然后您的版本50.124在哪里,而顺序构建运行编号,Jenkins 确保保持唯一性。50123124${BUILD_NUMBER}

最后,还有一个我没有亲自尝试过的版本号插件,但它可能会对你有所帮助。

于 2014-03-27T15:09:26.670 回答