大型Jenkins实践中创建项目也是个问题。如何通过模板自动创建Jenkins项目?安装JobDsl插件后可以直接通过Dsl创建项目。也可以通过工具将dsl转为xml,然后通过JenkinsAPI创建项目。与第一种方法相比,它更直接。由于时间问题,今天分享第二种创建项目的方法。1、基于JobDSLAPI生成模板,我们需要先安装JobDsl插件,然后执行DSL创建工程。地址:https://jenkinsci.github.io/job-dsl-plugin/示例:使用官网示例。这里定义了一个pipeline项目,配置了项目信息,包括(项目描述,项目参数,Jenkinsfile地址)pipelineJob("test-schdule-service"){description("thisismyfirstjob")keepDependencies(false)parameters{choiceParam("测试",[1,2,3],"")}定义{cpsScm{scm{git{remote{github("https://gitlab.com/xxx/xxx.git","https")credentials("24982560-17fc-4589-819b-bc5bea89da77")}branch("*/master")}}scriptPath("Jenkinsfile")}}disabled(false)}2.通过Playground转换DSL->XMLurl:http://工作-dsl.herokuapp.com/3。通过JenkinsCoreApi创建项目importjavax.xml.transform.stream.StreamSourceimportjenkins.model.Jenkins//创建项目voidcreateOrUpdateJob(Stringname,Stringxml){defj=Jenkins.instanceStringfullName=nameif(name.contains('/')){j=j.getItemByFullName(name.tokenize('/')[0..-2])name=name.tokenize('/')[-1]}Jenkins.checkGoodName(name)if(j.getItem(name)==null){println"Createdjob\"${fullName}\"."j.createProjectFromXML(name,newByteArrayInputStream(xml.getBytes()))j.save()}elseif(j.getItem(name).configFile.asString().trim()!=xml.trim()){j.getItem(name).updateByXml(newStreamSource(newByteArrayInputStream(xml.getBytes())))j.getItem(name).save()println"Job\"${fullName}\"alreadyexists.UpdatedusingXML."}else{println"Nothingchanged.Job\"${fullName}\"alreadyexists."}}try{//justbytryingtoaccesspropertiesshouldthrowanexceptionitemName==nullxmlData==nullisPropertiesSet=true}catch(MissingPropertyExceptione){println'ERRORCan\'tcreatejob.'println'ERRORMissingproperties:itemName,xmlData'return}StringxmlData="“”
