正如?前文?提到的,Jenkins 流水線是一套插件,它支持實現和集成持續交付流水線到 Jenkins。流水線提供了一組可擴展的工具,用于通過流水線 DSL 將簡單到復雜的交付流水線建模為“代碼”。
本節描述了如何在 Jenkins 中開始創建你的流水線并介紹創建和存儲?Jenkinsfile?的各種方式。
配置要求
為了使用 Jenkins 流水線,你需要:
- Jenkins 2.x 或以上版本(舊版本到 1.642.3 可能可以,但不建議)
- 流水線插件,[2]?作為“建議插件”的一部分安裝(在安裝 Jenkins 后,運行 Post-installation setup wizard 時指定)。
在 Managing Plugins 中閱讀了解更多與安裝和管理插件有關的信息。定義流水線
聲明式和腳本式流水線都是 DSL 語言,[1]用來描述軟件交付流水線的一部分。腳本式流水線是用一種限制形式的 Groovy 語法編寫的。本文檔將根據需要介紹 Groovy 語法的相關部分,所以雖然理解 Groovy 對使用流水線有所幫助,但并不是必須的。- 通過 Blue Ocean?- 在 Blue Ocean 中設置一個流水線項目后,Blue Ocean UI 會幫你編寫流水線的?
Jenkinsfile?文件并提交到源代碼管理系統。 - 通過經典 UI - 你可以通過經典 UI 在 Jenkins 中直接輸入基本的流水線。
- 在源碼管理系統中定義?- 你可以手動編寫一個?
Jenkinsfile?文件,然后提交到項目的源代碼管理倉庫中。[3]
使用兩種方式定義流水線的語法是相同的。盡管 Jenkins 支持在經典 UI 中直接進入流水線,但通常認為最好的實踐是在?Jenkinsfile?文件中定義流水線,Jenkins 之后會直接從源代碼管理系統加載。通過 Blue Ocean
如果你剛接觸 Jenkins 流水線,Blue Ocean UI 可以幫助你?設置流水線項目,并通過圖形化流水線編輯器為你自動創建和編寫流水線(即?Jenkinsfile)。作為在 Blue Ocean 中設置流水線項目的一部分,Jenkins 給你項目的源代碼管理倉庫配置了一個安全的、經過身份驗證的適當的連接。因此,你通過 Blue Ocean 的流水線編輯器在?Jenkinsfile?中做的任何更改都會自動的保存并提交到源代碼管理系統。了解更多 Blue Ocean 相關信息請前往 Blue Ocean 章節和 Blue Ocean 入門頁面。通過經典 UI
使用經典 UI 創建的?Jenkinsfile?由 Jenkins 自己保存(在 Jenkins 的主目錄下)。想要通過 Jenkins 經典 UI 創建一個基本流水線:- 從Jenkins 主頁(即 Jenkins 經典 UI 的工作臺),點擊左上的?新建任務。
- 在?輸入一個任務名稱字段,填寫你新建的流水線項目的名稱。
警告:Jenkins 使用這個項目名稱在磁盤上創建目錄。建議不要在項目名稱中使用空格,因為這樣做可能會觸發在腳本中不能正確處理目錄路徑中的空格的bug。 - 向下滾動并點擊?流水線,然后點擊頁面底部的?確定?打開流水線配置頁(已選中?General?選項)。

