Jenkinsfile:在 Jenkinsfile 中设置/更新一个全局变量并在构建中使用它

Posted

技术标签:

【中文标题】Jenkinsfile:在 Jenkinsfile 中设置/更新一个全局变量并在构建中使用它【英文标题】:Jenkinsfile: Set/Update a global variable in Jenkinsfile and use it in build 【发布时间】:2018-03-20 04:14:43 【问题描述】:

我的 Jenkins 流水线有 4 个阶段

1. Build> 2. Binaries Deployment to server > 3. Automated testing with the third party application > 4. Upload Binaries to JFrog

在第三阶段,我无法控制查询它的完成或失败,我知道测试最多需要 3 小时才能完成。因此,对于下一个构建,我需要检查第一个构建是否已完成测试,否则会创建不必要的二进制文件。

现在我已经在 J​​enkins Configure 中配置了一个名为 TimeStamp 的全局变量。变量 TimeStamp 将在构建之间使用。因此,对于第三阶段的第一次构建,它将被设置为当前时间戳,并在触发下一次构建时在第三阶段将当前构建时间戳与之前构建时间戳进行比较,如果超过 3 小时执行自动测试阶段否则停止构建。

如何在触发我的 Jenkins 文件时使用我将在构建中设置并在其他构建中使用它的 env 变量?

【问题讨论】:

您能分享一下您用于测试的第三方应用程序吗?如果由我决定,没有 API 来查询测试是不行的。 @pat 它的二维码 【参考方案1】:

以下是您可以尝试的一些选项:

    归档一个构建中的工件并在将来检索它 构建

    Store 属性文件中的时间戳并将其从构建 1 归档 Retrieve 它在下一个版本中

    如果您使用的是版本控制工具,请提交回带有时间戳的属性文件。在将来的构建中检索它以供参考

【讨论】:

以上是关于Jenkinsfile:在 Jenkinsfile 中设置/更新一个全局变量并在构建中使用它的主要内容,如果未能解决你的问题,请参考以下文章

Jenkinsfile之语法

在 Jenkins Pipeline/Jenkinsfile 中获取 git 分支名称

在 Jenkinsfile 中构建失败

Jenkinsfile。Jenkinsfile: "RejectedAccessException: No such field found" in catch block: No

Jenkinsfile的pipeline配置

如何在本地测试对 Jenkinsfile 所做的更改?