1. 程式人生 > >Jenkins學習(四)job介面詳解

Jenkins學習(四)job介面詳解

一.建立job

job安裝後,點選new item會出現如下介面,這個介面用於建立不用風格的job
job建立介面

1.Freestyle project
這個是jenkins的基礎功能,可以用它來執行各種構建任務,他只能構建在一個電腦上,如果沒有太多的需求,這個job基本夠用了,它包含了所有基礎功能.
2.Pipeline
真實的工作環境有很多job,比如先編譯,然後執行靜態程式碼檢查、單元測試、然後部署伺服器、伺服器重啟、進行ui測試等。我們需要對這些job進行一些設定將它們的上下游關係配置好。這個時候就需要pipeline配置了.詳細的可以參考這篇文章

3.External job
用來監視外部執行的

job.

4.Multi-configuration project
可以讓job跑在不同的機器上.這個需要新增機器(節點),流程的話可以參考這篇文章

後面還有一些,這裡不一一介紹了,有需要的可以自己google.
我們選擇最基礎的freestyle建立一個job,點選ok按鈕.

二.配置介面

這裡寫圖片描述

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:

可以設定使用者可輸入的引數,沒有輸入則使用預設值,有字串,多行字串,布林值等可以設定.wiki
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

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更方便些,如果提交頻繁,則這個觸發就會頻繁,看業務需要設定.

3.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,輸入需要的使用者名稱,密碼證書等就可以了

4.Build(構建)

這裡寫圖片描述

這個可以執行多種命令,如window的批處理,shell等一般shell就可以了.平時的自定義編譯命令,打包等等,都可以寫在這裡.jenkins推薦將過長的命令寫到下載的原始碼裡,由這個裡面的shell命令呼叫.jenkins執行的時候會預設把所有的命令都打印出來,這樣方便除錯.可以建立多個build step,這些step是序列的,一個faile,,後面的step都不會執行了.

5.Post-build Actions

這裡寫圖片描述

可以根據build的結果設定傳送郵件,打包,執行其他任務等等.build成功還是失敗都會走到這一步.

三.總結

jenkins很強大,目前剛入門.他的作用不僅僅是編譯程式碼,還可以執行其他任意定時任務,監控任務.配合分散式部署,可以實現大規模的協作使用.後面將對jenkins的外掛開發和原始碼結構進行分析.