Jenkins Pipeline是一套插件,支持將連續(xù)輸送Pipeline實(shí)施和整合到Jenkins。Pipeline 提供了一組可擴(kuò)展的工具,用于通過(guò)Pipeline DSL為代碼創(chuàng)建簡(jiǎn)單到復(fù)雜的傳送Pipeline 。
本節(jié)介紹Jenkins Pipeline的一些關(guān)鍵概念,并幫助介紹在運(yùn)行的Jenkins實(shí)例中定義和使用Pipelines的基礎(chǔ)知識(shí)。
要使用Jenkins Pipeline,您將需要:
要了解如何安裝和Pipeline插件,請(qǐng)參閱管理插件。
腳本Pipeline是用Groovy寫(xiě)的 。Groovy語(yǔ)法的相關(guān)位將在本文檔中根據(jù)需要進(jìn)行介紹,因此,當(dāng)了解Groovy時(shí),不需要使用Pipeline。
可以通過(guò)以下任一方式創(chuàng)建基本Pipeline:
用任一方法定義Pipeline的語(yǔ)法是一樣的,但是Jenkins支持直接進(jìn)入Web UI的Pipeline,通常認(rèn)為最佳實(shí)踐是在Jenkinsfile Jenkins中直接從源代碼控制中加載Pipeline。
要在Jenkins Web UI中創(chuàng)建基本Pipeline,請(qǐng)按照下列步驟操作:
Jenkins使用流水線的名稱(chēng)在磁盤(pán)上創(chuàng)建目錄。包含空格的管道名稱(chēng)可能會(huì)發(fā)現(xiàn)不希望路徑包含空格的腳本中的錯(cuò)誤。
單擊“構(gòu)建歷史記錄”下的#1,然后單擊控制臺(tái)輸出以查看Pipeline的完整輸出。
上面的示例顯示了在Jenkins Web UI中創(chuàng)建的基本Pipeline的成功運(yùn)行,使用兩個(gè)步驟。
Jenkinsfile (Scripted Pipeline)
node {
echo 'Hello World'
}
:
node
在Jenkins環(huán)境中分配一個(gè)執(zhí)行器和工作空間。
:
echo
在控制臺(tái)輸出中寫(xiě)入簡(jiǎn)單的字符串
復(fù)雜的Pipeline難以在Pipeline配置頁(yè)面的文本區(qū)域內(nèi)進(jìn)行寫(xiě)入和維護(hù)。為了使這更容易,Pipeline也可以寫(xiě)在文本編輯器中,并檢查源控件,作為Jenkinsfile,Jenkins可以通過(guò)Pipeline腳本從SCM選項(xiàng)加載的控件。
為此,在定義Pipeline時(shí),從SCM中選擇Pipeline腳本。
選擇SCM選項(xiàng)中的Pipeline腳本后,不要在Jenkins UI中輸入任何Groovy代碼; 您只需指定要從其中檢索Pipeline的源代碼中的路徑。更新指定的存儲(chǔ)庫(kù)時(shí),只要Pipeline配置了SCM輪詢觸發(fā)器,就會(huì)觸發(fā)一個(gè)新構(gòu)建。
文本編輯器,IDE,GitHub等將使用Groovy代碼進(jìn)行語(yǔ)法高亮顯示, 第一行Jenkinsfile應(yīng)該是#!/usr/bin/env groovy Jenkinsfile。
Pipeline配有內(nèi)置的文檔功能,可以更輕松地創(chuàng)建不同復(fù)雜性的Pipeline。根據(jù)Jenkins實(shí)例中安裝的插件自動(dòng)生成和更新內(nèi)置文檔。
內(nèi)置文檔可以在全局范圍內(nèi)找到: localhost:8080 / pipeline-syntax /,假設(shè)您有一個(gè)Jenkins實(shí)例在本地端口8080上運(yùn)行。同樣的文檔也作為管道語(yǔ)法鏈接到任何配置的Pipeline的側(cè)欄中項(xiàng)目。
內(nèi)置的“Snippet Generator”實(shí)用程序有助于為單個(gè)步驟創(chuàng)建一些代碼,發(fā)現(xiàn)插件提供的新步驟,或?yàn)樘囟ú襟E嘗試不同的參數(shù)。
Snippet Generator動(dòng)態(tài)填充Jenkins實(shí)例可用的步驟列表??捎玫牟襟E數(shù)量取決于安裝的插件,它明確地暴露了在Pipeline中使用的步驟。
要使用代碼段生成器生成步驟代碼片段:
要訪問(wèn)有關(guān)所選步驟的其他信息和/或文檔,請(qǐng)單擊幫助圖標(biāo)(由上圖中的紅色箭頭指示)。
除了代碼片段生成器之外,Pipeline還提供了一個(gè)內(nèi)置的“ 全局變量引用”。像Snippet Generator一樣,它也是由插件動(dòng)態(tài)填充的。與代碼段生成器不同的是,全局變量引用僅包含Pipeline提供的變量的文檔,這些變量可用于Pipeline。
在Pipeline中默認(rèn)提供的變量是:
腳本化Pipeline可訪問(wèn)的環(huán)境變量,例如: env.PATH
或env.BUILD_ID
。請(qǐng)參閱內(nèi)置的全局變量參考 ,以獲取管道中可用的完整和最新的環(huán)境變量列表。
將為Pipeline定義的所有參數(shù)公開(kāi)為只讀 地圖,例如:params.MY_PARAM_NAME
。
可用于發(fā)現(xiàn)有關(guān)當(dāng)前正在執(zhí)行的Pipeline信息,與如屬性currentBuild.result
,currentBuild.displayName
等等請(qǐng)教內(nèi)置的全局變量引用 了一個(gè)完整的,而且是最新的,可用的屬性列表currentBuild
。
本節(jié)只是劃傷了Jenkins Pipeline可以做的工作,但應(yīng)該為您提供足夠的基礎(chǔ),開(kāi)始嘗試使用測(cè)試Jenkins實(shí)例。
在下一節(jié)中,Jenkinsfile將會(huì)更多的管道步驟與實(shí)現(xiàn)成功的,真實(shí)的Jenkins Pipeline的模式一起討論。
更多建議: