jenkins2 pipeline介紹

文章來自: http://www.ciandcd.com
文中的代碼來自能夠從github下載:  https://github.com/ciandcd
 
什麼是jenkins2的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的編程更容易的擴展插件。
 
總之,jenkins2的核心是pipeline,pipeline的核心是groovy,咱們必須立刻開始學習groovy。
相關文章
相關標籤/搜索