當前位置:
首頁 > 最新 > 如何使用 Jenkins 的腳本化流水線

如何使用 Jenkins 的腳本化流水線

在這篇簡單的教程中,你將會學習到 Jenkins 的流水線即代碼,以及如何開發流水線腳本的指導。

Jenkins 是一個開源持續集成伺服器,它可以提供持續執行自動化構建和測試的能力。Jenkins 可以控制和監控多種任務,包括:拉取代碼、靜態代碼分析、構建工程、執行單元測試、自動化或者性能測試,最後部署應用。這些任務通常是一個持續部署流水線。

流水線(Pipeline)是 Jenkins 的一套插件。流水線可以認為是執行任務的一系列階段,它可以持續地發布你的應用。「持續」的概念是相對於你的應用環境來說的:在某些情況下,持續發布可以是每天也可以是每周,這取決於你的業務需要。在特定場景中,例如嚴重 bug 的修復,就需要在環境準備好後儘快地發布程序。流水線提供了自動化這些過程的方法。

在 Jenkins 中,流水線使用 DSL 來定義語句和表達式,和 Groovy 的語法結構相同。這使得流水線對於了解 Groovy 的人來說很簡單。

從 Jenkins 的2.0版本開始,流水線功能變得開箱即用,不需要特殊的配置。另外一個改進的地方是,流水線可以被當作代碼,使你開發出來的腳本可以利用版本管理工具控制它。

利用流水線腳本,可以把剛開發出來的特定功能代碼發布後測試。這是為了不引入新的 bug,保證程序可以像之前一樣正確執行。因此,你可以開發流水線腳本來執行指定流程的自動化測試,對特定場景利用 Apache JMeter? 執行性能測試。

本文,我們會討論腳本化流水線(流水線即代碼)的細節,並解釋它的結構,提供一些使用示例。更多有關在 Jenkins 中使用 JMeter 的信息,可以在持續集成入門的博文中找到:如何在 Jenkin 中運行 JMeter。同時,文章還介紹了如何利用 Jenkins2.0 的流水線來運行 JMeter 測試,並在 Github 中提供了例子。

隨著流水線的引入,Jenkins 提供了一個嵌入式的 Groovy 引擎,使得 Groovy 成為了流水線的 DSL 腳本語言。

這裡是設置 Jenkins 流水線的步驟。

1、首先,登陸到你的 Jenkins 伺服器,並從左側面板選擇「New Item」:

2、下一步,輸入名稱並選擇「Pipeline「類型。點擊」OK「後進入下一步:

3、你可以開始寫流水線腳本了:

你可以在中間紅色框里寫腳本,這也是下面要解釋的。

流水線用特殊的語句或者元素定義章節,這遵循 Groovy 語法。

節點塊

首先定義的塊是「node:」

「node」是 Jenkins 分散式架構的一部分,它可以把負載分布到多個「agent」節點。「maerer」節點處理所有的環境。Jenkins 代理節點從 master 節點上取得構建任務,然後根據 node 塊指定的節點上執行所有任務。更多信息可以在 Jenkins 分散式構建中找到。

這個塊不是必須但是建議使用,而且是一個好的實踐。如果代碼中包含這個的話,Jenkins 會進行調度,當有任何節點是可用狀態時運行所有的步驟,並且創建指定的工作目錄。

階段塊

下一個需要的是「stage:」

你的流水線中的多個步驟可以組合為階段。在這些階段中可能包括:

拉取代碼

構建工程

部署應用

執行功能測試

執行性能測試

上面的每個階段都可以包括多個動作。例如:應用部署的階段可以包括:為了功能測試而拷貝文件到指定目錄,在特定的伺服器上執行性能測試;一旦文件包括成功,就執行部署動作。

每個階段塊指定要執行的任務。例如:一個全部腳本化的流水線可能是:

該腳本包含如下階段:

構建階段:

Selenium 測試階段:

dir(automation_path):改變當前目錄為變數 automation_path。

