日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
實(shí)踐:JenkinsCoreApi&JobDSL創(chuàng)建項(xiàng)目

 在大規(guī)模的Jenkins實(shí)踐中創(chuàng)建項(xiàng)目也是一個(gè)問題,如何通過模板自動(dòng)化的創(chuàng)建Jenkins項(xiàng)目呢? 可以通過安裝Job Dsl插件后,通過 Dsl直接創(chuàng)建項(xiàng)目。也可以通過工具將dsl轉(zhuǎn)換為xml,然后再通過Jenkins API創(chuàng)建項(xiàng)目。相對(duì)比較第一種方式更加直接一些,由于時(shí)間問題今天暫時(shí)分享第二種創(chuàng)建項(xiàng)目的方式。

創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元湛江做網(wǎng)站,已為上家服務(wù),為湛江各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

1.根據(jù)Job DSL API生成模板

我們需要先安裝好Job Dsl 插件,然后執(zhí)行DSL創(chuàng)建項(xiàng)目。地址:https://jenkinsci.github.io/job-dsl-plugin/

例如: 使用官網(wǎng)的example。這里定義了一個(gè)流水線項(xiàng)目,配置了項(xiàng)目的信息包括(項(xiàng)目描述、項(xiàng)目參數(shù)、Jenkinsfile地址)

 
 
 
 
  1. pipelineJob("test-schdule-service") { 
  2.   description("this is my first job") 
  3.   keepDependencies(false) 
  4.   parameters { 
  5.     choiceParam("test", [1, 2, 3], "") 
  6.   } 
  7.   definition { 
  8.     cpsScm { 
  9.       scm { 
  10.         git { 
  11.           remote { 
  12.             github("https://gitlab.com/xxx/xxx.git", "https") 
  13.             credentials("24982560-17fc-4589-819b-bc5bea89da77") 
  14.           } 
  15.           branch("*/master") 
  16.         } 
  17.       } 
  18.       scriptPath("Jenkinsfile") 
  19.     } 
  20.   } 
  21.   disabled(false) 

2.通過Playground轉(zhuǎn)換DSL -> XML

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

3.通過Jenkins Core Api創(chuàng)建項(xiàng)目

 
 
 
 
  1. import javax.xml.transform.stream.StreamSource 
  2. import jenkins.model.Jenkins 
  3.  
  4. //創(chuàng)建項(xiàng)目 
  5. void createOrUpdateJob(String name, String xml) { 
  6.     def j = Jenkins.instance 
  7.     String fullName = name 
  8.     if(name.contains('/')) { 
  9.         j = j.getItemByFullName(name.tokenize('/')[0..-2]) 
  10.         name = name.tokenize('/')[-1] 
  11.     } 
  12.     Jenkins.checkGoodName(name) 
  13.     if(j.getItem(name) == null) { 
  14.         println "Created job \"${fullName}\"." 
  15.         j.createProjectFromXML(name, new ByteArrayInputStream(xml.getBytes())) 
  16.         j.save() 
  17.     } 
  18.     else if(j.getItem(name).configFile.asString().trim() != xml.trim()) { 
  19.         j.getItem(name).updateByXml(new StreamSource(new ByteArrayInputStream(xml.getBytes()))) 
  20.         j.getItem(name).save() 
  21.         println "Job \"${fullName}\" already exists.  Updated using XML." 
  22.     } 
  23.     else { 
  24.         println "Nothing changed.  Job \"${fullName}\" already exists." 
  25.     } 
  26.  
  27. try { 
  28.     //just by trying to access properties should throw an exception 
  29.     itemName == null 
  30.     xmlData == null 
  31.     isPropertiesSet = true 
  32. } catch(MissingPropertyException e) { 
  33.     println 'ERROR Can\'t create job.' 
  34.     println 'ERROR Missing properties: itemName, xmlData' 
  35.     return 
  36.  
  37. String xmlData = """ 
  38.  
  39.      
  40.     this is my first job 
  41.     false 
  42.      
  43.          
  44.              
  45.                  
  46.                      
  47.                          
  48.                             1 
  49.                             2 
  50.                             3 
  51.                          
  52.                      
  53.                     test 
  54.                      
  55.                  
  56.              
  57.          
  58.          
  59.             https://github.com/https://gitlab.com/xxx/xxx.git/ 
  60.          
  61.      
  62.      
  63.      
  64.