在現代軟體開發流程中,持續整合與持續交付(CI/CD)至關重要。本文將示範如何利用 Jenkins 建立自動化Pipeline,將網頁應用程式自動佈署至伺服器,並執行相應的測試案例。此流程包含設定 Git 儲存函式庫、組態 Jenkins 工作、以及使用引數化建置觸發器等技術,以確保程式碼的穩定性和可靠性。我們將使用一個計算器網頁應用程式作為範例,逐步講解如何設定 Jenkins 工作,自動抓取程式碼更新、佈署應用程式到 IIS 伺服器,並根據不同的測試需求執行對應的測試案例。
將專案推播到GitHub儲存函式庫
在GitHub上,點選右上角的個人頭像,然後選擇「Settings」選單,如圖15-8所示。
圖15-8. GitHub的Settings選單
接下來,點選左側選單中的「SSH and GPG keys」選項,如圖15-9所示。
圖15-9. GitHub的Public Profile頁面
這將開啟一個新頁面,包含「New SSH Key」按鈕,用於新增新的SSH金鑰。點選此按鈕,將顯示如圖15-10所示的頁面。
圖15-10. 新增公鑰的頁面
將公鑰複製到「Key」欄位中,然後點選「Add SSH Key」按鈕。
步驟6:提交計算器網頁應用程式到本地儲存函式庫的主分支
首先,使用cd命令進入專案目錄。然後,執行以下命令:
git init
這將初始化一個新的Git儲存函式庫。
接下來,使用git add命令將整個目錄新增到暫存區:
git add.
然後,提交專案到主分支:
git commit -m "提交計算器網頁應用程式"
我執行了以下命令:
git commit -m "提交CalculatorWebApp專案"
如果未指定分支,則變更將提交到主分支。
步驟7:推播主分支
使用以下命令推播主分支到遠端儲存函式庫:
git push origin master
這將更新遠端儲存函式庫的主分支。
內容解密:
以上步驟展示瞭如何將計算器網頁應用程式提交到GitHub儲存函式庫。首先,初始化一個新的Git儲存函式庫,然後新增整個目錄到暫存區。接下來,提交專案到主分支,並推播主分支到遠端儲存函式庫。
圖表翻譯:
  flowchart TD
    A[初始化Git儲存函式庫] --> B[新增整個目錄到暫存區]
    B --> C[提交專案到主分支]
    C --> D[推播主分支到遠端儲存函式庫]
