Jenkins2.0中的pipeline


jenkins的實現是標准的master/slave模式,用戶與master交互,master將job分布到slave上運行。
jenkins的基本概念:
1. master, 也就是jenkins的server,是jenkins的核心,主要負責job的定時運行,將job分發到agent運行,和對job運行狀態的監控。
2. agent/slave/node,agent是相對於master的概念,主要作用是監聽master的指令,然后運行job。
3. executor,executor是虛擬的概念,每一個agent都可以設置executor的數量,表示可以同時運行的job的數量。
 
jenkins1的基本用法:
一般使用free style的job類型,在job的里面調用一些腳本和插件來實現整個持續集成的過程,一般是將整個job發布到某台機器上運行。缺點是job的配置分布在腳本和插件中,配置不夠集中,導致監控的時候log不容易查找。一般要實現整個持續集成發布流程需要多個jobs來實現。
 
相對於jenkins1,jenkins2的核心概念是pipeline。在jenkins2中引入grovvy腳本和虛擬的概念stage使得jenkins的配置和監控更集中,更清楚。
jenkins2的一些新概念:
1. step,其實跟jenkins1中的概念一樣, 是jenkins里job中的最小單位,可以認為是一個腳本的調用和一個插件的調用。
2. node, 是pipleline里groovy的一個概念,node可以給定參數用來選擇agent,node里的steps將會運行在node選擇的agent上。這里與jenkins1的區別是, job里可以有多個node,將job的steps按照需求運行在不同的機器上。例如一個job里有好幾個測試集合需要同時運行在不同的機器上。
3. stage,是pipeline里groovy里引入的一個虛擬的概念,是一些step的集合,通過stage我們可以將job的所有steps划分為不同的stage,使得整個job像管道一樣更容易維護。pipleline還有針對stage改進過的view,使得監控更清楚。
 
pipeline的設計理念是實現基於groovy腳本,靈活,可擴展的持續發布(CD)工作流。
pipeline的功能和優點:
1. durable持久性:在jenkins的master按計划和非計划的重啟后,pipeline的job仍然能夠工作,不受影響。其實理解起來也很簡單,jenkins的master和agent通過ssh連接,如果你知道nohup或disown的話,就可以理解為啥master的重啟不會影響agent上的job繼續運行。之前已經有類似的插件 https://www.cloudbees.com/products/cloudbees-jenkins-platform/enterprise-edition/features/long-running-build-plugin
2. 可暫停性:pipeline基於groovy可以實現job的暫停和等待用戶的輸入或批准然后繼續執行。
3. 更靈活的並行執行,更強的依賴控制,通過groovy腳本可以實現step,stage間的並行執行,和更復雜的相互依賴關系。
4. 可擴展性:通過groovy的編程更容易的擴展插件。

 

jenkinsfile example如下:

其中job配置中采用了參數話配置,Parameter中的Name對列表中字段的value.

import groovy.transform.Field;

buildnodename = '10.74.215.39_chenxiaoyuan'

node(buildnodename) {  
    parameters {
        string(branchname: 'BRANCH')
    }
    
    stage "Checkout"
    
    git 'http://chenxiaoyuan@10.75.9.60:8083/gerrit/CGDL-X86/trunk/src/v1.1-cgdl'
    echo "Hello ${params.BRANCH}"
    
    stage "Build"
    echo "Build the source code."
    
    stage "Review"
    echo "Review the commit code is awesome"
    setGerritReview customUrl: 'http://chenxiaoyuan@10.75.9.60:8083/gerrit/CGDL-X86/trunk/src/v1.1-cgdl',unsuccessfulMessage: 'The git repository can not access, please the check its URL.'
    
    stage "Submit"
    echo "Submit gerrit branch to develop branch of repo"
    
    stage "Rebuild"
    echo "Rebuild the source code"
    
    stage "Update"
    echo "Update rpm repo"
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM