2

想知道 Jenkins 内部版本号 (BUILD_NUMBER) 可以获得的最大数量是多少?我试图在网上查找,但找不到此信息。

它是无限的还是有一些限制(是 INT 或 INT64 或其他类型)?

PS:不是在寻找如何使用以下插件将其重置回 #1 或 #N 或将其值设置为给定名称(使用 Set build name 插件)。 https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin

要找到它的限制,使用Next Build Number 插件- 当我将构建设置为“65,535”时,它仍然成功地让我 65536 并且我一直将此值增加到 999999999(9 次),它仍然有效,即下一个构建运行了 1000000000 并为其他几个运行/构建获得了有效的 Jenkins 构建#。

当我尝试将下一个内部版本号设置为:9999999999(10 次)时,Jenkins 插件发出错误消息(显示我设置的下一个内部版本号不是整数,即不在范围内):

A problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins. The users list might be also useful in understanding what has happened.

Stack trace

javax.servlet.ServletException: Build number must be an integer
    at org.jvnet.hudson.plugins.nextbuildnumber.NextBuildNumberAction.doSubmit(NextBuildNumberAction.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
4

1 回答 1

3

发现 Jenkins BUILD_NUMBER 是 SIGNED Integer 数据类型,INT 有符号限制为:

int 2 or 4 bytes    -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647

因此,可以设置或构建 Jenkins 作业的最后一个值是:2147483647(此处为 4 个字节)。设置高于此数字的任何值都会产生预期的 INT 限制错误。

使用SET NEXT BUILD NUMBER插件也注意到了以下问题:

  1. 如果我在 -2147483648 或 2147483647(正)之间设置下一个内部版本号,则此插件在两种情况下都有效,即给出负数或正数并设置它不会出错。但是,如果您已经到达 build# 2147483647(在 Job history 下),那么即使将 build# 设置为 1 也不会生成下一个构建为 1 或 2 。或 3 等等。

  2. 由于 BUILD_NUMBER 已签名(-N 到 +N 在上述范围内),例如:设置-22用于使用插件设置下一个 build#,它没有给我build# -21build# 21在我的案子。

发生的事情是,虽然提供了一个比上一个/上一个构建# 负/更低的值,但这个插件在限制范围内取该值,但实际上没有做任何事情/给我预期的 BUILD#。当我点击立即构建/每次点击立即构建时,如果您点击“设置下一个构建号”来检查值,我注意到框中列出的数字自动递减我的次数点击“立即构建”(仅当您达到限制时才会发生这种情况)并且负/较低的值对下一个构建号没有影响(根据插件文档)。

我通过创建一个新的 test_job 进行了测试(通过仅保留 1 个构建来丢弃旧构建):

  1. 点击 Build Now,得到 Build# 1。
  2. 将下一个内部版本号设置为 100。
  3. 单击立即构建,得到构建#100,单击立即构建,得到构建#101。
  4. 这次将 Build number 设置为 11。
  5. 单击立即构建,但詹金斯没有给我构建#12,而是给了我构建#102(PS:根据文档,这是该插件的预期行为,因为将下一个构建号设置为较低的数字N不会做任何事情)。
于 2016-11-28T21:08:16.557 回答