【问题标题】:Jenkins - How to access BUILD_NUMBER environment variableJenkins - 如何访问 BUILD_NUMBER 环境变量
【发布时间】:2013-10-04 10:52:42
【问题描述】:

Jenkins 参数是否区分大小写?我有一个参数化构建,它需要在构建之前设置一个名为“build_parameter”的 ant 参数。当我尝试访问 Jenkins 设置的 ${BUILD_NUMBER} 时,我得到了为 ant 参数设置的值。如果构建参数不区分大小写,任何人都可以建议我解决这个问题吗?我无法更改构建参数名称,因为我将不得不更改构建脚本(这不是一个选项)。谢谢!

【问题讨论】:

  • Adarsh:我的 build_parameter 和环境变量 ${BUILD_NUMBER} 有不同的值。抱歉不清楚。我需要一种访问 Jenkins ${BUILD_NUMBER} 值的方法。但是,当我尝试以我们对环境变量 (${BUILD_NUMBER}) 的方式访问它时,它会打印出另一个值。
  • 根据我的调查,BUILD_NUMBER 为您提供了当前的内部版本号。所以你需要改变你的构建脚本。或者尝试创建新变量并将其赋值为 BUILD_NUMBER 并使用它。
  • 我好像记不住var名,所以经常参考localhost:8080/env-vars.html

标签: jenkins


【解决方案1】:

在 PowerShell 脚本中使用 $env:BUILD_NUMBER

【讨论】:

    【解决方案2】:

    对于使用 $BUILD_NUMBER 的 Jenkinsfile 中的 Groovy 脚本,它可以工作。

    【讨论】:

      【解决方案3】:

      为了回答您的第一个问题,Jenkins 变量区分大小写。但是,如果您正在编写 Windows 批处理脚本,它们不区分大小写,因为 Windows 不关心大小写。

      由于您对自己的设置不是很清楚,我们假设您正在使用 ant 构建步骤来启动您的 ant 任务。查看the Jenkins documentation(Adarsh 给您的页面相同,但章节不同),了解如何使 Jenkins 变量可用于您的 ant 任务的示例。

      编辑:

      因此,我需要访问环境变量 ${BUILD_NUMBER} 来构造 URL。

      那你为什么不使用$BUILD_URL呢?扩展邮件插件中没有吗?

      【讨论】:

      • Peter:Sagar 的回复请参考我上面的评论。我需要获取环境变量 ${BUILD_NUMBER} 的值,但是我想它会被另一个参数(小写参数)覆盖。我正在使用 Mac OS,并且没有在任何 bash 脚本中使用这些参数。我要做的就是在扩展电子邮件通知电子邮件内容中使用它。
      • 彼得:谢谢你的建议。在您提出建议后,我确​​实尝试了 ${BUILD_URL}。它确实将我带到了构建页面。有没有办法将它直接指向工件,以便它直接从电子邮件中的链接开始下载工件?
      • 它是 ${BUILD_URL}/artifact/
      • 我很惊讶这是被接受的答案,因为这个问题没有提到任何关于 Windows 的内容。我不知道环境变量不区分大小写的任何其他操作系统,假设不区分大小写绝对不是好习惯。 (我参与过很多项目,其中使用 Windows 的开发人员负责确保他们的提交不会破坏正常的操作系统,尤其是文件名。谢天谢地,在 Windows 中显然可以关闭不区分大小写的文件名,这被认为是最佳实践。)
      【解决方案4】:

      假设我理解您的问题并正确设置,

      如果您尝试在脚本中使用内部版本号,您有两种选择:

      1) 调用ant时,使用:ant -Dbuild_parameter=${BUILD_NUMBER}

      2) 更改您的脚本,以便:

      <property environment="env" />
      <property name="build_parameter"  value="${env.BUILD_NUMBER}"/>
      

      【讨论】:

      • Sagar:我使用参数化构建选项让用户输入 build_number 参数(注意:它是小写的),然后在我的 ant 脚本中使用它。但是,我需要发送一封电子邮件,其中包含工件位置作为 URL。因此,我需要访问环境变量 ${BUILD_NUMBER} 来构造 URL。现在,用户输入的参数 ${build_number} 和环境变量 ${BUILD_NUMBER} 是不同的。但如果我将 ${BUILD_NUMBER} 附加到 URL,它总是占用存储在 ${build_number} 中的值。
      • 啊好的。在这种情况下,为什么不将参数列表中的“build_number”更改为“build.number”。它仍然具有相同的含义,人们不会将其与其他任何东西混淆;同时,它将与 BUILD_NUMBER 完全不同。我不确定是否不区分大小写(您的服务器或客户端在 Windows 上?),但这将是您最好的出路。您仍然可以使用上面的第 1 点或第 2 点将脚本的内部变量与参数和环境变量匹配。
      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      相关资源
      最近更新 更多