web-dev-qa-db-ja.com

JenkinsfileのJenkinsグローバル環境変数

Jenkinsfileでグローバル環境変数を呼び出すにはどうすればよいですか?
たとえば、変数がある場合-

 name:credentialsId 
 value:xxxx-xxxx-xxxxx-xxxxxxxxx

Groovyスクリプトでどのように使用しますか?

${credentialsId}を試しましたが、うまくいきませんでした。エラーが発生するだけです:

Java.lang.NoSuchMethodError: No such DSL method '$' found among steps [ArtifactoryGradleBuild, ........
16
ezlee

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
    }
}
37
VonC

スクリプトパイプライン名前がわかっている環境変数を読み取るには、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}")
}
2
Ed Randall

Groovyスコープでenvを参照する場合は、env.VARIABLE_NAMEを使用するだけです。たとえば、アップストリームジョブのBUILD_NUMBERをトリガーされたジョブに渡すには:

stage ('Starting job') {
    build job: 'TriggerTest', parameters: [
        [$class: 'StringParameterValue', name: 'upstream_build_number', value: env.BUILD_NUMBER]
    ]
}
2