Vineesha.C
Vineesha.C

Reputation: 343

How to set a dynamic variable as global variable in jenkins?

I need to set a global variable with the value build_{BUILD_NUMBER}(jenkins global variable), which is dynamic. How can I set this in jenkins global properties? How can it recognize the build number I'm referring to ?

Upvotes: 1

Views: 7663

Answers (2)

haschibaschi
haschibaschi

Reputation: 2792

Here is an example script, how to alter global environment variables:

nodes = Jenkins.instance.globalNodeProperties
nodes.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)

if ( nodes.size() != 1 ) {
  println("error: unexpected number of environment variable containers: ${nodes.size()}, expected: 1")
} else {
  envVars = nodes[0].envVars
  envVars[args[0]] = args[1]
  Jenkins.instance.save()
  println("okay")
}

reference: https://gist.github.com/johnyzed/2af71090419af2b20c5a

Upvotes: 1

burnettk
burnettk

Reputation: 14047

using a declarative pipeline, you can set an environment variable based on this other environment variable (BUILD_NUMBER) like this:

pipeline {
  agent { label 'docker' }
  environment {
    MY_BUILD_IDENTIFIER = "build_${env.BUILD_NUMBER}"
  }
  stages {
    stage('hot_stage') {
      steps {
        echo "MY_BUILD_IDENTIFIER: ${env.MY_BUILD_IDENTIFIER}"
      }
    }
  }
}

produces output like this:

[Pipeline] echo
MY_BUILD_IDENTIFIER: build_153

Upvotes: 1

Related Questions