Pipeline 介紹

2018-08-26 10:49 更新

本章將介紹Jenkins Pipeline的所有方面,從運(yùn)行Pipeline到寫(xiě)入Pipeline代碼,甚至擴(kuò)展Pipeline本身。

本章旨在讓所有技能級(jí)別的Jenkins用戶(hù)使用,但初學(xué)者可能需要參考“ 使用Jenkins ”的一些部分來(lái)了解本章涵蓋的一些主題。

如果您還不熟悉Jenkins的基本術(shù)語(yǔ)和功能,請(qǐng)參考 Jenkins介紹。

什么是Pipeline?

Jenkins Pipeline是一套插件,支持將連續(xù)輸送Pipeline實(shí)施和整合到Jenkins。Pipeline提供了一組可擴(kuò)展的工具,用于通過(guò)PipelineDSL為代碼創(chuàng)建簡(jiǎn)單到復(fù)雜的傳送Pipeline。 

通常,此“Pipeline代碼”將被寫(xiě)入 Jenkinsfile項(xiàng)目的源代碼控制存儲(chǔ)庫(kù),例如:

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any 

    stages {
        stage('Build') { 
            steps { 
                sh 'make' 
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

agent 表示Jenkins應(yīng)該為Pipeline的這一部分分配一個(gè)執(zhí)行者和工作區(qū)。

stage 描述了這條Pipeline的一個(gè)階段。

steps 描述了要在其中運(yùn)行的步驟 stage

sh 執(zhí)行給定的shell命令

junit是由JUnit插件提供的 用于聚合測(cè)試報(bào)告的Pipeline步驟。

為什么是Pipeline?

Jenkins從根本上講是一種支持多種自動(dòng)化模式的自動(dòng)化引擎。Pipeline在Jenkins上添加了一套強(qiáng)大的自動(dòng)化工具,支持從簡(jiǎn)單的連續(xù)集成到全面的連續(xù)輸送Pipeline的用例。通過(guò)建模一系列相關(guān)任務(wù),用戶(hù)可以利用Pipeline 的許多功能:

  • 代碼:Pipeline以代碼的形式實(shí)現(xiàn),通常被檢入源代碼控制,使團(tuán)隊(duì)能夠編輯,審查和迭代其傳送流程。
  • 耐用:Pipeline可以在計(jì)劃和計(jì)劃外重新啟動(dòng)Jenkins管理時(shí)同時(shí)存在。
  • Pausable:Pipeline可以選擇停止并等待人工輸入或批準(zhǔn),然后再繼續(xù)Pipeline運(yùn)行。
  • 多功能:Pipeline支持復(fù)雜的現(xiàn)實(shí)世界連續(xù)交付要求,包括并行分叉/連接,循環(huán)和執(zhí)行工作的能力。
  • 可擴(kuò)展:Pipeline插件支持其DSL的自定義擴(kuò)展 以及與其他插件集成的多個(gè)選項(xiàng)。

雖然Jenkins一直允許基本形式的自由式工作聯(lián)合起來(lái)執(zhí)行順序任務(wù),Pipeline使這個(gè)概念成為Jenkins的最好的一個(gè)部分。

基于Jenkins的核心可擴(kuò)展性,Pipeline也可以由Pipeline共享庫(kù)用戶(hù)和插件開(kāi)發(fā)人員擴(kuò)展。

下面的流程圖是在Jenkins Pipeline中容易建模的一個(gè)連續(xù)發(fā)貨方案的示例:

Pipeline 介紹



圖1.Pipeline流量

Pipeline 條件

Step

單一任務(wù),從基礎(chǔ)中告訴了Jenkins應(yīng)該怎么做。例如,要執(zhí)行shell命令,請(qǐng)make使用以下sh步驟:sh 'make'。當(dāng)插件擴(kuò)展Pipeline DSL時(shí),通常意味著插件已經(jīng)實(shí)現(xiàn)了一個(gè)新的步驟

Node

Pipeline執(zhí)行中的大部分工作都是在一個(gè)或多個(gè)聲明node步驟的上下文中完成的。將工作限制在Node步驟中有兩件事情:

  1. 通過(guò)將項(xiàng)目添加到Jenkins隊(duì)列來(lái)調(diào)度要運(yùn)行的塊中包含的步驟。一旦執(zhí)行器在節(jié)點(diǎn)上空閑,步驟就會(huì)運(yùn)行。
  2. 創(chuàng)建工作區(qū)(特定于該特定Pipeline的目錄),可以從源代碼控制中檢出的文件完成工作。
根據(jù)您的Jenkins配置,某些工作空間在一段時(shí)間不活動(dòng)后可能無(wú)法自動(dòng)清除。

Stage

stage是定義整個(gè)Pipeline的概念上不同子集的一個(gè)步驟,例如:“Build”,“Test”和“Deploy”,許多插件用于可視化或呈現(xiàn)Jenkins Pipeline狀態(tài)/進(jìn)度。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)