在現今 Web 應用程式開發中,持續整合與持續交付(CI/CD)至關重要。本文將引導您使用 Jenkins 建立一個最佳實務的工作流程,自動化管理 Web 應用程式專案的測試、建置與佈署流程。從建立 Jenkins 工作開始,逐步設定建置觸發器、批次命令執行 Selenium 測試,最後設定擴充電子郵件通知,確保團隊能即時掌握專案狀態。我們將深入探討如何設定引數化建置、整合 Selenium 測試框架,以及如何客製化郵件通知內容。

Jenkins工作流程最佳實踐:管理Web應用程式專案

在管理Web應用程式專案時,Jenkins是一個強大的工具,可以幫助您自動化測試、構建和佈署過程。以下是如何建立Jenkins工作流程來管理Web應用程式專案的步驟。

建立Jenkins工作

首先,您需要建立一個新的Jenkins工作。這可以透過點選Jenkins儀錶板上的「新建工作」按鈕來完成。然後,選擇「自由式工作」作為工作型別。

組態工作觸發器

在工作組態頁面上,滾動到「構建觸發器」部分。取消選擇「Poll SCM」核取方塊,因為我們不想在主分支合併時觸發此工作。此工作將從上游工作呼叫。

新增構建步驟

點選「新增構建步驟」按鈕,然後選擇「執行Windows批命令」選項。我們將建立多個批命令步驟來安裝和執行Selenium測試。

第一步:安裝虛擬環境

第一個批命令步驟安裝虛擬環境Python套件。

pip install virtualenv

第二步:建立虛擬環境

第二個批命令步驟建立一個名為「TestCalculatorWebApplication」的虛擬環境。

virtualenv TestCalculatorWebApplication

第三步:啟動虛擬環境

第三個批命令步驟啟動建立的虛擬環境。

TestCalculatorWebApplication\Scripts\activate

第四步:安裝Selenium函式庫

第四個批命令步驟安裝Selenium Python函式庫。

pip install selenium

第五步:安裝Pytest框架

第五個批命令步驟安裝Pytest框架函式庫。

pip install pytest

第六步:安裝pytest-html函式庫

第六個批命令步驟安裝pytest-html函式庫。

pip install pytest-html

第七步:執行測試

第七個批命令步驟檢查TestType變數的值。如果值為「AllTests」,則執行所有測試並將報告儲存在名為「AllTests.html」的檔案中。如果值不是「AllTests」,則執行測試並將結果儲存在具有相應名稱的檔案中。

if %TestType%==AllTests (
    pytest --html=AllTests.html
) else (
    pytest -m %TestType% --html=%TestType%.html
)

組態擴充套件電子郵件通知

要將Selenium測試執行報告透過電子郵件傳送,您需要組態擴充套件電子郵件通知設定。這可以透過安裝電子郵件擴充套件Jenkins外掛並組態擴充套件電子郵件通知設定來完成。

內容解密:
  • Jenkins工作流程可以幫助您自動化Web應用程式專案的測試、構建和佈署過程。
  • 工作觸發器可以組態為在特定事件發生時觸發工作,例如合併請求。
  • 構建步驟可以用於安裝和執行Selenium測試。
  • 擴充套件電子郵件通知可以用於將測試執行報告透過電子郵件傳送。

圖表翻譯:

@startuml
:建立Jenkins工作; --> :組態工作觸發器;
:B; --> :新增構建步驟;
:C; --> :執行Selenium測試;
:D; --> :組態擴充套件電子郵件通知;
:E; --> :傳送測試執行報告;
@enduml

此圖表顯示了建立Jenkins工作流程來管理Web應用程式專案的過程。從建立工作到組態工作觸發器、新增構建步驟、執行Selenium測試和組態擴充套件電子郵件通知,每一步都對於確保專案的穩定性和可測試性至關重要。

安裝電子郵件擴充外掛

為了在Jenkins中實作電子郵件通知功能,首先需要安裝電子郵件擴充外掛。有關如何安裝外掛的詳細步驟,請參考第5章。

組態擴充電子郵件

步驟1:組態擴充電子郵件設定

點選「管理Jenkins」➤「組態系統」選單選項,然後滾動頁面到「擴充電子郵件通知」部分,這部分只有在安裝了電子郵件擴充外掛的情況下才會出現。

您將組態與之前為基本電子郵件通知所組態的相同的Gmail設定。以下是快速參考的設定截圖。

步驟2:組態電子郵件設定

您可以在「預設收件人」欄位中組態一個預設的電子郵件地址列表,以便傳送電子郵件通知。我已經在此欄位中組態了我的兩個電子郵件地址。

如果您在「預設收件人」列表中組態了電子郵件地址,但不想將電子郵件通知傳送給其中一些地址,您可以將這些地址新增到「排除收件人」列表中。

「預設主題」欄位列出了Jenkins環境變數,例如PROJECT_NAME(傳回作業名稱)、BUILD_NUMBER(當前建置編號)和BUILD_STATUS(建置狀態,如成功或失敗)。

「預設內容」欄位允許您組態電子郵件中的預設訊息。

