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.