【问题标题】:Jenkins pipeline plugin: set the build descriptionJenkins 管道插件:设置构建描述
【发布时间】:2016-07-29 19:29:03
【问题描述】:

我正在尝试用一个使用 Jenkins 管道插件并从项目存储库加载 Jenkinsfile 的新作业替换我们当前的构建管道,该管道目前使用老式 Jenkins 作业一起破解。

旧作业所做的一件事是使用Description setter plugin 将构建描述设置为包含 Mercurial 哈希、用户名和当前版本,以便轻松找到构建。

有没有办法使用 Jenkins 管道插件复制/模拟这种行为?

【问题讨论】:

标签: jenkins jenkins-pipeline jenkins-workflow


【解决方案1】:

@jjst 的答案描述了如何在“脚本化管道”中设置构建描述。在声明式管道中,您可以执行相同的操作,但需要将其放在 script { } 块中。这里有一个来自comments on a Cloudbees article的完整工作示例:

pipeline {
    agent any
    stages {
        stage("1st stage") {
            steps {
                script {
                    currentBuild.displayName = "My custom build name"
                    currentBuild.description = "My custom build description"
                }
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    我不确定它的年龄,但我最近发现了buildDescription 插件,它为您提供了一种设置构建描述的声明性方法。 安装后,就很简单了:

    steps {
      buildDescription 'my build'
    }
    

    控制台将显示一个步骤输出: New run description is 'my build'

    【讨论】:

      【解决方案3】:

      jjst 写他的答案时可能不是这种情况,但现在使用最新的 jenkins 和插件,您可以在顶部的主管道之外设置它。这意味着您不必嵌入脚本设置和特殊步骤等,例如

      currentBuild.description = "my new description"
      pipeline {...
      

      currentBuild.description = """
      blah
      blah
      blah
      """
      pipeline {
      

      【讨论】:

      • 这是否也适用于currentBuild.displayName?我们正在使用脚本化的管道,所以这不适用于我们,我无法对其进行测试。我希望其他人想知道。
      • 您能否具体说明您发帖时的“最新詹金斯”版本是什么?由于我不想进入的原因,我们被困在 2.138.3 上。
      • 当时我使用的是他们的 ubuntu 存储库中的当前版本,因为如果我们发现问题,我们倾向于自动升级和回滚(小团队分散到瘦身),所以我会检查发布日期。
      • 在管道外设置 description/displayName 时,您甚至可以使用参数和全局环境变量。但它似乎不适用于管道“环境”块中定义的变量。
      【解决方案4】:

      刚刚想通了。管道作业公开了一个具有可写属性的 currentBuild 全局变量。可以通过以下方式设置描述:

      currentBuild.description = "my new description"
      

      管道脚本中的任何位置。更多信息在这个DZone tutorial

      【讨论】:

      • 要在声明式管道中执行此操作,请使用脚本 { ... } 块 jenkins.io/doc/book/pipeline/syntax/#script
      • @jjst 你知道如何在管道中设置“职位描述”吗?
      • 这不一定正确,因为这不是在声明式管道中执行此操作的方法。使用脚本标签基本上是逃避管道。
      • 我试图更新内部版本号并偶然发现了您关于更新描述的帖子。 Wish 之前看过你的帖子,尝试了很多东西,从覆盖环境变量 BUILD_DISPLAY_NAME 到使用 withEnv。我能够更新值甚至打印新值,但是在 Jenkins UI 本身上,内部版本号没有得到更新。尝试了你的解决方案,它就像一个魅力!
      猜你喜欢
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      相关资源
      最近更新 更多