組織越來越多地採用Jenkins來自動化其構建和測試流程,使手動管理Jenkins任務變得困難。好消息是,Jenkins DSL插件允許您使用特定於域的語言(DSL)語法定義Jenkins任務。
Jenkins DSL使您能夠將任務存儲在版本控制系統中,與其他用戶共享,並從模板生成新的任務。在本教程中,您將學習如何利用Jenkins DSL插件來幫助自動化應用程序開發。
繼續閱讀,這樣您就永遠不必在Jenkins UI中費力地創建任務了!
先決條件
本教程將進行實際演示。如果您想跟隨操作,請確保您擁有以下內容。
- A Linux machine – This guide uses Ubuntu 20.04.
- 管道:Groovy可以直接執行Groovy代碼。
安裝Jenkins DSL插件
保持工作一致性可能很困難,但Jenkins DSL插件可以解決此問題。如何?通過允許您以可讀的方式在一個人類可讀的文件中以程序化形式定義工作。
但在創建工作之前,您需要首先安裝Jenkins DLS插件:
1. SSH到您的Jenkins服務器並運行以下命令來驗證是否安裝了所需版本的Java並且jenkins服務正在運行。
如果您看到與以下類似的輸出,則可以安裝Jenkins DSL插件。

2. 接下來,打開您喜歡的瀏覽器,並導航至 http://your_server_ip:8080/pluginManager/available。將 your_server_ip:8080 替換為您的 Jenkins 伺服器的實際 IP 地址和埠號。
3. 最後,使用以下方法安裝 Jenkins DSL 插件:
- 如下圖所示,在右上角的搜索框中輸入 Job DSL。
如果您已經安裝了 Job DSL 插件並從舊版本升級,則在搜索 Job DSL 時,Job DSL 腳本將不會出現在列表中。您可以導航至 http://your_server_ip:8080/pluginManager/installed 以檢查插件 Job DSL 是否存在。
- 勾選 Job DSL 選項旁邊的核取方塊。
- 點擊底部的「無需重新啟動安裝」以安裝 Jenkins Job DSL 插件。

在安裝插件時,Jenkins UI 會顯示進度條。安裝完成後,您將看到以下類似的成功消息。

使用 Jenkins DSL 插件創建 Jenkins Seed Job
現在您已經安裝了 Jenkins DSL 插件,請隨意創建一個 Jenkins seed job。編寫一個基本的 Job DSL 腳本,並將該腳本合併到 Jenkins seed job 中。您將創建一個 freestyle job,在 Jenkins 控制台中打印出一條 ‘Hello World!’ 的消息。
將 Job DSL 腳本合併到 Jenkins Seed Job 中:
1. 在 Jenkins 控制台中,點擊左側的「新建項目」。您的瀏覽器將重定向到一個新建項目的頁面(第二步)

2. 接下來,使用以下內容創建一個新項目:
- 輸入一個項目名稱,如下所示。但在本教程中,項目名稱設為seed。
- 從下面的選項中選擇自由風格項目(可重複執行的建置工作、腳本或流水線)
- 點擊底部的確定以創建新項目,您的瀏覽器將重定向到新項目的配置頁面。

3. 在新項目的配置頁面上,保留其他部分的默認設置。
滾動到建置部分,點擊「新增建置步驟」下拉按鈕,選擇「處理 Job DSLs」。這樣做會打開一個選項,您將在其中提供一個 DSL 腳本(第四步)

4. 現在,選擇「使用提供的 DSL 腳本」選項,如下圖所示,並將以下代碼塊填入字段中。
此代碼塊是一個名為 jenkins-job-demo-1 的自由風格作業定義,使用 shell 步驟打印“Hello World”消息。工作的名稱將顯示在 Jenkins UI 中。
創建不同類型的 Jenkins 工作的方法有很多,您可以在官方 文檔 中找到。

5. 在頁面底部點擊保存,保存新項目(種子)的配置。

