我希望使用Jenkins启动一个构建,并获取已启动构建的版本号。
但是,由于同步方面的考虑,我不需要两个单独的调用(比如:launchJobBuild(); getJobLatestBuildNumber()),而是寻找一个API调用来返回刚才创建的特定buildNumber (例如,在回复内容中)。
这样的API调用是否存在?
发布于 2015-05-28 08:23:41
这个问题已经被问到了:Retrieve id of remotely triggered jenkins job
如果您使用的是v1.598或更高版本,那么reponse将在该位置包含构建ID。查查@morgwai的答案
发布于 2022-06-07 07:07:13
您可以从响应头中获得build,它给出了queueNo,即buildNo+1。
headerName =位置
这里的位置http://:/queue/item/54/是queueItemNo。BuildNo将是队列编号-1= 53
在触发作业时,您将得到此响应。http://:/job//buildWithParameters?repository=&branch=
要想在上面工作,你需要詹金斯·克拉姆。http://13.232.201.103:8080/crumbIssuer/api/json 与postman.一起使用基本身份验证。
对此,您将得到{ "_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":crumbRequestField:“Jenkins”}
在第1点. Jenkins-Crumb:61b6dd4325d000f8b76e9d830fcab88e12d38315e4a7a858c70b838cf9f07d20中使用Jenkins作为标头
response.getHeaders().get("location").get(0).split("/")5-1;= JobNo
发布于 2022-10-22 09:27:27
我为触发作业而开发的Shell脚本,并获得了版本号:
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这就是我如何触发一个作业,并得到版本号。while循环的存在是因为,不会立即生成内部版本号。首先,构建将排队。我们需要从第一个api响应中获取队列位置,然后使用它获得使用then循环的版本号。
根据需要修改第一个API中使用的参数
https://stackoverflow.com/questions/30500422
复制相似问题