0

我需要設置一個全局變量,它的值是build_ {BUILD_NUMBER}(jenkins全局變量),它是動態的。我怎樣才能在jenkins全球屬性中設置? 它如何識別我所指的內部編號?如何在jenkins中將動態變量設置爲全局變量?

+0

我認爲頂級變量是全局變量。你也可以使用一個環境變量。 – Shiping

+0

好吧,但我怎樣才能將全局變量傳遞給環境變量? –

回答

1

使用聲明性管道,可以設置基於該其他環境變量(BUILD_NUMBER)像這樣的環境變量:

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}" 
     } 
    } 
    } 
} 

產生輸出這樣的:

[Pipeline] echo 
MY_BUILD_IDENTIFIER: build_153 
+0

是否可以通過jenkins中的其他作業訪問MY_BUILD_IDENTIFIER,而無需在作業中定義它? –

+0

絕對不是。 :)我想你需要編寫一個插件來完成,如果這就是你要做的。 – burnettk

0

下面是一個例子腳本,如何更改全局環境變量:

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") 
} 

參考: https://gist.github.com/johnyzed/2af71090419af2b20c5a

+0

這給了我'java.io.NotSerializableException:hudson.util.DescribableList'(Jenkins 2.19) – Nick