내 선언적인 젠킨스 파이프 라인 코드의 한 단계에서 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)