实践: Jenkins Core Api & Job DSL创建项目

IT科技类资讯2025-11-05 14:07:4837922

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

1.根据Job DSL API生成模板

我们需要先安装好Job Dsl 插件,创建然后执行DSL创建项目。亿华云项目地址:https://jenkinsci.github.io/job-dsl-plugin/

例如: 使用官网的实践example。这里定义了一个流水线项目,创建配置了项目的项目信息包括(项目描述、项目参数、亿华云计算实践Jenkinsfile地址)

pipelineJob("test-schdule-service") {   description("this is my first job")   keepDependencies(false)   parameters {     choiceParam("test",创建 [1, 2, 3], "")   }   definition {     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 -> XML

url: http://job-dsl.herokuapp.com/

3.通过Jenkins Core Api创建项目

import javax.xml.transform.stream.StreamSource import 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 Cant create job.     println ERROR Missing properties: itemName, xmlData     return } String xmlData = """<!-- 1. test-schdule-service --> <flow-definition>     <actions></actions>     <description>this is my first job</description>     <keepDependencies>false</keepDependencies>     <properties>         <hudson.model.ParametersDefinitionProperty>             <parameterDefinitions>                 <hudson.model.ChoiceParameterDefinition>                     <choices class=java.util.Arrays$ArrayList>                         <a class=string-array>                             <string>1</string>                             <string>2</string>                             <string>3</string>                         </a>                     </choices>                     <name>test</name>                     <description></description>                 </hudson.model.ChoiceParameterDefinition>             </parameterDefinitions>         </hudson.model.ParametersDefinitionProperty>         <com.coravy.hudson.plugins.github.GithubProjectProperty>             <projectUrl>https://github.com/https://gitlab.com/xxx/xxx.git/</projectUrl>         </com.coravy.hudson.plugins.github.GithubProjectProperty>     </properties>     <triggers></triggers>     <definition class=org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition>         <scriptPath>Jenkinsfile</scriptPath>         <lightweight>false</lightweight>         <scm class=hudson.plugins.git.GitSCM>             <userRemoteConfigs>                 <hudson.plugins.git.UserRemoteConfig>                     <url>https://github.com/https://gitlab.com/xxx/xxx.git.git</url>                     <credentialsId>24982560-17fc-4589-819b-bc5bea89da77</credentialsId>                 </hudson.plugins.git.UserRemoteConfig>             </userRemoteConfigs>             <branches>                 <hudson.plugins.git.BranchSpec>                     <name>*/master</name>                 </hudson.plugins.git.BranchSpec>             </branches>             <configVersion>2</configVersion>             <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>             <gitTool>Default</gitTool>             <browser class=hudson.plugins.git.browser.GithubWeb>                 <url>https://github.com/https://gitlab.com/xxx/xxx.git/</url>             </browser>         </scm>     </definition>     <disabled>false</disabled> </flow-definition> """ String itemName = "my-first-pipeline" createOrUpdateJob(itemName, xmlData) 

4.通过Jenkins Script Console运行

创建完成

本文地址:http://www.bzuk.cn/html/57b31199631.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

热门文章

全站热门

家用跑步机品牌推荐(挑选适合你的家用跑步机,让跑步更加舒适愉快)

带您了解DB2索引结构

MySQL查询应用--查询当天发布的所有文章

攻击者危害关键资产需要几步?

中兴F5手机质量评估(探究中兴F5手机的质量问题及用户评价)

详解Oracle日志文件管理

带您详细了解Oracle分区索引

Oracle读写文件bfilename的实例

友情链接

滇ICP备2023006006号-33