1. 程式人生 > >Jenkins系列(三)----Maven專案配置詳解

Jenkins系列(三)----Maven專案配置詳解

接著上一節的專案配置頁面,我們來看看,具體有哪些配置選項:


可配置選項一共有九個,下面是他們的一些介紹

一、一般選項

可選配置如下


1.Github Project


2.Throttle builds(節流建立)


3.丟棄舊的構建


這決定了什麼時候,如果有的話,建立這個專案的記錄應該被丟棄。構建記錄包括控制檯輸出,歸檔工件以及與特定構建相關的任何其他元資料。


保留較少的構建意味著在配置系統螢幕中指定的構建記錄根目錄中將使用更少的磁碟空間。

Jenkins提供了兩個選項來確定什麼時候應該丟棄構建:


    1.建立年齡:如果達到一定年齡,丟棄建造;例如,七天。
    2.構建計數:如果已經存在一定數量的構建,則丟棄最舊的構建。

這兩個選項可以同時處於活動狀態,因此您可以保留構建14天,但最多隻能達到50個構建的限制。如果超過任一限制,則超出該限制的任何構建將被丟棄。

您還可以確保重要的構建始終保持不變,無論這裡的設定如何 - 單擊構建頁面上的“永久保持此構建”按鈕。
最後一個穩定和最後一次成功的構建也被排除在這些規則之外。


在高階部分中,可以指定相同的選項,但專門用於構建工件。如果啟用,構建工件將被丟棄,因為任何超過了定義的限制的構建都將被丟棄。建築本身仍將保留;只有相關的工件,如果有的話,將被刪除。


舉個例子,如果一個專案構建一些軟體併產生大量安裝程式,存檔,您可能希望始終保持原始碼控制的控制檯日誌和資訊提交,而對磁碟空間的原因,您可能希望只保留最後三個安裝建造。

這對於專案來說是有意義的,因為您可以通過構建相同的源控制提交來輕鬆地重新建立相同的工件。

注意,當配置更新時,Jenkins不會立即丟棄專案,或者一旦超過了配置的值;每次構建這個專案的時候,都要對這些規則進行評估。


4.引數化構建過程


引數允許您提示使用者輸入一個或多個輸入,這些輸入將被傳遞到構建中。例如,您可能有一個專案,它通過允許使用者上傳一個zip檔案並通過二進位制檔案進行測試來執行需求測試。這可以通過在這裡新增一個檔案引數來完成。

或者您可能有一個釋出軟體的專案,您希望使用者輸入與軟體一起上傳的釋出說明。這可以通過在這裡新增多行字串引數來完成。

每個引數都有一個名稱和某種值,這取決於引數型別。這些名稱/值對將出口作為環境變數時開始生成,可以生成配置的後續部分(如生成步驟)訪問這些值,例如使用${PARAMETER_NAME} 語法(或 %PARAMETER_NAME% on Windows)。

這也意味著這裡定義的每個引數都應該有唯一的名稱。

當一個專案被引數化時,通常的構建連結將被一個帶有引數連結的構建所代替,使用者將被提示為每個定義的引數指定值。如果他們選擇不輸入任何內容,那麼構建將以每個引數的預設值開始。

如果某個構建是自動啟動的,例如,如果由SCM觸發器啟動,則將使用每個引數的預設值。

當引數化構建在佇列中時,嘗試啟動同一專案的另一個構建只在引數值不同時才成功,或者如果需要啟用選項,則執行併發構建。

有關此功能的更多資訊,

請參見引數化構建文件。 

5.關閉構建


選中此選項時,將不會執行該專案的新版本。

當你想暫時阻止一個專案被建立時,這會很有幫助。例如,如果您的專案依賴於某些基礎設施(例如測試伺服器或原始碼儲存庫),並且您知道它將在一段時間內不可用,則可以禁用該專案,以防止在此期間不必要的構建失敗(以及任何相應的通知)。

您還可以通過單擊該專案主頁上的禁用專案(或啟用專案)按鈕來禁用(或重新啟用)此專案。

6.在必要的時候併發構建



選中此選項時,可以並行執行此專案的多個構建。

預設情況下,一次只執行一個專案的單個構建 - 任何其他開始構建專案的請求將保留在構建佇列中,直到第一次構建完成。


這是一個安全的預設值,因為專案通常可能需要對某些資源(如資料庫或硬體)的獨佔訪問。

但是,啟用此選項後,如果有足夠的構建可執行程式可以處理此專案,則該專案的多個構建將並行進行。如果任何時候沒有足夠的可用執行程式,則正常情況下,構建佇列中將繼續保留進一步的構建請求。

啟用併發構建對於執行冗長測試套件的專案很有用,因為它允許每個構建包含較少數量的更改,而總週轉時間會減少,因為後續構建不需要等待以前的測試執行完成。


此功能對於引數化專案也很有用,其各自的構建執行(取決於所使用的引數)可以完全獨立於彼此。

每個併發執行的構建都發生在其自己的構建工作空間中,與任何其他構建隔離。預設情況下,Jenkins將“@ <num>”附加到工作區目錄名稱,例如“@ 2”。


