I have this code:
#!groovy
pipeline {
agent any
environment {
def SUPER_VAR = sh(returnStdout: true, script: """openssl rand -base64 12""").trim()
SUPER_VALUE = sh(returnStdout: true, script: """echo ${SUPER_VAR}""").trim()
SUPER_DUPER_VALUE = sh(returnStdout: true, script: """echo ${SUPER_VAR}""").trim()
}
stages {
stage("initialise") {
steps {
script {
sh "echo SUPER_VAR ${SUB_VAR}"
sh "echo SUPER_VALUE ${SUPER_VALUE}"
sh "echo SUPER_DUPER_VALUE ${SUPER_DUPER_VALUE}"
sh "env"
}
}
}
}
}
My desired output is, where each time I call / create a new var, the value is the same:
[Pipeline] { (initialise)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ echo SUPER_VAR
SUPER_VAR
[Pipeline] sh
+ echo SUPER_VALUE FSDYe8VNL3VTvASj
SUPER_VALUE FSDYe8VNL3VTvASj
[Pipeline] sh
+ echo SUPER_DUPER_VALUE FSDYe8VNL3VTvASj
SUPER_DUPER_VALUE FSDYe8VNL3VTvASj
[Pipeline] sh
What happens in jenkins is this:
[Pipeline] { (initialise)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ echo SUPER_VAR
SUPER_VAR
[Pipeline] sh
+ echo SUPER_VALUE FSDYe8VNL3VTvASj
SUPER_VALUE FSDYe8VNL3VTvASj
[Pipeline] sh
+ echo SUPER_DUPER_VALUE NSmVwW9xz6IPG5AO
SUPER_DUPER_VALUE NSmVwW9xz6IPG5AO
[Pipeline] sh
Every time I created a var
based on SUPER_VAR
it seems the script is ran again, and I get different output.
How does one register output of script in to a global var, so it can later be used to create new vars globally?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…