- 點擊頁面頂部的?流水線?選項卡讓頁面向下滾動到?流水線?部分。
注意:如果你在源代碼管理系統中定義了?Jenkinsfile, 請按照下面的在源碼管理系統中定義的說明。 - 在?流水線?部分, 確保?定義?字段顯示?Pipeline script?選項。
- 將你的流水線代碼輸入到?腳本?文本區域。
例如,復制并粘貼下面的聲明式示例流水線代碼(在?Jenkinsfile ( … )?標題下)或者它的腳本化的版本到?腳本?文本區域。(下面的聲明式示例將在整個過程的其余部分使用。)Jenkinsfile (Declarative Pipeline)
Toggle Scripted Pipeline?(Advanced)
| agent?指示 Jenkins 為整個流水線分配一個執行器(在 Jenkins 環境中的任何可用代理/節點上)和工作區。 |
| echo?寫一個簡單的字符串到控制臺輸出。 |
| node?與上面的?agent?做了同樣的事情。 |
注意:你也可以從?腳本?文本區域右上方的?try sample Pipeline…?選項選擇腳本式流水線的示例。注意該區域沒有可用的聲明式流水線示例。 pipeline { agent any stages { stage('Stage 1') { steps { echo 'Hello world!' } } }}
- 在左側的?Build History?下面,點擊?#1?來訪問這個特定流水線運行的詳細信息。
- 點擊?Console Output?來查看流水線運行的全部輸出。下面的輸出顯示你的流水線已成功運行。

