Jenkins 提供了平行建置的機制,可以有效縮短專案建置時間。透過設定安靜期,能避免頻繁的程式碼提交觸發過多的建置任務。SCM Checkout Retry Count 則可提升程式碼簽出的穩定性,避免因為網路等因素造成建置失敗。此外,Jenkins 也支援設定任務間的依賴關係,例如上游任務完成後才執行下游任務,確保建置流程的正確性。除了建置流程的最佳化,Jenkins 也允許開發者自訂工作空間目錄,方便管理建置產物。設定顯示名稱可以更清晰地識別不同的工作,而保留建置日誌則有助於追蹤建置過程和除錯。在使用 Git 作為版本控制系統時,需要正確設定 Git 儲存函式庫 URL 和認證資訊,才能順利下載程式碼。如果遇到 Jenkins 無法存取私有儲存函式庫的問題,可以透過建立全域認證並設定對應的工作認證來解決。此外,Windows 使用者也需要注意 Windows 認證管理器的設定,避免與 Jenkins 認證衝突。

平行執行與建置組態

在進行建置流程時,瞭解如何組態平行執行是非常重要的。平行執行可以大幅度減少建置時間,特別是在建置過程包含多個獨立階段時。透過啟用平行建置選項,您可以讓不同的建置階段同時執行,從而提高整體效率。

平行執行的優點

平行執行的主要優點在於它可以減少建置時間。當您有多個不相依的建置階段時,啟用平行執行可以讓這些階段同時進行,從而節省時間。這對於有長時間建置過程的專案尤其有益。

進階選項

點選「進階」按鈕可以檢視更多的組態選項。其中包括「安靜期」、「SCM Checkout Retry Count」等設定。

安靜期

安靜期是一個選項,當啟用後,新的建置任務不會立即觸發。相反,它會被新增到建置佇列中,並等待一段指定的時間後才開始執行。這個選項對於您想要在多個程式碼提交發生在同一時間時,讓建置過程等待一段時間以收集所有提交非常有用。

設定安靜期後,您可以指定建置任務在佇列中等待的時間長度。例如,如果您設定安靜期為5秒,建置任務將在佇列中等待5秒後才開始執行。

SCM Checkout Retry Count

當使用版本控制系統(如Git)時,如果第一次簽出程式碼失敗,Jenkins會標記該任務為失敗。透過設定SCM Checkout Retry Count,您可以指定Jenkins嘗試簽出程式碼的次數,以避免由於暫時性錯誤導致的任務失敗。

任務之間的依賴關係

在Jenkins中,您可以組態任務之間的依賴關係。例如,如果有一個任務A編譯Java應用程式並生成.class檔案,而另一個任務B使用這些.class檔案來建立.jar檔案,您可以組態任務B依賴於任務A。

上游和下游任務

在這種情況下,任務A被稱為任務B的上游任務,而任務B被稱為任務A的下游任務。您可以組態Jenkins以便當上游任務正在建置時,不要執行下游任務。

阻止建置

Jenkins提供了兩個選項來控制任務之間的依賴關係:

  1. 阻止建置當上游專案正在建置: 當上游任務正在建置時,不執行下游任務。
  2. 阻止建置當下游專案正在建置: 當下游任務正在建置時,不執行上游任務。

這些選項允許您細粒度地控制任務之間的依賴關係,從而更好地管理複雜的建置流程。

Jenkins 工作空間設定與原始碼管理

在 Jenkins 中,工作空間(Workspace)是指執行建置的目錄。如果 Jenkins 工作是從原始碼倉函式庫中簽出程式碼,則會在這個目錄中進行簽出。當建置開始執行時,Jenkins 會在 ${JENKINS_HOME}/workspace 目錄中建立一個以工作名稱為名的目錄。通常,${JENKINS_HOME} 位於 ${CurrentUser}/.jenkins

自訂工作空間

您可以透過修改工作空間目錄的位置來自訂工作空間設定。這對於其他工作需要使用此工作的產物且路徑為硬編碼的情況下尤其有用。例如,如果您有一個工作需要使用另一個工作的產物,但該產物的路徑是在另一個工作中硬編碼的話,修改工作空間目錄可以幫助您管理這些依賴關係。

修改工作空間目錄

假設您有一個工作名為 MyFirstJenkinsJob,您可以將其工作空間目錄設為 D:/MyFirstJenkinsJob。這樣,當您執行這個工作時,Jenkins 會在 D:/ 目錄下建立一個名為 MyFirstJenkinsJob 的目錄,並將其作為工作空間使用。

顯示名稱

