我有一個curl語句,我在Jenkins Execute Shell Script插件的shell腳本中運行,它將返回一個json對象:{「request_id」:「52d4520c09228dc810000096」}。Jenkins Shell腳本變量分配在分析curl響應時失敗
Curl語句運行正常,並返回正確的響應json對象。
我需要解析這個對象並獲取值作爲下一個Jenkins Job的參數。目前使用tr和cut來解析json響應。
當我嘗試此代碼失敗:
curl -s -X POST -H "Accept:application/json" -d "{my parameters}" http://my_http_post_url | tr -d '{}"' | cut -f 2 -d ':' - > ${response_id};
與失敗:
cannot create : Directory nonexistent
+ cut -f 2 -d : -
+ curl -s -X POST -H Accept:application/json -d {my params} http://my_http_post_url
tr: write error: Broken pipe
Build step 'Execute shell' marked build as failure
也試過這樣:
${response_id}=$(curl -s -X POST -H "Accept:application/json" -d "{my parameters}" http://my_http_post_url | tr -d '{}"' | cut -f 2 -d ':');
無法與(注:52d4520c09228dc810000096是正確的響應ID):
+ cut -f 2 -d :
+ curl -s -X POST -H Accept:application/json -d {my params} http://my_http_post_url
+ tr -d {}"
+ = 52d4520c09228dc810000096
/tmp/hudson3217430586060280102.sh: 2: /tmp/hudson3217430586060280102.sh: = 52d4520c09228dc810000096: not found
Build step 'Execute shell' marked build as failure
所以我得到了環境注入插件安裝,所以我可以保存在當前作業範圍內的shell腳本中的值,並以這種方式保存,以便我可以將其值傳遞給鏈上的下一個作業作爲參數:https://wiki.jenkins- ci.org/display/JENKINS/EnvInject+Plugin。 – Ubik
request_id = $(curl -s -X POST -H「Accept:application/json」-d {myparams} http:// myurl | jq -r .request_id); echo id = $ request_id> propsfile; 回覆從廚房收到的令牌:$ propsfile; – Ubik
據我所知,EnvInject插件不能用於將一個變量從一個工作傳遞給另一個工作。 https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin似乎是這份工作的正確工具。將request_id寫入屬性文件,並將該插件配置爲將屬性文件中的變量作爲參數傳遞給觸發的作業(當然,必須將其配置爲期望這些參數)。 – sti