JenkinsREST API:获取刚开始的作业的内部版本号

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

我通过发出此请求开始工作

/POST /jenkins/job/jobName/build

但它什么也不返回。我想得到刚开始的内部版本号。

dzhpxtsq

dzhpxtsq1#

虽然晚了,张贴一个答案,这样它可以受益于任何其他搜索者:
我们可以使用以下API获取最新/当前版本号:

<JENKINS_URI>/job/<JOB_NAME>/lastBuild/buildNumber

这将提供当前正在执行的或上次成功的生成。
示例:

curl -X GET <JENKINS_URI>/<JOB_NAME>/lastBuild/buildNumber --user <user>:<key>
o/p : 20
4uqofj5v

4uqofj5v2#

这就是我的做法,首先用rest api调用触发作业。从这个调用的响应中,得到队列位置。然后使用这个队列位置,获取build号。build号不会立即生成,这就是while循环的原因。

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
6yjfywim

6yjfywim3#

Jenkins - How to access BUILD_NUMBER environment variable
请使用${BUILD_NUMBER}获取当前版本。
在栈溢出中已经有了广泛的答案。请在提出问题之前浏览一下。

相关问题