gpt4 book ai didi

Jenkins Multijob 最终结果

转载 作者:行者123 更新时间:2023-12-02 19:08:26 32 4
gpt4 key购买 nike

我有多个作业结构:

Master MultiJob Project (Job)
|----- Phase 1
|------> JOB A
|------> JOB D
|----- Phase 2
|------> JOB B
|------> JOB D
|----- Phase 2
|------> JOB C

作业 D 总是失败,但对于这个项目来说还可以。如何从最终结果中排除结果作业 D? (因为所有其他工作都是成功的,但最终结果是FAILED)

最佳答案

无论JOB D执行结果如何,您都希望Master MultiJob Project (Job)成功。但是,JOB AJOB BJOB C 应该会成功。

您可以使用 Groovy Postbuild Plugin 来成功完成Master Multijob Project (Job) .

在 Jenkins 中安装此插件后,您将在 Post-build Actions 部分中看到 Groovy Postbuild 步骤。选择 Groovy Postbuild 步骤,它将提供一个选项来添加 Groovy 脚本来操纵您的作业行为。

在那里添加以下脚本:

if( manager.build.@result == hudson.model.Result.FAILURE){
errpattern = ~/[FAILURE].*/;
manager.build.logFile.eachLine{ line ->
errmatcher=errpattern.matcher(line)
if (errmatcher.find()) {
manager.build.@result = hudson.model.Result.SUCCESS
}
}
}

上面的脚本将执行的操作是,如果父作业失败,则将其更改为成功。但是,这里的问题是,对于您阶段中的任何子作业失败,它都会将构建状态更改为成功。

您只想忽略JOB D 的 FAILURE 状态,而不是其他作业。因此,我们能做的就是确定JOB AJOB BJOB C的执行结果。如果其中任何一个失败,我们可以阻止 Groovy 脚本将父作业的构建状态更改为成功。

现在,确定 JOB AJOB BJOB C 的构建结果

我们可以使用以下内容:

JOBA_BUILD_STATUS=$(curl --silent "http://<jenkins_URL>/job/JOBA/$BUILD_ID/api/json" | jq -r '.result')

JOBB_BUILD_STATUS=$(curl --silent "http://<jenkins_URL>/job/JOBB/$BUILD_ID/api/json" | jq -r '.result')

JOBC_BUILD_STATUS=$(curl --silent "http://<jenkins_URL>/job/JOBC/$BUILD_ID/api/json" | jq -r '.result')

在多作业配置的 Build 部分中,在所有阶段之后添加 Execute shell 步骤并向其中添加上述脚本。

现在,让我们调整 groovy 脚本以忽略 JOB D 的构建结果,并考虑 JOB AJOB B 的构建结果和作业 C

if((manager.build.@result == hudson.model.Result.FAILURE) && ("SUCCESS".equals(manager.build.buildVariables.get("JOBA_BUILD_STATUS"))) && ("SUCCESS".equals(manager.build.buildVariables.get("JOBB_BUILD_STATUS"))) && ("SUCCESS".equals(manager.build.buildVariables.get("JOBC_BUILD_STATUS")))){
errpattern = ~/[FAILURE].*/;
manager.build.logFile.eachLine{ line ->
errmatcher=errpattern.matcher(line)
if (errmatcher.find()) {
manager.build.@result = hudson.model.Result.SUCCESS
}
}
}

现在,它将忽略JOB D的构建结果,然后检查JOB A, B & C的构建结果是否成功。如果它们成功,那么它会将您的 Multijob 的构建结果更改为 SUCCESS。

关于Jenkins Multijob 最终结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45934504/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com