DevOps之持續集成Pipeline(一)

1、Pipeline介紹

    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

一、Jenkins持續集成架構圖

二、Pipeline的組成部分

①Node

     咱們能夠將Node稱爲是節點或者Agent。節點能夠執行某一階段(Stage)、某幾階段(Stage)乃至整個Pipeline,就看咱們Pipeline中在哪裏去定義Node。咱們能夠將Node做爲Jenkins Master的Slave 節點來分擔Master節點的構建以及執行job負載。也能夠將Node當作測試、部署的專用節點。好比咱們能夠增長一個Ansible節點用來作自動化部署,增長 一個Jmeter節點用來作性能測試。架構

Stage

      咱們能夠將Stage稱爲階段,每個Stage爲Pipeline中的一個小部分,而每一個Stage中最小部分爲Step。好比一個簡單的持續集成Pipeline。咱們能夠分爲兩個Stage,第一個是git clone code,把最新代碼拉下來,第二個爲Build,即利用Ant、Maven等工具進行代碼編譯構建。框架

 ③Step

      咱們能夠把Step稱爲步驟,一個或者多個Step將會組成一個Stage,Step是Pipeline組成的最小單位。一個Step能夠很簡單,好比echo 「hello」。也能夠很複雜,好比sh‘’ 「docker build -t jenkins:master 」。工具

三、Pipeline兩種語法

Pipeline腳本是由Groovy語言實現性能

聲明式Pipeline

pipeline {
    agent any   //定義使用哪一個Node進行Job的執行
    stages {
        stage('Build') {   //定義Build的stage
            steps {    //定義Build的stage下面的全部step
                // 
            }
        }
        stage('Test') { 
            steps {
                // 
            }
        }
        stage('Deploy') { 
            steps {
                // 
            }
        }
    }
}

②腳本式Pipeline

node {               //定義使用哪一個Node進行Job的執行與聲明式中的Agent等同。
    stage('Build') { //定義Build的stage步驟
        //           //定義Build的stage下面的全部step步驟
    }
    stage('Test') { 
        // 
    }
    stage('Deploy') { 
        // 
    }
}

四、如何寫Pipeline

Jenkins貼心的爲咱們提供了快速生成腳本的功能測試

①拉取代碼爲例

②生成Pipeline腳本

③Pipeline最佳實踐

一般推薦在 Jenkins中直接從源代碼控制(SCM)中載入Jenkinsfile Pipeline,這樣能夠對Jenkinsfile也進行分支管理以及不一樣版本的管理。ui

 

更多Pipeline的使用和說明請參照官方文檔:https://jenkins.io/doc/book/pipeline/spa

相關文章
相關標籤/搜索