我有一個Jenkins管道作業,我將一些構建變量作爲輸入,並且如果變量未被用戶傳遞,我執行一個腳本並獲取這些變量的值。之後我必須使用這些變量的值來觸發其他工作。在Jenkins管道中更改shell執行程序中的groovy變量
所以我的代碼看起來是這樣的:
node {
withCredentials([[$class: 'StringBinding', credentialsId: 'DOCKER_HOST', variable: 'DOCKER_HOST']]) {
env.T_RELEASE_VERSION = T_RELEASE_VERSION
env.C_RELEASE_VERSION = C_RELEASE_VERSION
env.N_RELEASE_VERSION = N_RELEASE_VERSION
env.F_RELEASE_VERSION = F_RELEASE_VERSION
....
stage concurrency: 1, name: 'consul-get-version'
sh '''
if [ -z ${T_RELEASE_VERSION} ]
then
export T_RELEASE_VERSION=$(ruby common/consul/services_prod_version.rb prod_t_release_version)
aws ecr get-login --region us-east-1
aws ecr list-images --repository-name t-server | grep ${T_RELEASE_VERSION}
else
aws ecr get-login --region us-east-1
aws ecr list-images --repository-name t-server | grep ${T_RELEASE_VERSION}
fi
.......
't-integ-pipeline' : {
build job: 't-integ-pipeline', parameters: [[$class: 'StringParameterValue', name: 'RELEASE_VERSION', value: T_RELEASE_VERSION],
[$class: 'BooleanParameterValue', name: 'FASTFORWARD_TO_DEPLOY', value: true]]
},
......
的問題是,當我觸發空T_RELEASE_VERSION的主要工作,孩子搭建工作T-INTEG流水線被觸發用的空值RELEASE_VERSION參數。
如何更改shell執行程序中的groovy參數,然後使用修改後的值在groovy執行程序中再次訪問它?
我利用你的建議,並與類似想出了這個:sh'ruby common/consul/services_prod_version.rb prod_n_release_version> status' N_RELEASE_VERSION_NEW = readFile('status')。trim() sh'ruby common/consul/services_prod_version.rb prod_q_release_version>狀態' Q_RELEASE_VERSION_NEW = readFile('status')。trim() –
好極了,爲了提高可讀性,添加了解決問題的方法 – MaTePe