可以通過在啟動Jenkins時設定hudson.slaves.WorkspaceList Java系統屬性來更改分隔符“@”。例如,“hudson.slaves.WorkspaceList = - ”會將分隔符更改為連字元。


有關設定系統屬性的更多資訊,請參閱wiki頁面

但是,如果啟用“使用自定義工作區”選項,則所有構建將在同一工作區中執行。因此,需要謹慎,因為多個構建可能會同時更改相同的目錄。

二、原始碼管理


支援Git,Subversion兩種原始碼管理方式。

1、Git


使用方式如下:

首先輸入Git庫地址,然後新增憑證,選擇連線型別


其中"Kind"中可選的項有:


然後點選"Add"進行新增.


2.Subversion


使用方式和上面的Git差不多。

三、構建觸發器


1.在構建快照依賴時構建


如果檢查過,Jenkins將解析這個專案的POMs,並檢視它的快照依賴項是否也建立在這個Jenkins上。如果是這樣,Jenkins將建立構建依賴關係,以便在建立依賴項作業和建立一個新的快照jar時,Jenkins將計劃構建這個專案。


這對於自動執行持續整合很方便。Jenkins將檢查POM中< dependency >元素的快照依賴關係,以及<plugin> and <extension>在POM中的應用。

2.觸發遠端構建 (例如,使用指令碼)


如果要通過訪問特殊的預定義URL(方便指令碼)觸發新構建,請啟用此選項。

此功能的一個典型示例是從原始碼控制系統的鉤子指令碼(當某人剛剛提交到儲存庫中的更改)或從解析源控制元件電子郵件通知的指令碼觸發新構建時。

您需要以字串的形式提供授權令牌,以便只有那些知道它的人才能夠遠端觸發此專案的構建。

3.在構建其他專案之後構建


設定觸發器,以便在其他一些專案完成構建時,為這個專案安排一個新的構建。例如,在構建完成後執行一個廣泛的測試是很方便的。

此配置補充了上游專案“後構建操作”中的“構建其他專案”部分,但在配置下游專案時更可取。

4.定期構建


提供類似cron的功能來定期執行此專案。

該功能主要用於使用Jenkins作為cron替換,並不適合連續構建軟體專案。 當人們首先開始持續整合時,他們通常習慣於定期安排構建,如每晚/每週使用此功能。 然而,持續整合的一點是,一旦進行更改即可開始構建,以便對變更提供快速反饋。 為此,您需要將SCM更改通知連線到Jenkins

所以,在使用這個功能之前,停下來問問自己是否真的是你想要的。

5.對於GIT Scm輪詢的GitHub鉤子觸發器


如果jenkins從在Git SCM部分中定義的repo中獲得PUSH GitHub鉤子,它將觸發Git SCM輪詢邏輯。因此,輪詢邏輯實際上屬於Git SCM。

6.調查SCM


配置Jenkins來輪詢SCM中的更改。

請注意,這對CVS來說是一項昂貴的操作,因為每次輪詢都需要Jenkins掃描整個工作區並與伺服器進行驗證。 考慮設定“推”觸發器,以避免此開銷,如本文件所述

四、構建環境


1.在構建開始之前刪除工作區


如果選中,Jenkins將解析此專案的POM,並檢視其快照依賴關係是否也建立在此Jenkins上。 如果是這樣,Jenkins將建立構建依賴關係,以便每當構建依賴關係作業並建立一個新的SNAPSHOT jar時,Jenkins將安排此專案的構建。

這對於自動執行持續整合是方便的。 Jenkins將從POM中的<dependency>元素以及POM中使用的<plugin>和<extension>檢查快照依賴關係。

如果此行為有問題,請取消選中此選項。

其中: Schedule build when some upstream has no successful builds 


如果檢查,Jenkins將安排構建,即使某些上游專案沒有成功構建。 如果沒有檢查,如果任何其他上游專案在這個Jenkins上沒有成功建成,Jenkins將不會安排一些SNAPSHOT的構建。

這對於自動執行連續整合是方便的,當專案有很多上游時,即使在其他上游已經成功建成的情況下,也可以防止觸發下游的構建。 如果構建被清理或在重新啟動或升級後沒有執行,Jenkins可能不知道有些上游的成功構建。 同時,該專案可以構建,因為上游工件存在於MAVEN儲存庫中。

此行為可能會觸發額外的構建。 如果此行為有問題,請取消選中此選項。

2.如果它卡住了,就中止它


3.將時間戳新增到控制檯輸出


4.使用保密文字或檔案


允許您獲取各種憑據,並從shell構建步驟等中使用它們。 每個繫結將定義一個環境變數。

五、釋出之前的步驟


六、構建


Root POM:

如果您的工作區的頂級pom.xml位於第1個模組的根目錄之外的某個地方,請在此處指定路徑(相對於模組根目錄),例如 parent / pom.xml。


如果為空,則預設為pom.xml

Goals and options:

指定要執行的目標,例如"clean install" 或 "deploy". 此欄位也可以接受Maven的任何其他命令列選項,例如"-e" 或 "-DskipTests=true".

七、釋出之後的步驟


八、構建設定


九、構建後操作