2017-10-06 1 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 

를 사용하여 상위 작업의 while 루프에서 하위 작업을 호출하고, 자식 작업이 두 번 호출하지만 내가 원하는 것 부모 작업은 자식 작업이 실행될 때까지 대기하고 매회 최종 성공/실패 상태를 제공합니다. MultiJob Plugin은 루프를 통과하지 못하게합니다. 우리 부모님의 직업도 아이를 잃을 때 실패합니다. 나에게 올바른 접근 방식을 제안 해주세요. 마다 몇 초 후에 자식 작업 상태를 올릴 수
1. 파이프 라인 플러그인
2. 쓰기 간단한 코드 : -

답변

0

는 위의 작업이 개 가능한 솔루션이 있습니다. 예 :

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