Jenkins内部版本号限制-最大内部版本号

Jenkins内部版本号限制-最大内部版本号,jenkins,integer,range,jenkins-plugins,build-numbers,Jenkins,Integer,Range,Jenkins Plugins,Build Numbers,想知道Jenkins build number(build_number)能得到的最大数量是多少吗?我试图在网上查找,但找不到此信息 它是无限的还是有一些限制(INT、INT64或其他类型) PS: 我正在寻找如何使用以下插件将其重置回#1或#N,或将其值设置为给定名称(使用set-build name插件)。 为了找到它的极限,使用下一个版本号插件——当我将版本设置为“65535”时,它仍然成功地使我获得了65536,我不断地将这个值增加到9999999(9倍),并且它仍然有效,即下一个版本

想知道Jenkins build number(build_number)能得到的最大数量是多少吗?我试图在网上查找,但找不到此信息

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

PS: 我正在寻找如何使用以下插件将其重置回#1或#N,或将其值设置为给定名称(使用set-build name插件)。

为了找到它的极限,使用下一个版本号插件——当我将版本设置为“65535”时,它仍然成功地使我获得了65536,我不断地将这个值增加到9999999(9倍),并且它仍然有效,即下一个版本运行了100000000次,并且收获了一个有效的Jenkins版本,用于其他几次运行/版本

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


发现Jenkins BUILD_NUMBER是有符号整数数据类型,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 limit错误

注意到以下问题,使用设置下一个版本号插件:

  • 如果我将下一个版本号设置在-2147483648或2147483647(正数)之间,这个插件在两种情况下都能工作,即给出负数或正数,并且设置不会出错。但是,如果您已经到达build#2147483647(在Job history下),那么即使将build#设置为1,也不会将下一个build生成为1或2。或3等

  • 由于BUILD#u编号是有符号的(-N到+N在上面的范围内),例如:setting-22用于使用插件设置下一个BUILD#,它没有给我BUILD#-21BUILD##21

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

    我通过创建一个新的test_作业(通过只保留一个构建而丢弃旧构建)来测试这一点:

  • 点击Build Now,获得Build#1
  • 将下一个内部版本号设置为100
  • 点击立即构建,获得构建100,点击立即构建,获得构建101
  • 这次将buildnumber设置为11
  • 单击了Build Now,但Jenkins没有给我Build 12,而是给了我Build 102(PS:根据它的文档,这是这个插件的预期行为,因为将next Build number设置为一个较低的数字N不会起任何作用)

  • 这是一个32位的整数吗?最大值4294967,296@jonrsharpe它没有取那个值,然后就吐了。我的小姐,它是int的无符号值,也就是说,它将取2147483647作为最后一个值。然后你仍然回答了你自己的问题。你在问什么?我想我不应该:)或者我不记得int限制。但我发现了一件奇怪的事。如果我在设置版本号时给出一个负数,插件不会出错,也就是说,版本号不是无符号的,但它不会在-22-21-20中生成版本号。。。也可以。既然你刚刚算出它是一个有符号的32位整数,你为什么认为它会呢?
    int 2 or 4 bytes    -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647