J'ai lu How can I set the job timeout using the Jenkins DSL. Cela définit le délai d'attente pour un travail. Je veux le définir pour tous les travaux et avec des paramètres légèrement différents: 150%, moyenne sur 10 tâches, avec un maximum de 30 minutes.Comment puis-je définir le délai d'attente pour tous les travaux à l'aide du Jenkins DSL
Selon le relevant job-dsl-plugin documentation j'utiliser cette syntaxe:
job('example-3') {
wrappers {
timeout {
elastic(150, 10, 30)
failBuild()
writeDescription('Build failed due to timeout after {0} minutes')
}
}
}
J'ai testé dans http://job-dsl.herokuapp.com/ et c'est la partie XML pertinente:
<buildWrappers>
<hudson.plugins.build__timeout.BuildTimeoutWrapper>
<strategy class='hudson.plugins.build_timeout.impl.ElasticTimeOutStrategy'>
<timeoutPercentage>150</timeoutPercentage>
<numberOfBuilds>10</numberOfBuilds>
<timeoutMinutesElasticDefault>30</timeoutMinutesElasticDefault>
</strategy>
<operationList>
<hudson.plugins.build__timeout.operations.FailOperation></hudson.plugins.build__timeout.operations.FailOperation>
<hudson.plugins.build__timeout.operations.WriteDescriptionOperation>
<description>Build failed due to timeout after {0} minutes</description>
</hudson.plugins.build__timeout.operations.WriteDescriptionOperation>
</operationList>
</hudson.plugins.build__timeout.BuildTimeoutWrapper>
</buildWrappers>
J'ai vérifié avec un travail que je modifié manuellement avant, et le XML est correct. Donc, je sais que la syntaxe DSL Jenkins jusqu'à ici est correcte.
Maintenant je veux l'appliquer à tous les travaux. D'abord j'ai essayé de lister tous les noms de travail:
import jenkins.model.*
jenkins.model.Jenkins.instance.items.findAll().each {
println("Job: " + it.name)
}
Cela fonctionne aussi, tous les noms de travail sont imprimés sur la console.
Maintenant, je veux tout brancher ensemble. Ceci est le code complet j'utilise:
import jenkins.model.*
jenkins.model.Jenkins.instance.items.findAll().each {
job(it.name) {
wrappers {
timeout {
elastic(150, 10, 30)
failBuild()
writeDescription('Build failed due to timeout after {0} minutes')
}
}
}
}
Quand je pousse ce code et Jenkins exécute le travail des semences DSL, je reçois cette erreur:
ERROR: Type of item "jobname" does not match existing type, item type can not be changed
ce que je fais mal ici?
Merci. Je n'ai trouvé aucune documentation indiquant que le plugin Job-DSL ne peut conserver que les jobs créés par ce plugin. Franchement, cela limite sévèrement sa facilité d'utilisation pour moi. Merci d'avoir suggéré xmlstarlet, je l'ai utilisé dans le passé. Ou peut-être que je vais juste appliquer de la magie grep & sed. –