Job DSL-如何为maven配置postBuildSteps,使其仅在构建成功时启动



作业dsl中是否有方法仅在构建成功时为maven作业配置postBuildSteps。我看到有一个postSuccessfulBuildSteps,它只适用于发布作业。

您必须使用;配置";块以追加";自定义";配置.xml 中的<runPostStepsIfResult>设置

这对我有效:

job(type: Maven) {
    name('MyMavenJob')
    goals('install')
    preBuildSteps {
        shell('#!/bin/bashn' +
              'echo "PRE BUILD SCRIPT"n' +
              'env | sortn' +
              'echo "PRE BUILD END"n')
    }
    
    postBuildSteps {
        shell('#!/bin/bashn' +
              'echo "POST BUILD SCRIPT"n' +
              'env | sortn' +
              '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中手动配置作业,然后在Jenkins母盘上查看该作业的结果config.xml来找到您需要的内容。这通常位于${JENKINS_HOME}/jobs/job-name/config.xml

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

2022更新

现在有一些方法可以在没有configure块复杂性的情况下处理这种情况:

  • postSuccessfulBuildSteps
  • 发布失败的构建步骤

由于API的其他更改,上面的代码似乎不再在job-dsl游乐场中编译。经过以下修改后,它确实编译了:

mavenJob("example") {
    description('MyMavenJob')
    goals('install')
    preBuildSteps {
        shell('#!/bin/bashn' +
              'echo "PRE BUILD SCRIPT"n' +
              'env | sortn' +
              'echo "PRE BUILD END"n')
    }
    postBuildSteps {
        shell('#!/bin/bashn' +
              'echo "POST BUILD SCRIPT"n' +
              'env | sortn' +
              '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')
        }
    }
}

这是有效的:

postBuildSteps("SUCCESS") {
    ...
}

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

相关内容

  • 没有找到相关文章

最新更新