gpt4 book ai didi

jenkins - Job DSL - 如何配置 postBuildSteps 以使 Maven 仅在构建成功时才开始

转载 作者:行者123 更新时间:2023-12-02 12:12:29 24 4
gpt4 key购买 nike

作业 dsl 中是否有办法仅在构建成功时才为 Maven 作业配置 postBuildSteps。我看到有 postSuccessfulBuildSteps 仅适用于发布作业。

最佳答案

您必须使用“配置” block 来附加“自定义”<runPostStepsIfResult>设置到 config.xml

这对我有用:

job(type: Maven) {
name('MyMavenJob')
goals('install')

preBuildSteps {
shell('#!/bin/bash\n' +
'echo "PRE BUILD SCRIPT"\n' +
'env | sort\n' +
'echo "PRE BUILD END"\n')
}

postBuildSteps {
shell('#!/bin/bash\n' +
'echo "POST BUILD SCRIPT"\n' +
'env | sort\n' +
'echo "POST BUILD END"\n')
}

// Append <runPostStepsIfResult> at the end of the xml
// (which will be just after the closing </postbuilders> tag)
// "it" is a groovy.util.Node representing the
// root <project> element of config.xml.
configure { it <<
'runPostStepsIfResult' {
name('SUCCESS')
}
}
}

一般来说,如果您需要添加 Job DSL 不支持的 XML,您可以通过在 Jenkins 中手动配置作业来找出您需要的内容,然后查看结果 config.xml用于 Jenkins 主磁盘上的该作业。这通常位于 ${JENKINS_HOME}/jobs/job-name/config.xml

job-dsl Playground http://job-dsl.herokuapp.com/是一个测试更改的有用地方,直到您获得与 Jenkins 在 job/job-name/config.xml 文件中手动设置时所做的匹配的内容为止。

2022 年更新

现在有一些方法可以处理这种情况,而不需要 configure 的复杂性。 block :

上面的代码似乎不再在 job-dsl playground 中编译。由于其他 API 更改。然而,通过以下修改,它确实可以编译:

mavenJob("example") {
description('MyMavenJob')
goals('install')

preBuildSteps {
shell('#!/bin/bash\n' +
'echo "PRE BUILD SCRIPT"\n' +
'env | sort\n' +
'echo "PRE BUILD END"\n')
}

postBuildSteps {
shell('#!/bin/bash\n' +
'echo "POST BUILD SCRIPT"\n' +
'env | sort\n' +
'echo "POST BUILD END"\n')
}

// Append <runPostStepsIfResult> at the end of the xml
// (which will be just after the closing </postbuilders> tag)
// "it" is a groovy.util.Node representing the
// root <project> element of config.xml.
configure { it <<
'runPostStepsIfResult' {
name('SUCCESS')
}
}
}

关于jenkins - Job DSL - 如何配置 postBuildSteps 以使 Maven 仅在构建成功时才开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26040974/

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