Jenkinsfileでグローバル環境変数を呼び出すにはどうすればよいですか?
たとえば、変数がある場合-
name:credentialsId
value:xxxx-xxxx-xxxxx-xxxxxxxxx
Groovyスクリプトでどのように使用しますか?
${credentialsId}
を試しましたが、うまくいきませんでした。エラーが発生するだけです:
Java.lang.NoSuchMethodError: No such DSL method '$' found among steps [ArtifactoryGradleBuild, ........
Jenkinsfileには、「 Working with the Environment 」が記載されています。
Jenkins Pipeline内からアクセス可能な環境変数の完全なリストは、localhost:8080/pipeline-syntax/globals#envで文書化されています。
構文は次のように${env.xxx}
です。
node {
echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
}
「 環境の管理 」も参照してください。
Jenkinsfileにグローバル変数を渡すにはどうすればよいですか?
グローバル変数と言うと、
Jenkins -> Manage Jenkins -> Configure System -> Global properties -> Environment variables
「 環境変数の設定 」を参照してください
Jenkins Pipeline内で環境変数を設定するには、
withEnv
ステップを使用します。これにより、パイプラインスクリプトの特定のブロックの指定された環境変数をオーバーライドできます。次に例を示します。Jenkinsfile(パイプラインスクリプト)
node {
/* .. snip .. */
withEnv(["NAME=value"]) {
... your job
}
}
スクリプトパイプライン名前がわかっている環境変数を読み取るには、env.NAME
を使用します
実行時まで名前がわからない環境変数を読み取るには、env.getProperty(name)
を使用します。
たとえば、YAML構成ファイルの値は環境変数名を表します。
config.yaml(ワークスペース内)
myconfig:
key: JOB_DISPLAY_URL
Jenkinsfile
node {
println("Running job ${env.JOB_NAME}")
def config = readYaml(file:'config.yaml')
def value = env.getProperty(config.myconfig.key)
println("Value of property ${config.myconfig.key} is ${value}")
}
Groovyスコープでenvを参照する場合は、env.VARIABLE_NAMEを使用するだけです。たとえば、アップストリームジョブのBUILD_NUMBERをトリガーされたジョブに渡すには:
stage ('Starting job') {
build job: 'TriggerTest', parameters: [
[$class: 'StringParameterValue', name: 'upstream_build_number', value: env.BUILD_NUMBER]
]
}