6

理想的には、Jenkins でスクリプトを実行する前に、ある種の単体テストでスクリプトを呼び出すことができるようにしたいと考えています。

ジェンキンスに実行させる以外に、ジョブ DSL スクリプトをテストする方法はありますか?

4

3 に答える 3

8

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 ノードを調べることができます。

于 2015-12-14T09:36:03.413 に答える