gpt4 book ai didi

if-statement - 有条件的 Jenkins 管道作业

转载 作者:行者123 更新时间:2023-12-04 23:15:22 30 4
gpt4 key购买 nike

我正在创建一个 Jenkins 管道。该管道正在构建三个作业(JobOne、JobTwo、JobThree)。我能够使用以下代码运行该作业。

node {
stage 'Stage 1'
echo 'Hello World 1'
build 'Pipeline-Test/JobOne'

stage 'Stage 2'
echo 'Hello World 2'
build 'Pipeline-Test/JobTwo'

stage 'Stage 3'
echo 'Hello World 3'
build 'Pipeline-Test/JobThree'
}

现在我想在其中加入一些条件。例如,当 JobOne 失败时,作业必须再次重新启动。当JobTwo 过去时,想再次运行job。 JobThree 应在 JobTwo 完成后 10 分钟后运行。我不确定如何在这种情况下制作管道。我是 Jenkins 管道的新手。

我检查了几个 Jenkins WiKi 页面,但找不到正确的方法来实现如果条件满足上述条件。我尝试了下面的代码只是为了检查如何实现“if”条件。但它失败了。
node {
stage 'Stage 1'
echo 'Hello World 1'
build 'Pipeline-Test/JobOne'
post {
always{
build 'Pipeline-Test/JobOne'
}
}

错误:
java.lang.NoSuchMethodError: No such DSL method 'post' found among [archive, bat, build, catchError, checkout, checkpoint, deleteDir, dir, dockerFingerprintFrom, dockerFingerprintRun, echo, error, fileExists, git, input, isUnix, load, mail, node, parallel, properties, publishHTML, pwd, readFile, retry, sh, sleep, sshagent, stage, stash, step, teamconcert, timeout, tool, triggerRemoteJob, unarchive, unstash, waitUntil, withCredentials, withDockerContainer, withDockerRegistry, withDockerServer, withEnv, wrap, writeFile, ws]
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:107)

有人可以指导我完成这个吗?

提前致谢!

最佳答案

Jenkins Pipelines 肯定有学习曲线,所以不要气馁:)

我建议查看 Jenkins' official documentation以及 Pipeline Steps Reference page对于任何开始使用 Jenkins Pipelines 的人。

仅供引用,stage s without a block argument is deprecated ;你应该定义 stage s 如下:

stage('Name of Stage') {
// code
}

管道有一个 retry step您可以使用它来重试 JobOne如果失败则构建。

要在第 2 阶段和第 3 阶段之间等待 10 分钟,您可以使用 sleep step .
if语句就像在 Java 中一样编写,因为 Groovy is actually compiled on a JVM .
if (animal == 'dog' || boolean == true) {

结合这些中的每一个,我认为这是您可以使用的:
node {
stage ('Stage 1') {
echo 'Hello World 1'
retry(1) {
build 'Pipeline-Test/JobOne'
}
}
stage ('Stage 2') {
echo 'Hello World 2'
build 'Pipeline-Test/JobTwo'
}

sleep time:10, unit:"MINUTES"

stage ('Stage 3') {
echo 'Hello World 3'
build 'Pipeline-Test/JobThree'
}
}

关于if-statement - 有条件的 Jenkins 管道作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498678/

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