6. 最後,前往您的 Jenkins 控制面板,驗證您創建的種子工作是否存在,如下所示。

運行種子工作
您已成功創建並驗證了種子工作。但是您如何知道該工作是否有效?您將執行種子工作與您在“使用 Jenkins DSL 插件創建 Jenkins 種子工作”部分的第四步中提供的 DSL 腳本進行比較。
1. 在您的 Jenkins 控制面板上,點擊種子工作以訪問其配置頁面。

2. 接下來,在左側欄中點擊“立即構建”以運行該工作。

3. 按下 F5 進行刷新。您將在“構建歷史記錄”部分下看到一個新的構建,底部左側顯示成功狀態(綠色勾勾),如下所示。
此輸出表明種子工作成功運行,創建了一個新的 Jenkins 工作(jenkins-job-demo-1),位於“生成的項目”部分下。

4. 現在,前往您的 Jenkins 控制面板。如下所示,您將看到由種子工作創建的新的 Jenkins 工作(jenkins-job-demo-1)。
點擊新生成的工作以訪問其配置頁面。

5. 點擊“立即構建”以運行生成的工作(jenkins-job-demo-1)。

6. 最後,點擊建置歷程部分成功建置旁邊的向下箭頭按鈕,如下所示。從上下文選單中選擇“控制台輸出”以查看工作的輸出。

如果生成的工作成功,您將看到以下消息,即顯示您在Job DSL腳本中定義的消息。
此時,您已成功創建並運行了一個使用Job DSL插件的Jenkins工作!

使用Jenkins DSL插件創建CI/CD流水線的工作
到目前為止,您已經學會了如何使用Job DSL插件創建並運行Jenkins自由風格的工作。您將通過為CI/CD流水線創建Jenkins工作來自動化軟件開發過程中的非人工部分。
具體來說,您將創建一個從GitHub存儲庫拉取代碼、構建代碼並運行單元測試的工作。
創建CI/CD流水線的Jenkins工作:
1. 在網頁瀏覽器中導航至http://your_server_ip:8080/job/seed/configure以配置您的種子工作。將your_server_ip替換為您的Jenkins服務器IP地址,並將seed替換為您的工作名稱。
2. 接下來,向下滾動到“建置”部分,找到DSL腳本字段,並將現有內容替換為以下代碼。
添加代碼後,單擊保存以保存更改。

3. 在下一個畫面的左側欄中點擊“立即建置”以重新運行種子工作,如下所示。 在“建置歷史記錄”部分(左下角),您將看到種子工作已成功運行的消息。
點擊新建置(#2)以訪問建置的配置頁面。

4. 現在,導航到新建置的“控制台輸出”。 您將看到一條“已添加項目”消息和新工作的名稱,如下所示。
此輸出表明已成功添加了新的流水線工作。

5. 返回到Jenkin儀表板,您將看到新增了新的流水線工作(jenkins-job-demo-2)到作業列表中。 點擊該新流水線作業以訪問作業的配置頁面。

6. 最後,點擊“立即建置”以運行新的流水線工作。 您將看到該作業在“建置歷史記錄”部分下成功運行的消息。
點擊作業旁邊的下拉箭頭,然後選擇“控制台輸出”。

在下面的控制台輸出中,您可以看到作業的輸出,即Jenkins成功克隆了存儲庫,構建了代碼並運行了單元測試。

結論
在本教程中,您已經學會了如何使用Job DSL插件創建Jenkins作業。 您已經觸及了通過使用Jenkins Pipeline插件創建CI/CD流水線來增強應用程序開發的一些方面。
工作 DSL 插件和 Jenkins Pipeline 插件一起工作,提供了一种强大的方式,您可以管理 Jenkins 作业和构建流水线。为什么不配置这些插件来创建 复杂的构建流水线,以便在构建过程中自动触发 Jenkins 作业呢?