【问题标题】:override build number in Hudson覆盖 Hudson 中的内部版本号
【发布时间】:2011-05-12 16:21:08
【问题描述】:

如何覆盖 Hudson 内部版本号?这听起来像是一个简单的问题,但实际上并非如此。

主要主要目标是将 SVN 修订号作为内部版本号。所以我设置了环境。变种使用适当的插件,我有:

BUILD_NUMBER = ${SVN_REVISION}.${BUILD_ID} BUILD_TAG = ${JOB_NAME}.${BUILD_NUMBER} BUILD_NUMBER = ${JOB_URL}.${BUILD_NUMBER}

在 Hudson 日志中,BUILD_NUMBER 被实际覆盖:

BUILD_NUMBER = 32.2010-11-19_14-10-48

BUILD_TAG = hudson-FF.Course Management-32.2010-11-19_14-10-48

BUILD_URL = http://dot-servers:8080/job/FF.Course%20Management/32.2010-11-19_14-10-48

但 Hudson 仍然使用自己的编号,并声称内部版本号是 70,而我希望它是 32(如上例所示)。

【问题讨论】:

  • 丑。这听起来像是在自找麻烦。可以将 svn 修订版用作构建中包含的构建 ID。但是要求 Hudson 的内部版本号与 Subversion 同步推进可能会导致问题,例如手动构建没有唯一的构建号。为什么 Hudson 的内部版本号很重要?
  • 1) 我明白构建的唯一性很重要,这就是为什么我在 ${BUILD_NUMBER} 中使用 ${BUILD_ID}。我希望这能解决唯一性问题
  • 2) 为什么我需要这个?好吧,当我拥有版本为 1.2.3.${SVN_REVISION} 的 DLL 时,我想用 Hudson 构建轻松地反映这个版本。如果没有这种反射,我需要浏览构建列表以查找特定的构建。或者其他情况:我的开发人员倾向于说“我已经在 ${SVN_REVISION} 中实现了它”而不是“我已经在 ${HUDSON_BUILD_NUMBER} 中实现了它”。因此,总而言之 - 这只是一种在查看文件版本和 Hudson 构建列表时轻松找到感兴趣构建的方法。
  • 注意:针对 Jenkins "build-name-setter" 插件中的 bug 的解决方法:issues.jenkins-ci.org/browse/…

标签: svn build-process hudson build-automation


【解决方案1】:
  1. 构建开始后无法设置构建号。
  2. 内部版本号必须是数字。
  3. 内部版本号必须是唯一的。

有一个插件可以设置工作的next build number。但这不是您正在寻找的功能,因为该工作已经开始。你应该看看哈德逊的fingerprint featuredescription setter plugin 是另一个不错的插件,可能会对您有所帮助。查看this issue 以更好地了解内部版本号。

【讨论】:

    【解决方案2】:

    我找到了一种方法,只需在jobs/project/nexBuildNumber中更改版本号,然后打开Manage Hudson选项卡,然后单击“Reload Configuration from Disk”,然后它将加载新的覆盖版本号。

    【讨论】:

      【解决方案3】:

      当您说 Hudson 使用自己的号码时,您是指在左侧边栏上吗?

      如果是这样,可能是因为当您设置它时(我猜是通过构建>执行shell脚本),该数字已经用于创建构建本身,因此它使用70而不是32.

      但是,由于您更改了 Execute shell 脚本中的编号,因此在 之后使用内部版本号的任何内容都应该使用 32。

      【讨论】:

      • 是的,我指的是左侧边栏。我的主要问题是:如何更改左侧边栏上的数字?
      • 据我所知,由于该编号是在您的构建了解 SVN REVISION 编号之前创建和使用的,因此我怀疑您可以更改它。但是,包含该编号的文件是$HUDSON_HOME/jobs/<projectname>/nextBuildNumber。您可以在开始下一次构建之前尝试更改文件中的值。让我知道它是否有效
      • 另外,如果您有两个构建步骤,则需要为两个步骤设置构建号。
      【解决方案4】:

      我改变了主意。我没有更改 Hudson 的内部版本号,而是使用它来对我的二进制文件进行版本控制。所以现在我有一个具有这种版本控制的二进制文件:

      1.2.${SVN_REVISION}.${BUILD_NUMBER}

      将它与 Description Setter 插件相结合,我可以在任何地方反映每个数字。 感谢您的帮助。

      【讨论】:

      • 恕我直言,赞成(或接受)@Peter 的回答是一种很好的形式,因为您决定使用他推荐的插件。干杯!
      【解决方案5】:

      我在 Team City CI 中完成了这项工作,这与 Hudson 非常相似。

      在命令行参数中设置 -DSVN_REVISION=123 -DBUILD_NUMBER=456 以运行 Maven。这应该覆盖这些值。

      在 Team City 中,我使用带有 -DscmBranch=/releases/2.0.0 -DbuildNUmber=233 的 Maven BuildNumber 插件来构建我们的版本,因为该插件仅支持 /tags、/branches 和 /主干文件夹名称,但我们有一个 /releases 文件夹。这会覆盖来自 scm 插件的值。

      【讨论】:

        猜你喜欢
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 2011-11-02
        • 1970-01-01
        • 2011-01-25
        • 2011-12-23
        • 1970-01-01
        相关资源
        最近更新 更多