- 你也可以通過點擊構建號左邊的彩色地球儀從工作臺直接訪問控制臺輸出(例如?#1)。
- 通過經典的 UI 定義流水線可以很方便的測試流水線代碼片段,也可以處理簡單的或不需要從源代碼倉庫中檢出/克隆的流水線。正如上面提到的,和通過 Blue Ocean(上面)或在版本管理系統中(下面)定義的 ``Jenkinsfile`` 不同,在流水線項目的?腳本?文本區域輸入的 ``Jenkinsfile`` 由 Jenkins 自己存儲在 Jenkins 主目錄下。因此,為了更好地控制和擴展你的流水線,尤其是源代碼管理系統中那些復雜的項目,建議使用 Blue Ocean 或?源碼管理系統來定義你的?
Jenkinsfile?文件。
在源碼管理系統中
復雜的流水線很難在流水線配置頁面?經典 UI?的腳本文本區域進行編寫和維護。為簡化操作,流水線的?Jenkinsfile?可以在文本編輯器或集成開發環境(IDE)中進行編寫并提交到源碼管理系統?[3](可選擇性地與需要 Jenkins 構建的應用程序代碼放在一起)。然后 Jenkins 從源代碼管理系統中檢出?Jenkinsfile?文件作為流水線項目構建過程的一部分并接著執行你的流水線。要使用來自源代碼管理系統的?Jenkinsfile?文件配置流水線項目:- 按照?通過經典 UI上面的步驟定義你的流水線直到第5步(在流水線配置頁面訪問流水線部分)。
- 從?定義?字段選擇?Pipeline script from SCM?選項。
- 從?SCM?字段,選擇包含?
Jenkinsfile?文件的倉庫的源代碼管理系統的類型。 - 填充對應倉庫的源代碼管理系統的字段。
Tip:?如果你不確定給定字段應填寫什么值,點擊它右側的???圖標以獲取更多信息。 - 在?腳本路徑?字段,指定你的?
Jenkinsfile?文件的位置(和名稱)。這個位置是 Jenkins 檢出/克隆包括?Jenkinsfile?文件的倉庫的位置,它應該與倉庫的文件結構匹配。該字段的默認值采取名稱為 "Jenkinsfile" 的?Jenkinsfile?文件并位于倉庫的根路徑。
當你更新指定的倉庫時,只要流水線配置了版本管理系統的輪詢觸發器,就會觸發一個新的構建。
| 由于流水線代碼(特別是腳本式流水線)是使用類似 Groovy 的語法編寫的, 如果你的IDE不能正確的使用語法高亮顯示你的?Jenkinsfile,可以嘗試在?Jenkinsfile?文件的頂部插入行?#!/usr/bin/env groovy?糾正這個問題。?[4]?[5] |
內置文檔
流水線擁有內置文檔的特性可以讓創建各種復雜的流水線變得更容易。該內置文檔基于 Jenkins 實例中安裝的插件自動生成和更新。該內置文檔可以在 ``${YOUR_JENKINS_URL}/pipeline-syntax`` 全局地找到。對于任何已配置的流水線項目,這個文檔也被鏈接到側欄的流水線語法。片段生成器
內置的“片段生成器”工具有助于為各個步驟創建代碼段,發現插件提供的新步驟,或者為特定的步驟嘗試不同的參數。片段生成器由 Jenkins 實例中可用的步驟動態添加。可用的步驟的數量依賴于安裝的插件,這些插件顯式地公開了流水線中使用的步驟。- 從已配置好的流水線導航到?流水線語法?鏈接(見上),或訪問 ``${YOUR_JENKINS_URL}/pipeline-syntax``。
- 使用?示例步驟?下拉菜單的動態填充區來配置已選的步驟。
- 點擊?生成流水線腳本?生成一個能夠被復制并粘貼到流水線中的流水線片段。

要訪問所選步驟的附加信息和/或文檔,請點擊幫助圖標(上圖中的紅色箭頭所示)。全局變量參考
對于只展示步驟的片段生成器的補充,流水線還提供了一個內置的“全局變量參考”。和片段生成器一樣,它也是由插件動態添加。但和片段生成器不一樣的是,全局變量參考只包含由流水線或插件提供的可用于流水線的變量文檔。可以從腳本式流水線中訪問的環境變量,例如:?env.PATH?或?env.BUILD_ID。訪問內置的全局變量參考頁面?${YOUR_JENKINS_URL}/pipeline-syntax/globals?以獲取完整的,最新的,可用于流水線的環境變量列表。將為流水線定義的所有參數作為 Map,例如:params.MY_PARAM_NAME。可用于發現當前正在執行的流水線的信息, 比如?currentBuild.result,currentBuild.displayName?等屬性。參考內置的全局變量參考頁面?${YOUR_JENKINS_URL}/pipeline-syntax/globals?以獲取完整的,最新的,currentBuild?的屬性列表。聲明式指令生成器
片段生成器可以幫助生成腳本式流水線的步驟或者聲明式流水線的?stage?中的?steps?代碼塊,但是其并沒有包含用于定義聲明式流水線的 section(節段)和 directive(指令)。聲明式指令生成器(Declarative Directive Generator)這個工具可以做到這點。和?片段生成器類似,指令生成器允許你選擇聲明式的指令,對其以一種方式進行配置,然后生成這個指令的配置,讓你將其用于聲明式流水線。- 從已配置好的流水線導航到?Pipeline Syntax/流水線語法?鏈接(見上),然后點擊側欄的?Declarative Directive Generator,或直接訪問 ``${YOUR_JENKINS_URL}/directive-generator``。
- 點擊?Generate Declarative Directive?生成一個能夠被復制到流水線中的指令配置。
指令生成器可以生成嵌套的指令配置,比如在?when?指令內的條件,但是它不能生成流水線步驟。對于包含步驟的指令內容,比如?stage?內的?steps?或?post?內的條件如?always?或?failure,指令生成器添加一個占位符注釋。你仍然需要手動添加步驟到流水線中。Jenkinsfile (Declarative Pipeline)- // One or more steps need to be included within the steps block.
延伸閱讀
本節僅僅介紹了 Jenkins 流水線可以做的事情的皮毛,但是應該為你開始測試 Jenkins 實例提供了足夠的基礎。在下一節中,使用 Jenkinsfile,會討論更多的流水線步驟以及實現成功的,真實世界的 Jenkins 流水線模式。其它資源
- 流水線步驟參考,圍繞著所有在 Jenkins 更新中心發行的插件提供的步驟。
- 流水線示例,一個社區管理的可復制的流水線示例的集合。
【1】jetson nano開發使用的基礎詳細分享【2】Linux開發coredump文件分析實戰分享【4】cartographer環境建立以及建圖測試【5】設計模式之簡單工廠模式、工廠模式、抽象工廠模式的對比本公眾號全部原創干貨已整理成一個目錄,回復[ 資源 ]即可獲得。