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

Jas*_*son 9 build maven jenkins

通常,为了获得最新成功构建的工件,我wget在以下URL上执行:

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

有没有一种方法,我可以做wget的lastSuccessfulBuild,并得到一个build_id像下面?

build_id=`wget http://jenkins.p2pcredit.local/job/job_name/lastSuccessfulBuild`
Run Code Online (Sandbox Code Playgroud)

Vit*_*upt 17

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

$ build_id=`wget -qO- jenkins_url/job/job_name/lastSuccessfulBuild/buildNumber`
$ echo $build_id
131 # that's my build number
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 7

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

curl --user <username>:<tokenOrPassword> https://<url>/job/<job-name>/lastSuccessfulBuild/api/json | jq -r '.displayName'
Run Code Online (Sandbox Code Playgroud)

或者在时髦的

def buildName = Jenkins.instance.getItem('jobName').lastSuccessfulBuild.displayName
Run Code Online (Sandbox Code Playgroud)


net*_*orm 6

我认为最好的解决方案是使用具有零依赖关系的 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

在 Jenkins v2.164.2 上测试


Seb*_*rez 5

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

这使您不仅可以获得最后一次成功的构建,还可以获得 Jenkins 认为相关的其他构建。

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

cat ../../jobs/$JOB_NAME/builds/permalinks
Run Code Online (Sandbox Code Playgroud)

例如,就我而言:

+ cat ../../jobs/$JOB_NAME/builds/permalinks
lastCompletedBuild 56
lastFailedBuild 56
lastStableBuild 51
lastSuccessfulBuild 51
lastUnstableBuild -1
lastUnsuccessfulBuild 56
Run Code Online (Sandbox Code Playgroud)

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

lastSuccesfulBuildId=$(cat ../../jobs/$JOB_NAME/builds/permalinks | grep lastSuccessfulBuild | sed 's/lastSuccessfulBuild //')
Run Code Online (Sandbox Code Playgroud)