Jenkins API groovy调用实践: Jenkins Core Api & Job DSL创建项目

网友投稿 248 2022-11-28

Jenkins API groovy调用实践: Jenkins Core Api & Job DSL创建项目

在大规模的Jenkins实践中创建项目也是一个问题,如何通过模板自动化的创建Jenkins项目呢? 可以通过安装Job Dsl插件后,通过 Dsl直接创建项目。也可以通过工具将dsl转换为xml,然后再通过Jenkins API创建项目。相对比较第一种方式更加直接一些,由于时间问题今天暂时分享第二种创建项目的方式。

1.根据Job DSL API生成模板

我们需要先安装好Job Dsl 插件,然后执行DSL创建项目。地址:{ description("this is my first job") keepDependencies(false) parameters { choiceParam("test", [1, 2, 3], "") } definition { cpsScm { scm { git { remote { github("" credentials("24982560-17fc-4589-819b-bc5bea89da77") } branch("*/master") } } scriptPath("Jenkinsfile") } } disabled(false)}

2.通过Playground转换DSL -> XML

url: Core Api创建项目

import javax.xml.transform.stream.StreamSourceimport jenkins.model.Jenkins//创建项目void createOrUpdateJob(String name, String xml) { def j = Jenkins.instance String fullName = name if(name.contains('/')) { j = j.getItemByFullName(name.tokenize('/')[0..-2]) name = name.tokenize('/')[-1] } Jenkins.checkGoodName(name) if(j.getItem(name) == null) { println "Created job \"${fullName}\"." j.createProjectFromXML(name, new ByteArrayInputStream(xml.getBytes())) j.save() } else if(j.getItem(name).configFile.asString().trim() != xml.trim()) { j.getItem(name).updateByXml(new StreamSource(new ByteArrayInputStream(xml.getBytes()))) j.getItem(name).save() println "Job \"${fullName}\" already exists. Updated using XML." } else { println "Nothing changed. Job \"${fullName}\" already exists." }}try { //just by trying to access properties should throw an exception itemName == null xmlData == null isPropertiesSet = true} catch(MissingPropertyException e) { println 'ERROR Can\'t create job.' println 'ERROR Missing properties: itemName, xmlData' return}String xmlData = """ this is my first job false 1 2 3 test Jenkinsfile false 24982560-17fc-4589-819b-bc5bea89da77 */master 2 false Default false"""String itemName = "my-first-pipeline"createOrUpdateJob(itemName, xmlData)

4.通过Jenkins Script Console运行

创建完成

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:相对2G系统,3G在信息安全措施上有哪些改进?
下一篇:Java Spring Boot消息服务万字详解分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~