jenkins - 可以测试作业 DSL 脚本吗

标签 jenkins jenkins-plugins jenkins-job-dsl

理想情况下,我希望能够通过某种单元测试调用脚本,然后再在 Jenkins 上执行它。

除了让 jenkins 运行它之外,还有什么方法可以测试 Job DSL 脚本?

最佳答案

除了 job-dsl-gradle-example 中的例子,您还可以更进一步,为单个文件或作业编写测试。例如,假设您有一个位于 jobs/deployJob.groovy 中的作业配置文件

import javaposse.jobdsl.dsl.DslScriptLoader
import javaposse.jobdsl.dsl.MemoryJobManagement
import javaposse.jobdsl.dsl.ScriptRequest
import spock.lang.Specification

class TestDeployJobs extends Specification {

    def 'test basic job configuration'() {
        given:
        URL scriptURL = new File('jobs').toURI().toURL()
        ScriptRequest scriptRequest = new ScriptRequest('deployJob.groovy', null, scriptURL)
        MemoryJobManagement jobManagement = new MemoryJobManagement()

        when:
        DslScriptLoader.runDslEngine(scriptRequest, jobManagement)

        then:
        jobManagement.savedConfigs.each { String name, String xml ->
            with(new XmlParser().parse(new StringReader(xml))) {
                // Make sure jobs only run manually
                triggers.'hudson.triggers.TimerTrigger'.spec.text().isEmpty()
                // only deploy every environment once at a time
                concurrentBuild.text().equals('false')
                // do a workspace cleanup
                buildWrappers.'hudson.plugins.ws__cleanup.PreBuildCleanup'
                // make sure masked passwords are active
                !buildWrappers.'com.michelin.cio.hudson.plugins.maskpasswords.MaskPasswordsBuildWrapper'.isEmpty()
            }
        }
    }
}

通过这种方式,您可以遍历每个要确保设置所有正确值的 XML 节点。

关于jenkins - 可以测试作业 DSL 脚本吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046200/

相关文章:

java - Jenkins 插件 : Optional block and its nested radio buttons are not persisted after saving and loading the configuration dialogue

git - 用于基于新发布标签触发 jenkins 的 groovy job DSL

jenkins - 任何预定义的 Jenkins Job 将它们转换为 DSL

jenkins - 附加到作业属性

jenkins - 如何让 Jenkins 构建将故障报告回 Bitbucket 服务器?

Jenkins 向错误的提交 ID 发送通知

jenkins - Jenkins 管道可以有一个可选的输入步骤吗?

git - 自动 rebase gerrit 更改

jenkins - "java.lang.IllegalArgumentException: Expected a closure or failFast"运行并行构建时出现异常

json - 如何从 json api 中省略工件