點選「儲存」按鈕。

注意:在此部分組態的設定是全域性設定,適用於所有具有電子郵件通知的作業。請勿在任何Jenkins作業中組態特定於作業的詳細資訊或您正在建置的應用程式的詳細資訊。

步驟3:在TestCalculatorWebApplication作業的後建置部分新增電子郵件通知步驟

進入TestCalculatorWebApplication作業。滾動到「後建置動作」部分(見下圖)。點選「新增後建置動作」按鈕,然後選擇「可編輯的電子郵件通知」。在此,您可以組態Jenkins作業特定的詳細資訊,以便在電子郵件通知中傳送。

我已經在「專案收件人列表」欄位中組態了我的電子郵件地址,以便從此作業接收電子郵件通知。注意,如果您在此處設定了一個電子郵件地址列表,它將覆寫您之前組態的全域性「預設收件人」設定。

內容解密:

以上步驟展示瞭如何在Jenkins中安裝和組態電子郵件擴充外掛,以實作電子郵件通知功能。透過這些步驟,您可以根據自己的需求自定義電子郵件通知的內容和收件人。

自動化測試與通知設定

在 Jenkins 中,為了實作自動化測試和通知的功能,我們需要設定一個 parameterized free-style job。這個 job 會根據使用者選擇的引數執行不同的測試任務,並在任務完成後傳送電子郵件通知。

設定 Parameterized Free-Style Job

首先,建立一個新的 free-style job,命名為 BuildAndDeployCalculatorWebApplication。然後,點選「Configure」按鈕進入 job 的設定頁面。

在「General」部分,選擇「This project is parameterized」,然後新增一個「Choice Parameter」,命名為 TypeOffTestsToRun,並設定其選項為 RegressionTestSmokeTest

接下來,在「Build」部分,新增一個「Execute shell」步驟,輸入以下命令:

# 執行 Selenium 測試
java -jar selenium.jar -htmlSuite *firefox ${TypeOffTestsToRun}

這個命令會根據使用者選擇的 TypeOffTestsToRun 引數執行不同的 Selenium 測試任務。

設定電子郵件通知

在「Post-build Actions」部分,新增一個「Editable Email Notification」步驟。設定「Default Subject」欄位為 ${JOB_NAME} - ${BUILD_NUMBER} - ${TypeOffTestsToRun},這將包含 job 名稱、build 號碼和測試型別等資訊。

設定「Default Content」欄位為:

請找到 E-E Selenium 測試報告檔:${TypeOffTestsToRun}Result.html 附加在此電子郵件中

這將包含測試報告檔的名稱和路徑。

在「Attachments」欄位中,輸入 ${WORKSPACE}/**/${TypeOffTestsToRun}Result.html,這將包含測試報告檔的路徑。

自動觸發 Job

點選「Add Trigger」按鈕,在「Triggers」部分新增一個「GitHub hook trigger for GITScm polling」步驟。這將使得當 GitHub 程式碼函式庫發生變化時,自動觸發 job 執行。

執行 Job

回到 Jenkins 首頁,點選「BuildAndDeployCalculatorWebApplication」job 的「Build Now」按鈕。這將彈出一個對話方塊,要求使用者選擇 TypeOffTestsToRun 引數的值。選擇「RegressionTest」後,點選「Build」按鈕。

Job 執行完成後,將會觸發下游 job 執行 UI 自動化測試,並在測試完成後傳送電子郵件通知。

修改 Calculator.html

修改 Calculator.html 檔案中的 title 顏色為紅色(之前為綠色)。然後,提交變化到 GitHub master 分支。這將觸發上游 job 執行,並在 job 完成後傳送電子郵件通知。

檢視電子郵件通知

點選電子郵件通知中的連結,檢視 RegressionTestResult.html 報告檔。這將包含 Selenium 測試的結果和詳細資訊。

從技術架構視角來看,本文介紹的Jenkins工作流程最佳實踐,有效地整合了自動化測試、構建和佈署流程,對於Web應用程式專案的持續整合與持續交付至關重要。透過自由式工作組態,結合批次命令執行Selenium測試,並利用引數化建置觸發不同測試任務,展現了Jenkins高度的彈性與客製化能力。然而,文中對於跨平臺建置的相容性並未深入探討,例如在Linux或macOS環境下的Shell指令碼組態,這在實際應用中需要額外考量。此外,安全性的考量也至關重要,例如敏感資訊的加密儲存和存取控制等,應在實務佈署中納入規劃。展望未來,隨著容器化技術的普及,將Jenkins與Docker、Kubernetes等技術整合,將進一步提升建置效率和資源利用率,同時也更易於實作跨平臺佈署和管理。對於追求自動化和效率的開發團隊而言,持續精進Jenkins的應用技巧,並整合新興技術,將是保持競爭力的關鍵所在。玄貓認為,Jenkins作為CI/CD領域的成熟工具,仍將持續扮演重要角色,但團隊也應關注新一代CI/CD工具的發展趨勢,保持技術敏銳度,才能在快速變化的技術環境中保持領先。