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条答案
按热度按时间mmvthczy1#
这个问题已经问过了:Retrieve id of remotely triggered jenkins job
如果您的版本是v1.598或更高版本,则响应会在Location中包含构建ID。
z9ju0rcb2#
您可以从响应头中获取构建号,它给出的queueNo为buildNo+1。
headerName =位置
位置→ http://:/queue/item/54/此处54是队列项编号。构建编号将是队列项编号-1 = 53
您将在触发作业时获得此响应。http://:/job/<job_name>/buildWithParameters?存储库=<repo_name>&分支=<branch_name>
要使上面的URL正常工作,您需要jenkins-crumb. http://13.232.201.103:8080/crumbIssuer/api/json使用基本身份验证和postman。
作为对此的响应,u将得到{“_class”:“哈德逊.安全性. csf.默认crumb发行者”,“crumb”:“搜索请求字段”:“Jenkins-克鲁姆”}
在第1点中使用Jenkins面包屑作为标题。Jenkins面包屑:61 b6 dd 4325 d 000 f8 b76 e9 d830 fcab 88 e12 d38315 e4 a7 a858 c70 b838 cf 9 f07 d20
如果您有任何问题,请与我们联系。如果您有问题,请与我们联系。
6ioyuze23#
我开发的Shell脚本用于触发作业,并获取内部版本号:
这就是我如何触发一个作业,并获得内部版本号。while循环存在的原因是,内部版本号不会立即生成。首先,内部版本将被排队。我们需要从第一个api响应中获得队列位置,然后使用它通过while循环获得内部版本号。
根据需要修改第一个API中使用的参数