持續集成高級篇之Jenkins資源調度

系列目錄html

以前的示例咱們主要關注點在於功能的實現,都是在一個節點的完成了.有了多個節點後,必須涉及到資源的調度問題.本節咱們講解在建立任務時與資源調度的有關選項以及一些平時沒有注意到的但在生產環境須要精細控制的選項.linux

咱們隨便建立一個自由式風格任務,這裏主要講解General裏的一些選項git

Restrict where this project can be run

限制項目運行的節點,勾選後出現Label Expression選項供輸入要限制此任務運行節點的標籤,能夠指定多個標籤,也可使用一些邏輯運算符以構建更爲複雜的標籤選擇.數據庫

此選項除了能夠輸入標籤外,也能夠輸入節點的名稱.編程

好比輸入的是master則限定此任務在master節點運行.windows

支持的運算符:編程語言

  • (表達式)用於複雜的表達式,相似編程語言中的括號svn

  • !表達式,邏輯運算,例如!linux則任務運行在不包含linux標籤的機器上post

  • a&&b 邏輯且ui

  • a||b邏輯或

  • a -> b 這裏舉個例子說明它的使用方法.好比windows->x64則限定若是節點運行在windows機器上,則必須運行在x64類型的windows機器上(即一節點同時包含windows x64兩個label),若是不是windows機器,則沒必要是x64系統.

  • a <-> b 這裏仍然舉例說明.好比windows<->datacenter1,若是主機是windows系統,則必須運行在datacenter1機房,若是不是windows系統,則必須不能運行在datacenter1機房.

其它示例:

  • linux-machine-42,任務運行在主機名爲linux-machine-42的節點上,或者標籤爲linux-machine-42的節點上

  • windows && jdk9,任務必須運行在windows主機上,而且jdk版本爲9(須要注意的是這裏僅僅是邏輯上的限制,實際上咱們爲一個節點打上jdk9標籤,這臺機器並不必定安裝了jdk9,這裏仍是須要咱們人爲控制)

  • postgres && !vm && (linux || freebsd) 運行在有postgres數據庫的linux或者freebsd系統類型,而且不是虛擬機的節點上.

This build requires lockable resources

此構建須要鎖定的資源,鎖定的資源由咱們在全局配置裏使用.

  • 建立lockable resources

進入manage jenkins->system configuration,而後向下滾動找到Lockable Resources Manager,而後點擊Add lockable resource按鈕.出現輸入框,下面講解每一項的含義

  • Name lockable資源的名稱,只有定義的名稱建立項目的時候纔可使用它,好比printers定義了一個名叫做printers類型的lockable資源

  • Description 描述,能夠隨便添加一些描述信息

  • Labels 要選擇的節點,多個之間用空格分割.好比printer1 printer2 printer3

  • Reserved by 被某個對象預留,這裏能夠填寫任意名稱,若是有值,則資源不可用,此選項用於對資源的維護,好比咱們要對安裝了打印機的主機進行維護,則能夠在這裏填寫一個值,此時任務不能使用此資源,直到值被清除.

咱們返回jenkins主界面,點擊左側的Lockable Resources就能夠看到有哪些lockable resource,而且能夠看到資源的狀態

新建一個項目,general選項裏選擇This build requires lockable resources即可以使用lockable資源,有Resourceslabels兩個選項能夠選,此兩個選項是互斥的,即只能選擇一個,好比咱們能夠在Resources裏指定printers,或者在labels裏指定printer1或者printer2,具體要根據要鎖定的資源而定.若是僅僅要鎖定一個打印機,則能夠用resoures,若是想要鎖定某個特定類型的資源,則可使用lable.

咱們構建完任務後,點擊構建號進入詳細構建信息頁面,點擊左側的lockable resources則能夠看到本次構建鎖定的資源.

這裏說鎖定資源,是指此構建對資源的獨佔,若是其它構建也鎖定了相同的資源,則須要排除等待.

因爲jenkins裏的資源都是節點資源,即沒有其它類型的資源,所以使用lockable resources能完成的工做使用label選擇也一樣能完成,使用kockable resources的好處在於對資源的管理更爲方便,有些資源是有限的,若是lable過於複雜很難理清關係,而lockable resoure則有單獨的資源管理界面,方便對這些關鍵的資源進行管理.

