Ci sono molti esempi di script groovy (http://scriptlerweb.appspot.com/catalog/list) nessun esempio di creazione di nuovi lavori.Come creare e configurare un nuovo lavoro Jenkins usando groovy?
risposta
Il plug-in Jenkins Job DSL Plugin può aggiungere passaggi in lavori per creare/modificare lavori esistenti.
Ecco l'esempio dal sito web del plugin, che crea un lavoro per ogni ramo in un repository git:
def project = 'quidryan/aws-sdk-test'
def branchApi = new URL("https://api.github.com/repos/${project}/branches")
def branches = new groovy.json.JsonSlurper().parse(branchApi.newReader())
branches.each {
def branchName = it.name
def jobName = "${project}-${branchName}".replaceAll('/','-')
job(jobName) {
scm {
git("git://github.com/${project}.git", branchName)
}
steps {
maven("test -Dproject.name=${project}/${branchName}")
}
}
}
Dato che si dispone di una stringa XML contenente il config.xml per il nuovo lavoro, il seguente script groovy farà quello che vuoi.
import jenkins.model.*
def jobName = "my-new-job"
def configXml = "" // your xml goes here
def xmlStream = new ByteArrayInputStream(configXml.getBytes())
Jenkins.instance.createProjectFromXML(jobName, xmlStream)
Per maggiori dettagli si veda il API Docs
L'utilizzo di XML è la cosa che sto cercando di evitare. Rende il codice groovy più difficile da leggere e mantenere. –
Creare sceneggiatura Pipeline da SCM lavoro:
import hudson.plugins.git.*;
def scm = new GitSCM("[email protected]:dermeister0/Tests.git")
scm.branches = [new BranchSpec("*/develop")];
def flowDefinition = new org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition(scm, "Jenkinsfile")
def parent = Jenkins.instance
def job = new org.jenkinsci.plugins.workflow.job.WorkflowJob(parent, "New Job")
job.definition = flowDefinition
parent.reload()
Un altro esempio: https://github.com/linagora/james-jenkins/blob/master/create-dsl-job.groovy
def jobDSL="""
node {
stage("test"){
echo 'Hello World'
}
}
""";
//http://javadoc.jenkins.io/plugin/workflow-cps/index.html?org/jenkinsci/plugins/workflow/cps/CpsFlowDefinition.html
def flowDefinition = new org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition(jobDSL, true);
//http://javadoc.jenkins.io/jenkins/model/Jenkins.html
def parent = Jenkins.instance;
//parent=Jenkins.instance.getItemByFullName("parentFolder/subFolder")
//http://javadoc.jenkins.io/plugin/workflow-job/org/jenkinsci/plugins/workflow/job/WorkflowJob.html
def job = new org.jenkinsci.plugins.workflow.job.WorkflowJob(parent, "testJob")
job.definition = flowDefinition
job.setConcurrentBuild(false);
//http://javadoc.jenkins.io/plugin/branch-api/jenkins/branch/RateLimitBranchProperty.html
job.addProperty(new jenkins.branch.RateLimitBranchProperty.JobPropertyImpl
(new jenkins.branch.RateLimitBranchProperty.Throttle (60,"hours")));
def spec = "H 0 1 * *";
hudson.triggers.TimerTrigger newCron = new hudson.triggers.TimerTrigger(spec);
newCron.start(job, true);
job.addTrigger(newCron);
job.save();
Jenkins.instance.reload()
- 1. Come configurare un nuovo slave Jenkins
- 2. Nel lavoro jenkins, creare il file utilizzando il sistema groovy nello spazio di lavoro corrente
- 3. Rinomina un lavoro in jenkins
- 4. Come invocare Ant nel lavoro della pipeline Jenkins usando lo script groovy?
- 5. Come creare un nuovo database usando SQLAlchemy?
- 6. Come recuperare lo spazio di lavoro corrente usando lo script Jenkins Pipeline Groovy?
- 7. Come posso creare un nuovo ramo usando TortoiseSVN?
- 8. Creare un nuovo database MySQL usando Workbench
- 9. Creare un nuovo oggetto usando la riflessione?
- 10. Lavoro ritardato: configurare run_at e max_attempts per un lavoro specifico
- 11. Creare un nuovo tag ID3 usando python e eyed3
- 12. Hudson * .groovy non trovato in Jenkins
- 13. Differenza tra lavoro Jenkins e progetto
- 14. Come configurare la configurazione multi-configurazione di jenkins e test
- 15. Come ottenere il nome del lavoro su un parametro dinamico Groovy in Jenkins
- 16. Come eseguire automaticamente un lavoro Jenkins parametrizzato
- 17. Può un Jenkins Trigger un lavoro su un jenkins remoto
- 18. configurare repository git a Jenkins
- 19. Distribuire a weblogic usando maven e jenkins
- 20. Come posso creare un nuovo database in MongoDB usando PyMongo?
- 21. Pacchetti Jenkins su Groovy Classpath?
- 22. Jenkins - come creare un ramo specifico
- 23. Installare e configurare BlueOcean per Jenkins
- 24. Lavoro matrice Jenkins con virgole
- 25. Come posso configurare Jenkins per mostrare i miei registri nello spazio di lavoro?
- 26. Ritardante lavoro Jenkins post-build
- 27. Creare lavori ed eseguirli in jenkins usando REST
- 28. jenkins extended parameter plugin groovy script
- 29. Come impostare la variabile di ambiente da un lavoro e usarlo nel prossimo lavoro in jenkins?
- 30. Jenkins - aggiungi un grafico all'interfaccia del lavoro
Fare riferimento [questo] (http: //stackoverflow.com/a/8803743/2051952) e [questo] (htt p: //stackoverflow.com/questions/10413936/creating-a-jenkins-environment-variable-using-groovy) per alcuni approfondimenti. – dmahapatro
possibile duplicato di [Configura o Crea lavoro hudson automaticamente] (http://stackoverflow.com/questions/3886892/configure-or-create-hudson-job-automatically) –