4

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

4

3 回答 3

4

您必须使用“配置”块将“自定义”<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.xmlJenkins-master 磁盘上查看该作业的结果。这通常位于${JENKINS_HOME}/jobs/job-name/config.xml

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

2022 更新

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

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

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')
        }
    }
}
于 2015-02-25T13:32:41.527 回答
1

这有效:

postBuildSteps("SUCCESS") {
    ...
}
于 2017-07-19T09:23:16.880 回答
0

你不能使用条件步骤插件(https://wiki.jenkins-ci.org/display/JENKINS/Conditional+BuildStep+Plugin)吗?

于 2014-11-15T15:05:11.990 回答