Jenkins pipeline plugin: set the build description

JenkinsJenkins PipelineJenkins Workflow

Jenkins Problem Overview


I'm trying to replace our current build pipeline, currently hacked together using old-school Jenkins jobs, with a new job that uses the Jenkins pipeline plugin, and loads a Jenkinsfile from the project repository.

One thing that the legacy job did was set the build description to include the Mercurial hash, username and current version using the Description setter plugin, so that builds are easy to find.

Is there a way to replicate/emulate this behaviour with the Jenkins pipeline plugin?

Jenkins Solutions


Solution 1 - Jenkins

Just figured it out. The pipeline job exposes a currentBuild global variable with writable properties. Setting the description can be done with:

currentBuild.description = "my new description"

anywhere in the pipeline script. More information in this DZone tutorial.

Solution 2 - Jenkins

The answer from @jjst describes how to set the build description in "scripted pipelines". In declarative pipelines you can do the same, but need to place it inside a script { } block. Here a complete working example taken from 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"
                }
            }
        }
    }
}

Solution 3 - Jenkins

This may not have been the case when jjst wrote his answer but now with the latest jenkins and plugins you can set this outside the main pipeline at the top. This means you dont have to embed script setting and have special steps etc eg

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

or

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

Solution 4 - Jenkins

I'm not sure how old it is, but I recently discovered the buildDescription plugin that gives you a declarative method to set the build description. Once installed, it's as easy as:

steps {
  buildDescription 'my build'
}

The console will show a step output: New run description is 'my build'

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjjstView Question on Stackoverflow
Solution 1 - JenkinsjjstView Answer on Stackoverflow
Solution 2 - Jenkinst0r0XView Answer on Stackoverflow
Solution 3 - JenkinskradView Answer on Stackoverflow
Solution 4 - JenkinsMax CasconeView Answer on Stackoverflow