高級選項之Quiet period

勾選後,會出現Quiet period,值默認爲秒.此選項的意義爲在實踐中有些用戶每每會在提交git後又立刻發現問題,緊接着進行數次提交.這樣就會觸發多個hook事件,致使屢次構建,若是指定一個Quiet periodjenkins中待處理的隊列中在一個任務添加後的Quiet period範圍內再添加任務將不會被加入到隊列.保證一個相關的提交只構建一次,防止沒必要要的資源浪費.

高級選項之Retry Count

此選項也是對SCM的,若是一個構建使用了SCM(git,svn等),則在拉取代碼失敗後會進行若干次重試,若是在指定的重試次數用完後仍然未能拉取,則這次構建標記爲失敗.

此選項若是不勾選默認的行爲是若是拉取代碼失敗,則任務立刻標識爲失敗,至關於Retry count值設置爲0

高級選項之Execute concurrent builds if necessary

必要時執行並行構建.默認狀況下,若是對同一任務觸發屢次構建,這些任務會造成隊列,上一個完成後下一個纔開始構建,若是機器資源充足的狀況下能夠勾選此選項,這樣jenkins就會並行調度任務(同一任務可能同時運行多個構建),咱們不用擔憂資源覆蓋問題,由於jenkins在構建時會自動爲同一構建不一樣編號的任務建立不一樣的構建目錄.

須要注意的是,若是構建勾選了Use custom workspace而且指定了自定義構建目錄,則jenkins不會爲不一樣的構建建立隔離的目錄,這種狀況下同一任務並行構建就會出問題.

高級選項之Use custom workspace

jenkins並不僅是構建項目用,還能夠執行一些其它的任務,好比在特定的目錄下執行一些操做.可是jenkins會爲每一個任務建立一個固定的文件夾,此時如何指定Use custom workspace則會改變jenkins的默認行爲,讓jenkins在特定的目錄上下文環境下執行任務.

任務組織和管理

建立view

默認狀況下Jenkins裏有一個All view,默認建立的任務都會顯示在這裏,隨着接入jenkins項目愈來愈多,這個view就會變得愈來愈臃腫,難以管理.這時候咱們能夠建立更多的view來對任任務進行邏輯上管理.建立view也很簡單,All後面一個+號就能夠建立一個新的view,詳細步驟這裏就再也不介紹了.建立完之後All後面就會多出一個標籤,點擊這個標籤就能夠切換到這個視圖,在當前view激活的狀況下,建立新的項目時,默認會勾選Add to current view把項目添加到當前視圖.

把部分已有任務添加到當前視圖

若是你新建立視圖後沒有進行任何操做,則當前視圖下有這樣一句話

This view has no jobs associated with it. You can either add some existing jobs to this view or create a new job in this view.

點擊add some existing jobs在出現的頁面裏就能夠從jobs裏勾選想要添加進來的任務,而後點擊ok便可.

這個頁面和建立view頁面相似,建立view的界面裏一樣也有添加job到view的選項,選擇便可.

若是咱們已經添加了任務,則上面的連接就會消失了,此時咱們能夠在視圖激活的狀況下,點擊左側的Edit view按鈕,進入和剛纔同樣的界面,而後在這個頁面裏選擇要添加的job.

刪除一個已有view

在當前view激活狀態下,左側有一個delete view按鈕,咱們點擊它就能夠刪除當前view

須要注意的是,刪除view並不刪除它裏面的任務,view刪除之後裏面的任務會被移到All裏面

建立文件夾

文件夾也是用來組織任務的一種方式,咱們點擊New Item下面有一個Folder類型,咱們選擇它之後就能夠建立一個文件夾.咱們進入到裏面會發現,裏面也包含一個all類型的視圖,和外層同樣.也能夠像在外層一下添加項目.點擊左側的delete folder按鈕則能夠刪除當前文件夾.

把文件夾移動到其它視圖

點擊左側的move按鈕,就會出現一個下拉列表,列出了當前全部的view,選擇想要移動到的view便可.

相關文章
相關標籤/搜索