Jenkins Job 類型
1.Freestyle project
這個是jenkins的基礎功能,可以用它來執行各種構建任務,他只能構建在一個電腦上,如果沒有太多的需求,這個job基本夠用了,它包含了所有基礎功能.
2.Pipeline
真實的工作環境有很多job,比如先編譯,然後執行靜態代碼檢查、單元測試、然後部署服務器、服務器重啓、進行ui測試等。我們需要對這些job進行一些設置將它們的上下游關係配置好。這個時候就需要pipeline配置了.詳細的可以參考這篇文章
3.External job
用來監視外部執行的job.
4.Multi-configuration project
可以讓job跑在不同的機器上.這個需要添加機器(節點),流程的話可以參考這篇文章
5.文件夾
這是一種可以把多個項目歸類到一起的方式,而不是項目本身的類型。請注意,這並不像Jenkins儀表板上傳統的“視圖”選項卡那樣,讓你按照項目列表篩選。更確切地說,它就像操作系統中的目錄文件夾。文件夾名稱是項目路徑的一部分。
Job配置界面
1.General:一般設置
Project name:項目名稱
Description:項目描述,多人寫作請一定要加上
Discard old builds:該選項配置如何拋棄舊的構建
每次構建相關的文件都會保存下來,將會漸漸耗光磁盤空間,爲此提供兩種方式供選擇:
-
- Days to keep builds:如果其值爲非空的N,就留N天之內的構建文件
-
- Max # of builds to keep:如果#爲非空,就公保留最多#個最近構建的相關文件
-
- days to keep artifcts 產品保留時間,但是log,歷史記錄會保留
-
- builds to keep with artifacts 保留最近幾個構建的產品
- This project is parameterized:可以設置用戶可輸入的參數,沒有輸入則使用默認值,有字符串,多行字符串,布爾值等可以設置.點擊瞭解更多
- Throttle builds:設置兩個build任務之間最小間隔和同一個時間內最大任務數量
- Disable this project:停止這個job,當例如源碼不可用時,可以暫時勾選這個停止build
- Execute concurrent builds if necessary: 如果可以會併發執行build.勾選上後.如果有足夠的線程池則會併發,否則不會.併發構建會在不同的workspace中.如果用戶自己設置的workspace則不會分開,這個是有風險的.
- Restrict where this project can be run: 設置是否必須在某個機器上運行.如果是分佈式部署或者遷移job,注意移除或修改此項配置
- Quiet period:配置等待未發生提交變化的時間. 由於 jenkins檢測到代碼變化時,就自動立即構建,但是有些情況下, 需要多次提交代碼到版本控制系統上,此時,可能發生代碼還沒完整提交就開始構建,造成構建失敗,爲防止此種情況發生,可以配置值X,則jenkins會在代碼變化後等待X秒,如果沒在發生代碼提交,纔開始構建,保證穩定性。
- Block build when downstream project is building:該選項當多個相關聯的項目由一個提交所影響,但是它們必須以一個指定的順序進行構建的時候非常有用。當你選擇這個選項的時候,Jenkins將會在啓動這個構建之前,完成任何上游構建Job; 例如使用pipes的時候
2.Source Code Management:源碼管理
通過這裏設置源碼管理路徑,這個與後面的輪詢源碼變化觸發編譯是成對的.不想設置或者後面有腳本可以自主管理可以選擇none
3. Build Triggers:構建觸發器
- Trigger builds remotely (e.g., from scripts):外部通過url命令觸發,拼接token和url就可以進行遠程觸發了
- Build after other projects are built:監控其他job的構建狀態,觸發此job.如監聽代碼提交,然後觸發UITest,靜態分析等.
- Build periodically:定時觸發.選擇 Build periodically,在 Schedule 中填寫 0 * * * _.第一個參數代表的是分鐘 minute,取值 0~59;第二個參數代表的是小時 hour,取值 0~23;第三個參數代表的是天 day,取值 1~31;第四個參數代表的是月 month,取值 1~12;最後一個參數代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。所以 0 _* * * 表示的就是每個小時的第 0 分鐘執行一次構建。舉個例子:每週六10點構建 0 10 * * 6,0-0分鐘, 10-10點 _-任意天 _-任務月份 6-週六, 0可以改爲H.
- Poll SCM:定時感知代碼分支是否有變化,如果有變化的話,執行一次構建.示例:H/5 * * * * 每五分鐘去檢查一下遠程倉庫,看代碼是否發生變化。
GitHub hook trigger for GITScm polling:hookplugin檢測到源碼的push操作觸發構建,感覺Poll SCM更方便些,如果提交頻繁,則這個觸發就會頻繁,看業務需要設置.
4.Build Environment(設置構建環境)
- Delete workspace before build starts:默認刪除所有的,也可以設置刪除特定的文件
-
- Patterns for files to be deleted:正則匹配刪除哪些文件
-
- Apply pattern also on directories:規則是否也應用到文件夾
-
- Check parameter:是否刪除,是個bool值,true則刪除,false不刪除.爲毛感覺這個有點雞肋
-
- External Deletion Command:執行外部刪除命令
-
- Abort the build if it’s stuck:構建阻塞的時候,根據超時策略處理.
-
- Time-out strategy:超時策略,有絕對時間,相對時間,根據以前的構建時間判斷等
-
- Time-out variable:超時時間
-
- Time-out actions:超時後的處理,如終結,faile調或者寫描述
-
- Add timestamps to the Console Output:在輸出界面添加時間戳
-
- Use secret text(s) or file:使用密文,用於全局性的管理密碼等,勾選後會在下方出現Binding,輸入需要的用戶名,密碼證書等就可以了
-
5.Build(構建)
這個可以執行多種命令,如window的批處理,shell等一般shell就可以了.平時的自定義編譯命令,打包等等,都可以寫在這裏.jenkins推薦將過長的命令寫到下載的源碼裏,由這個裏面的shell命令調用.jenkins執行的時候會默認把所有的命令都打印出來,這樣方便調試.可以創建多個build step,這些step是串行的,一個faile,,後面的step都不會執行了.
6.Post-build Actions
可以根據build的結果設置發送郵件,打包,執行其他任務等等.build成功還是失敗都會走到這一步.