如何在Jenkins中检索最新成功构建的build_id?

时间:2015-07-20 03:52:57

标签: maven jenkins build

通常,要获取最新成功构建的工件,我会在以下网址上执行wget

http://jenkins.com/job/job_name/lastSuccessfulBuild/artifact/artifact1/jenkins.txt

有没有方法,我可以在wgetlastSuccessfulBuild获得build_id,如下所示?

build_id=`wget http://jenkins.p2pcredit.local/job/job_name/lastSuccessfulBuild`

6 个答案:

答案 0 :(得分:14)

是的,有一种方法,它非常简单:

$ build_id=`wget -qO- jenkins_url/job/job_name/lastSuccessfulBuild/buildNumber`
$ echo $build_id
131 # that's my build number

答案 1 :(得分:1)

我发现Jenkins工作区中的查询永久链接文件非常有用。

这不仅使您能够获得上一次成功的构建,而且还可以获取Jenkins认为相关的其他构建。

您可以在“执行外壳”面板的“构建”部分中看到此行的内容:

cat ../../jobs/$JOB_NAME/builds/permalinks

例如,在我的情况下:

+ cat ../../jobs/$JOB_NAME/builds/permalinks
lastCompletedBuild 56
lastFailedBuild 56
lastStableBuild 51
lastSuccessfulBuild 51
lastUnstableBuild -1
lastUnsuccessfulBuild 56

从那里,您想解析上一次成功构建的数目,或永久链接提供的任何其他数目,您可以运行以下命令:

lastSuccesfulBuildId=$(cat ../../jobs/$JOB_NAME/builds/permalinks | grep lastSuccessfulBuild | sed 's/lastSuccessfulBuild //')

答案 2 :(得分:0)

我认为最好的解决方案是使用零依赖的Groovy。

node {
    script{
        def lastSuccessfulBuildID = 0
        def build = currentBuild.previousBuild
        while (build != null) {
            if (build.result == "SUCCESS")
            {
                lastSuccessfulBuildID = build.id as Integer
                break
            }
            build = build.previousBuild
        }
        println lastSuccessfulBuildID
    }
}

您无需指定jenkins_url或job_name等即可获取上一次成功的构建ID。 然后,您可以轻松地在存储库中的所有Jenkinsfile中使用它,而无需进行无用的配置。

在Jenkins v2.164.2上测试

答案 3 :(得分:0)

要使用curl获取最后成功的内部版本号:

curl --user用户名:密码https://url/job/jobName/api/xml?xpath=/ * / lastStableBuild / number

答案 4 :(得分:0)

如果您想要上一个成功作业的DisplayName而不是内部版本号:

curl --user <username>:<tokenOrPassword> https://<url>/job/<job-name>/lastSuccessfulBuild/api/json | jq -r '.displayName'

或者很时髦

def buildName = Jenkins.instance.getItem('jobName').lastSuccessfulBuild.displayName

答案 5 :(得分:0)

要获取作业内部版本号,只需执行以下操作:

def build_Number = Jenkins.instance.getItem('JobName').lastSuccessfulBuild.number