2017-10-06 72 views
0

我打電話使用如何讓父作業在jenkins中使用curl命令調用時等待子作業的狀態?

curl -u username:password JENKINS_URL/job/job_name/build?token=TOKEN_NAME 

curl -u username:password JENKINS_URL/job/job_name/buildWithParameters?token=TOKEN_NAME 

如果我運行一個循環兩次在父母工作的同時,環子作業,孩子的作業將被調用兩次,但我想父母的工作等到小孩工作正在運行並且每次都給出最終的成功/失敗狀態。 MultiJob插件不允許我運行循環。我父母的工作也應該因失敗而失敗。請給我正確的方法。

回答

0

有對上述工作的兩個可能的解決方案: -
1.流水線插件
2.編寫一個簡單的代碼來輪詢每隔幾秒鐘後,孩子作業狀態。例如

JOB_STATUS_URL_XML="http://jenkins_url/job/job_name/lastBuild/api/xml?depth=1"
result="true"
# Calling a job
curl -u "username:password" "http://jenkins_url/job/job_name/buildWithParameters?token=token_name&parm_1=$value"
# Poll every thirty seconds until the job is finished
while [ "$result" == "true" ]
do
sleep 30
# Grep will return build status (true if build is still running)
result=$(curl --user username:password --silent $JOB_STATUS_URL_XML | grep -oP '(?).*(?=>/building)')
done
# Grep the result status
JOB_STATUS=$(curl --user username:password --silent $JOB_STATUS_URL_XML | grep -oP '(?).*(?=>/result)')
echo $JOB_STATUS