bat 「man clean test … 「: 觸發 maven 來執行套件「冒煙測試」,並使用預定義的變數「QA」。同時,「clean」表示會清理構建。

階段塊也是可選的,但是推薦使用的,因為它是一種組織任務的方式。

Jenkins 提供了把預定義動作生成為流水線語句的介面,這可以添加到任意腳本階段中。在流水線頁面,點擊「流水線語法」就會進入下面的頁面:

例如:根據如下選擇可以創建執行 windows 批處理文件的命令:

點擊「生成流水線腳本」就會生成需要的語句,然後就可以添加到腳本中。

流水線即代碼的想法,是基於流水線腳本可以被當作代碼一樣放到代碼倉庫中,進行版本化控制。包含你流水線代碼的文本文件叫做 Jenkinsfile。

把你的流水線寫入到 Jenkinsfile 中,並讓它作為你的應用代碼庫的一部分有很多好處:它可以被團隊其他成員審查、編輯,該文件可以版本化和程序一起構建。

你的 Jenkinsfile 可以通過 Jenkins 的 web 界面或者你的文本編輯器進行編輯,並且你還可以使用你喜歡的 IDE 編輯,因此可以成為你的工程的一部分。而且,你可以配置 Jenkins 自動輪詢你的庫,當檢測到有更新時觸發新的構建。在工程配置頁面的「構建觸發器」區域可以完成該配置:

啟用「Poll SCM」,允許你在計劃文本框中輸入類似 cron 的表達式。配置 Jenkins 輪詢你的代碼庫不是一個輕量級、高效獲取更新的方式。而 Git Hooks 是一個比較好的方式。在文章自定義 Git——Git Hooks 提供了如何配置的內容。

Jenkins 通過提供沙盒來限制執行任意 Groovy 腳本。在流水線選項卡中,選項「使用 Groovy 沙盒」顯示在下面,它允許用戶在沒有管理員許可權的情況下運行。這種情況下,腳本只能使用內部可訪問的 API(這一點允許你使用 Groovy來開發自己的腳本)。

當取消勾選,如果腳本中的操作需要批准,則管理員就必須授予許可權。這也就是「腳本授權」。默認情況下,所有的 Jenkins 流水線都運行在 Groovy 沙盒中。如果勾選該選項,並且用到了未授權的操作,就會在運行時發生錯誤。白名單和黑名單都可以在腳本安全列表中找到。請參考本文中的腳本授權獲取更多信息。

流水線最新改進的地方是申明式流水線,這和我們討論過的腳本式流水線有些不同。它們都是流水線即代碼的實現,但申明式的流水線提供了更容易理解的語法並且容易開發和維護。這兩個增強都是增加了語法元素,允許你定義不同的流水線結構。

基本上,腳本式流水線的結構如下:

另一方面,申明式的流水線可以採用更多的元素,如下所示:

腳本元素「pipeline」、「agent」和」steps「都是申明式流水線特有的語法;」stage「對於兩種類型都可用;而」node「只能用在腳本式流水線中。

」Pipeline「 定義的塊包含了所有的腳本內容。

」Agent「 定義了流水線要在哪裡運行,這和腳本式流水線中的」node「類似。

」Stages「 包含所有階段。

在這篇博客中,我們已經大概過了一次 Jenkins 的流水線即代碼。我們還有如何開發流水線腳本的高級內容的教程。而完整的文檔則需要查看 Jenkins 官方文檔。

在我們的 Continuous Testing Academy 中可以學習到你用於測試的 Jenkins 所有知識。

你也可以把 BlazeMeter 集成到你的 Jenkins 流水線中。嘗試把示例應用在BlazeMeter 中做性能測試,或者把你的url放入下面的文本框中,你的測試將會在幾分鐘內開始運行。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 DevOps時代 的精彩文章:

台灣老專家:由蝴蝶效應談運維的系統思考

TAG:DevOps時代 |