此圖表展示了提交計算器網頁應用程式到GitHub儲存函式庫的步驟。首先,初始化一個新的Git儲存函式庫,然後新增整個目錄到暫存區。接下來,提交專案到主分支,並推播主分支到遠端儲存函式庫。
將程式碼推播到遠端儲存函式庫
要將程式碼推播到遠端儲存函式庫,首先需要取得儲存函式庫的SSH URL。這可以在儲存函式庫頁面上找到,通常有一個「SSH」按鈕,點選後會顯示SSH URL。複製這個URL後,回到命令提示符,執行git push <SSH URL>命令。例如,如果SSH URL是git@github.com:username/repository.git”,則執行git push git@github.com:username/repository.git master`。
在執行推播命令時,可能會要求輸入私鑰密碼。輸入密碼後,程式碼應該就能成功推播到遠端儲存函式庫。為了確認,回到GitHub儲存函式庫頁面,重新整理頁面,應該就能看到最新的程式碼已經被推播上去了。
如果在使用SSH URL執行推播命令時遇到「Permission denied」錯誤,可能需要檢查並修改SSH設定。具體來說,如果在(user.name)\.ssh\config檔案中設定了私鑰檔案路徑,但仍然遇到錯誤,可以嘗試刪除(user.name)\.gitconfig檔案中的 [core] 區段的 sshCommand 設定。
將Selenium Python自動化專案推播到GitHub
現在,讓我們建立一個新的私人儲存函式庫,並將Selenium Python自動化專案推播到GitHub上。假設已經建立了一個名為TestWebApplicationWithSeleniumPythonTests的儲存函式庫,並成功推播了專案。
建立引數化自動觸發的Jenkins Freestyle工作
接下來,我們將建立兩個引數化的Jenkins Freestyle工作:
- 
BuildAndDeployCalculatorWebApplication(上游工作): - 當主分支的程式碼發生變化時觸發此工作。
- 工作內容包括提取最新程式碼變化、複製Calculator.html到IIS網站伺服器以佈署最新的網頁應用程式,然後呼叫另一個引數化工作TestCalculatorWebApplication。
 
- 
TestCalculatorWebApplication(下游工作): - 由上游工作呼叫。
- 這個工作負責測試網頁應用程式。
 
內容解密:
import os
# 定義SSH URL和本地倉函式庫路徑
ssh_url = "git@github.com:username/repository.git"
local_repo_path = "/path/to/local/repository"
# 執行git push命令
os.system(f"git push {ssh_url} master")
圖表翻譯:
  flowchart TD
    A[取得SSH URL] --> B[執行git push命令]
    B --> C[輸入私鑰密碼]
    C --> D[確認程式碼推播成功]
這些工作的建立和組態將有助於自動化網頁應用程式的佈署和測試流程,提高開發效率和程式碼品質。
自動化測試工作流程設計
在軟體開發過程中,自動化測試是一個非常重要的環節。它可以幫助我們快速地驗證軟體的功能和效能,從而提高軟體的品質和可靠性。在這個章節中,我們將介紹如何使用Jenkins來設計一個自動化測試工作流程。
安裝Parameterized Trigger Plugin
首先,我們需要安裝Parameterized Trigger Plugin,這個外掛可以讓我們從一個工作傳遞引數到另一個工作。為了安裝這個外掛,我們需要先安裝Maven Integration plugin,這是Parameterized Trigger plugin的依賴外掛。
建立BuildAndDeployCalculatorWebApplication工作
接下來,我們需要建立一個新的自由式工作,名為BuildAndDeployCalculatorWebApplication。這個工作是引數化的,所以我們需要勾選"This project is parameterized"的checkbox。
在這個工作中,我們需要建立一個引數來儲存Calculator.html檔案的佈署路徑。這樣,如果我們需要將Calculator.html檔案佈署到不同的路徑時,我們就不需要修改build步驟了。
建立String Parameter
為了建立一個引數,我們需要點選"Add Parameter"按鈕。然後,選擇"String Parameter"選項,並輸入所需的引數詳細資訊。
例如,我們可以輸入"CalculatorWebApplicationDeploymentDirectory"作為名稱,並輸入"D:\JenkinsBookExamples\DeployedCalculatorWebApp"作為預設值。
建立Choice Parameter
接下來,我們需要建立一個選擇引數,名為TypeOfTestsToRun,具有三個值:RegressionTest、SmokeTest和AllTests。根據選擇的值,這個工作將會要求下游工作執行特定的測試集合。預設值應該是AllTests。
設定Git Repository
然後,我們需要設定Git repository的SSH URL和SSH憑證。並且,選擇master分支。
設定Poll SCM
接下來,我們需要設定Poll SCM的頻率為每5分鐘一次。
新增Build步驟
最後,我們需要新增一個build步驟,點選"Add Build Step"按鈕,並選擇"Execute Windows Batch Command"選項。
例如,我們可以新增三個Windows批次命令,如下所示:
echo "Starting build and deploy process"
git clone https://github.com/JenkinsBookCalculatorWebApplication.git
mvn clean package
執行工作流程
現在,我們已經建立了一個自動化測試工作流程。當我們執行這個工作流程時,Jenkins將會從Git repository中提取最新的程式碼,執行特定的測試集合,並將測試報告傳送到指定的郵件地址。
Mermaid圖表
  graph LR
    A[開始] --> B[提取程式碼]
    B --> C[執行測試]
    C --> D[傳送測試報告]
    D --> E[結束]
圖表翻譯
此圖表展示了自動化測試工作流程的執行過程。首先,Jenkins從Git repository中提取最新的程式碼。然後,根據選擇的測試型別,執行相應的測試集合。最後,將測試報告傳送到指定的郵件地址。
建立Jenkins工作以管理Web應用程式專案
在本章中,我們將探討如何建立Jenkins工作以管理Web應用程式專案。具體來說,我們將建立兩個工作:一個用於佈署計算器Web應用程式,另一個用於測試計算器Web應用程式。
步驟1:建立佈署計算器Web應用程式的工作
首先,讓我們建立一個工作來佈署計算器Web應用程式。這個工作將從原始碼倉函式庫中克隆程式碼,然後將其佈署到伺服器上。
- 建立一個新的自由式工作,並命名為"DeployCalculatorWebApplication"。
- 在工作組態頁面中,滾動到"構建"部分,並點選"增加構建步驟"按鈕。
- 選擇"執行Windows批命令"作為構建步驟。
- 在批命令中,輸入以下命令:
rd /s /q CalculatorWebApplication
mkdir CalculatorWebApplication
copy src\main\webapp\Calculator.html CalculatorWebApplication
這些命令將刪除現有的CalculatorWebApplication目錄,建立一個新的目錄,然後將Calculator.html檔案從原始碼倉函式庫中複製到新的目錄中。
注意:在批命令中,需要使用相對路徑來存取Calculator.html檔案,因為Jenkins工作空間目錄是作為工作的工作目錄。
步驟2:新增下游工作觸發器
接下來,讓我們新增一個下游工作觸發器,以便在佈署工作完成後觸發測試工作。
- 滾動到"後置動作"部分,並點選"增加後置動作"按鈕。
- 選擇"觸發引數化構建在其他專案上"作為後置動作。
- 輸入下游工作的名稱,在本例中為"TestCalculatorWebApplication"。
- 選擇"穩定或不穩定但未失敗"作為觸發條件,這樣即使構建不穩定,也會觸發測試工作。
- 新增一個引數,以便將值傳遞給下游工作。點選"增加引數"按鈕,並選擇"預定義引數"。
- 建立一個名為TestType的變數,其值為$(TypeOfTestsToRun),這將是從選擇引數中選擇的值,並將其傳遞給下游工作。
步驟3:建立測試計算器Web應用程式的工作
現在,讓我們建立一個工作來測試計算器Web應用程式。這個工作將從原始碼倉函式庫中克隆測試程式碼,然後執行測試。
- 建立一個新的自由式工作,並命名為"TestCalculatorWebApplication"。
- 勾選"This project is parameterized"選項,因為這個工作需要接收從上游工作傳遞過來的引數。
- 點選"增加引數"按鈕,並選擇"字串引數"。
- 將引數名稱設為TestType,這與上游工作中設定的引數名稱相同。
- 將預設值設為"AllTests"。
- 滾動到"原始碼管理"部分,並選擇Git作為原始碼管理系統。
- 輸入TestWebApplicationWithSeleniumPythonTest GitHub倉函式庫的SSH URL,並選擇適當的憑據。
- 保留master分支不變。
注意:雖然我們使用了SCM倉函式庫,但我們並沒有檢查出任何特定的更改。
從技術架構視角來看,本文介紹瞭如何利用Jenkins和Git搭建一個自動化的網頁應用程式佈署和測試流程。透過建立兩個互相協作的Jenkins工作,分別負責佈署和測試,實作了程式碼修改後自動觸發佈署和測試的流程。分析段落詳細說明瞭每個工作的組態細節,包括引數化構建、批次命令執行、Git儲存函式庫設定、SCM輪詢以及上下游工作觸發等關鍵步驟。然而,文章並未深入探討不同測試型別(RegressionTest、SmokeTest、AllTests)的具體實施方案以及如何將測試結果整合到Jenkins的回饋機制中,這對於實踐落地至關重要。展望未來,隨著DevOps理念的普及,Jenkins與其他工具(如Docker、Kubernetes)的整合將成為趨勢,實作更全面的自動化流程,涵蓋從程式碼構建、測試、佈署到監控的完整生命週期。對於希望提升軟體交付效率和品質的團隊,建議深入研究Jenkins Pipeline以及相關外掛,構建更靈活、可擴充套件的CI/CDPipeline。
 
            