jenkins jenkins-plugins jenkins-job-dsl

jenkins - ¿Se puede probar un script DSL de Job?



jenkins-plugins jenkins-job-dsl (2)

Eche un vistazo al job-dsl-gradle-example . El repositorio contiene una prueba para scripts DSL.

Idealmente, me gustaría poder invocar el script con algún tipo de prueba unitaria antes de ejecutarlo en un Jenkins.

¿Hay alguna manera de probar una secuencia de comandos DSL de trabajo que no sea la ejecución de jenkins?


Además de los ejemplos en job-dsl-gradle-example , también puede ir un paso más allá y escribir pruebas para archivos o trabajos individuales. Por ejemplo, supongamos que tiene un archivo de configuración de trabajo ubicado en 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() } } } }

De esta forma, puede recorrer cada nodo XML que desee para asegurarse de tener todos los valores correctos establecidos.