宣言型ジェンキンパイプラインコードの1つのステージで、bashスクリプト(sh '''./a.sh'''
、スクリプト "a.sh"そのスクリプトでは、 "jarVersion"の値が$ {WORKSPACE} /。jarVersion(echo "jarVersion=${jarVersion}" > ${WORKSPACE}/.jarVersion
)に挿入されています。後の段階で、jarVersionの値を取得する必要があります。値を取得するには、load "${WORKSPACE}/.jarVersion"
と${jarVersion}
を使用します。これはパイプラインスクリプトで動作するときに機能します。Jenkinsパイプラインでenv変数を正常にロードしましたが、パイプラインが共有ライブラリとして使用されていませんでした。
ただし、このパイプラインを共有ライブラリ(/vars/testSuite.groovy
に入れる)として設定し、別のパイプラインスクリプトで呼び出します。 var ${jarVersion}
は認識できません。
問題の解決方法を教えてください。一般的な質問は、スクリプトの値をステージAからステージBに転送する方法です。
stage('getJarVersion'){
steps{
script{
load "${WORKSPACE}/.jarVersion"
currentBuild.description = "jarVersion:${jarVersion}"
}
}
}
私はそれがパイプラインスクリプトであるとして、それは仕事ができると予想。
しかし、それは示しています。同じグルーヴィーなファイルの下の段階で
groovy.lang.MissingPropertyException: No such property: jarVersion for class: testSuite
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458)
at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:34)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at testSuite.call(/jenkins/jobs/TestSuite1/builds/11/libs/pipelineUtilities/vars/testSuite.groovy:84)