JENKINS_EMAIL=<Email>
JENKINS_TOKEN=<API Key>
JENKINS_URL=<Jenkins Server URL>
JENKINS_JOB=<JOB>
# Trigger Job and get queue location
location=$(curl -X POST -s -I -u $JENKINS_EMAIL:$JENKINS_TOKEN "${JENKINS_URL}${JENKINS_JOB}/buildWithParameters?pass=ok" | grep location | awk '{ print $NF }')
location2=${location//[$'\t\r\n']}
# Wait till build number is generated
while true ; do
buildnumber=$(curl -X GET -s -u $JENKINS_EMAIL:$JENKINS_TOKEN "${location2}api/json" | jq '.executable.number')
if [[ $buildnumber != "null" ]]; then
echo "Build Started. Build number is : "$buildnumber"
break
else
echo "Still in Queue"
sleep 1
fi
done
3条答案
按热度按时间dzhpxtsq1#
虽然晚了,张贴一个答案,这样它可以受益于任何其他搜索者:
我们可以使用以下API获取最新/当前版本号:
这将提供当前正在执行的或上次成功的生成。
示例:
4uqofj5v2#
这就是我的做法,首先用rest api调用触发作业。从这个调用的响应中,得到队列位置。然后使用这个队列位置,获取build号。build号不会立即生成,这就是while循环的原因。
6yjfywim3#
Jenkins - How to access BUILD_NUMBER environment variable
请使用${BUILD_NUMBER}获取当前版本。
在栈溢出中已经有了广泛的答案。请在提出问题之前浏览一下。