Jenkins2.0中最大的一個特性就是Pipeline,實際使用中Pipeline已經超越了咱們對jenkins自己的理解,可能在以前咱們大多數把Jenkins當作是一個持續集成的工具。可是在Jenkins2.0中,Jenkins完成了CI到CD的華麗轉身,並且由於Jenkins的開放性,隨着一些測試plugin的加入,CT持續測試也能夠在Jenkins Pipeline上實現。以及多節點的組合式任務,使得Jenkins能夠實現複雜的發佈流程。node
Pipeline,簡而言之,就是一套運行於Jenkins上的工做流框架,將本來獨立運行於單個或者多個節點的任務鏈接起來,實現單個任務難以完成的複雜流程編排與可視化。git
官方資料:https://jenkins.io/2.0/docker
咱們能夠將Node稱爲是節點或者Agent。節點能夠執行某一階段(Stage)、某幾階段(Stage)乃至整個Pipeline,就看咱們Pipeline中在哪裏去定義Node。咱們能夠將Node做爲Jenkins Master的Slave 節點來分擔Master節點的構建以及執行job負載。也能夠將Node當作測試、部署的專用節點。好比咱們能夠增長一個Ansible節點用來作自動化部署,增長 一個Jmeter節點用來作性能測試。架構
咱們能夠將Stage稱爲階段,每個Stage爲Pipeline中的一個小部分,而每一個Stage中最小部分爲Step。好比一個簡單的持續集成Pipeline。咱們能夠分爲兩個Stage,第一個是git clone code,把最新代碼拉下來,第二個爲Build,即利用Ant、Maven等工具進行代碼編譯構建。框架
咱們能夠把Step稱爲步驟,一個或者多個Step將會組成一個Stage,Step是Pipeline組成的最小單位。一個Step能夠很簡單,好比echo 「hello」。也能夠很複雜,好比sh‘’ 「docker build -t jenkins:master 」。工具
Pipeline腳本是由Groovy語言實現性能
pipeline { agent any //定義使用哪一個Node進行Job的執行 stages { stage('Build') { //定義Build的stage steps { //定義Build的stage下面的全部step // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } }
node { //定義使用哪一個Node進行Job的執行與聲明式中的Agent等同。 stage('Build') { //定義Build的stage步驟 // //定義Build的stage下面的全部step步驟 } stage('Test') { // } stage('Deploy') { // } }
Jenkins貼心的爲咱們提供了快速生成腳本的功能測試
一般推薦在 Jenkins中直接從源代碼控制(SCM)中載入Jenkinsfile Pipeline,這樣能夠對Jenkinsfile也進行分支管理以及不一樣版本的管理。ui
更多Pipeline的使用和說明請參照官方文檔:https://jenkins.io/doc/book/pipeline/spa