DevOps之持續集成Pipeline(一)


一、Pipeline介紹

    Jenkins2.0中最大的一個特性就是Pipeline,實際使用中Pipeline已經超越了我們對jenkins本身的理解,可能在之前我們大多數把Jenkins當做是一個持續集成的工具。但是在Jenkins2.0中,Jenkins完成了CI到CD的華麗轉身,而且因為Jenkins的開放性,隨着一些測試plugin的加入,CT持續測試也可以在Jenkins Pipeline上實現。以及多節點的組合式任務,使得Jenkins可以實現復雜的發布流程。

Pipeline,簡而言之,就是一套運行於Jenkins上的工作流框架,將原本獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的復雜流程編排與可視化。

官方資料:https://jenkins.io/2.0/

1、Jenkins持續集成架構圖

2、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 ”。

3、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') { 
        // 
    }
}

4、如何寫Pipeline

Jenkins貼心的為我們提供了快速生成腳本的功能

①拉取代碼為例

②生成Pipeline腳本

③Pipeline最佳實踐

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

 

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


免責聲明!

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



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