2017-10-06 21 views
0

私は二回ループを実行している場合は、子ジョブが2回呼び出されますが、私はしたい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 

を使用して、親ジョブのwhileループで子ジョブを呼び出しています親ジョブは子ジョブが実行されるまで待機し、毎回最終的な成功/失敗のステータスを返します。 MultiJob Pluginは私がループを通過することを許しません。私の親の仕事はまた、子供の失敗で失敗するはずです。私に正しいアプローチを提案してください。

答えて

0

上記の仕事のための2つの解決策があります: -
は、パイプラインプラグインごとに数秒後に子ジョブのステータスをポーリングするための簡単なコードを書く
2. 1. 。例えば

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
関連する問題