Jenkins API -在一个原子操作中启动构建并获取构建号

qeeaahzv  于 2022-11-02  发布在  Jenkins
关注(0)|答案(3)|浏览(455)

我想使用Jenkins API启动一个构建版本,并获取已启动构建版本的构建版本号。
但是,出于同步方面的考虑,我不希望进行两次单独的通话(例如:launchJobBuild(); getJobLatestBuildNumber()),但我寻找的是一个API调用,该调用获取 return 刚刚创建的特定buildNumber(例如,在回复内容中)
是否存在这样的API调用?

mmvthczy

mmvthczy1#

这个问题已经问过了:Retrieve id of remotely triggered jenkins job
如果您的版本是v1.598或更高版本,则响应会在Location中包含构建ID。

z9ju0rcb

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
如果您有任何问题,请与我们联系。如果您有问题,请与我们联系。

6ioyuze2

6ioyuze23#

我开发的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响应中获得队列位置,然后使用它通过while循环获得内部版本号。
根据需要修改第一个API中使用的参数

相关问题