在 Jenkins 工作設定的「一般」頁面中,您可以設定一個顯示名稱(Display Name)。這個名稱將在 Jenkins 的 Web UI 中顯示,代表您的工作。例如,您可以將顯示名稱設為 MyJob,這樣在 Jenkins 的儀錶板上,您的工作就會以 MyJob 的名稱出現。

顯示名稱與工作空間

需要注意的是,顯示名稱僅在 Web UI 中顯示,而工作空間目錄仍然使用工作的原始名稱。因此,如果您的工作名稱是 MyFirstJenkinsJob,而顯示名稱是 MyJob,則工作空間目錄仍然會被命名為 MyFirstJenkinsJob,而不是 MyJob

保留建置日誌

在「高階設定」頁面中,有一個選項允許您保留建置日誌。啟用此設定後,所有相關的建置日誌都會被保護,以免被日誌輪替(Log Rotation)過程自動刪除或壓縮。日誌輪替是一個自動化的過程,負責壓縮、刪除或郵寄 Jenkins 建置日誌,以便管理磁碟空間。

原始碼管理

在「一般」頁面的下一節是原始碼管理(Source Code Management)。如果您安裝了 Git 外掛程式,您就會看到 Git 選項。原始碼管理設定允許您指定 Git 倉函式庫的 URL,以便 Jenkins 可以下載最新的程式碼進行建置。

Git 倉函式庫 URL

您需要在「Repository URL」欄位中輸入您的 Git 倉函式庫 URL。這樣,當您執行 Jenkins 工作時,它就會下載最新可用的程式碼。如果您的 Git 倉函式庫是公開的,您不需要提供任何驗證資訊。但是,如果您的倉函式庫是私有的,您就需要提供必要的驗證資訊,例如使用者名稱/密碼、SSH 私鑰或 API 權杖,否則您會遇到驗證錯誤。

驗證錯誤

如果您沒有提供私有 Git 倉函式庫所需的驗證資訊,Jenkins 就會顯示一個驗證錯誤。這個錯誤通常發生在嘗試存取私有倉函式庫而沒有提供正確驗證資訊的情況下。

解決Jenkins存取私有儲存函式庫的認證錯誤

當Jenkins嘗試存取私有儲存函式庫時,可能會遇到認證錯誤。為瞭解決這個問題,我們需要建立一個全域認證專案(Global Credentials),其中包含所需的認證資訊。然後,我們需要在Jenkins工作的組態頁面中選擇這個認證專案並點選「應用」按鈕。

建立全域認證專案

  1. 前往Jenkins的認證管理頁面。
  2. 點選「新增認證」按鈕。
  3. 選擇「全域」作為認證型別。
  4. 輸入所需的認證資訊,例如Git使用者名稱和密碼。
  5. 點選「新增」按鈕以建立新的認證專案。

選擇認證專案

  1. 前往Jenkins工作的組態頁面。
  2. 在「認證」下拉選單中選擇剛剛建立的全域認證專案。
  3. 點選「應用」按鈕以儲存變更。

解決Windows認證管理器相關問題

在某些情況下,Windows認證管理器可能會干擾Jenkins存取私有儲存函式庫的能力。為瞭解決這個問題,我們需要檢查Windows認證管理器中是否已經儲存了Git使用者名稱和密碼。

  1. 開啟Windows控制台。
  2. 選擇「所有控制台專案」。
  3. 點選「認證管理器」。
  4. 檢查是否已經儲存了Git使用者名稱和密碼。
  5. 如果已經儲存,請刪除這些認證以避免幹擾Jenkins的認證機制。

透過建立全域認證專案和選擇正確的認證專案,我們可以解決Jenkins存取私有儲存函式庫的認證錯誤。同時,檢查和管理Windows認證管理器中的認證也可以幫助我們避免相關問題。

深入剖析Jenkins的建置組態、工作空間設定與版本控制整合後,可以發現,提升建置效率的關鍵在於掌握平行執行策略以及妥善管理任務間的依賴關係。透過「安靜期」和「SCM Checkout Retry Count」等進階選項,可以有效提升建置流程的穩定性和容錯能力。而自訂工作空間目錄則能解決不同任務間產物路徑硬編碼的相依性問題,提升建置流程的彈性。此外,正確設定和應用全域認證,並排除Windows認證管理器的潛在幹擾,是確保Jenkins順利存取私有儲存函式庫的關鍵步驟,避免出現惱人的驗證錯誤。玄貓認為,隨著DevOps理念的普及,精細化管理Jenkins的建置流程將成為提升軟體交付效率和品質的必要條件。未來,更智慧的任務協調、更自動化的組態管理以及更深度的版本控制整合將是Jenkins持續演進的重要方向。對於追求高效能DevOps的團隊而言,深入理解並善用這些功能將帶來顯著的競爭優勢。