How create and configure a new Jenkins Job using groovy?
groovy脚本有很多示例(http://scriptlerweb.appspot.com/catalog/list),但是我没有找到创建新工作的示例。 在线上有一个很好的例子说明应该如何做?
从SCM作业创建管道脚本:
1 2 3 4 5 6 7 8 9 10 11 12 | 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() |
另一个示例:https://github.com/linagora/james-jenkins/blob/master/create-dsl-job.groovy
Jenkins插件Job DSL Plugin可以在作业中添加步骤,以创建/修改现有作业。
这是插件网站上的示例,该示例为git存储库中的每个分支创建一个作业:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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}") } } } |
假设您有一个包含新工作的config.xml的XML字符串,那么以下groovy脚本将完成您想要的工作。
1 2 3 4 5 6 7 8 |
有关更多详细信息,请参阅API文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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() |