當agnet數量變多時,如何區分這些agnet有哪些特色呢?好比哪些環境是node10,哪些是JDK8,爲了區分,咱們能夠給不一樣的agent打標籤(也叫tag)。一個agent能夠擁有多個標籤,爲避免衝突,標籤名不能包含空格,!&<>()|等這些特殊符號。打標籤時能夠考慮如下維度: 工具鏈: jdk, node, php 語言或工具的版本 操做系統:linux, windows, osx 系統位數: 32bit, 64bitphp
定義好標籤後,能夠在pipeline中指定他了,你可能見過node
pipeline {
agent any
}
複製代碼
agent any 告訴 Jenkins master 任意可用的agent均可以執行linux
agent 必須放在pipeline的頂層定義或stage中可選定義,放在stage中就是不一樣階段使用不一樣的agentwindows
經過標籤指定 agent,好比某項目須要在JDK8中環境中構建bash
pipeline {
agent {
label 'jdk8'
}
stages {
stage ('build') {
steps {
echo 'build'
}
}
}
}
複製代碼
實際上agent { label 'jdk8' }
是 agent { node { label 'jdk8' } }
的簡寫。工具
agent {
label 'windows && jdk8'
}
複製代碼
node 除了 label 選項,還支持自定義工做目錄ui
agent {
node {
label 'jdk8'
customWorkspace '/var/lib/custom'
}
}
複製代碼
agent none
,這樣能夠在具體的stages中定義spa
pipeline {
agent none
stages {
stage ('example build') {
steps {
echo 'hello world'
}
}
stage ('example deploy') {
agent {
label 'some-label'
}
when {
beforeAgent true
branch 'production'
}
steps {
echo 'deploying'
}
}
}
}
複製代碼
只有當分支爲 production時,纔會進入 'example deploy' 階段,這樣避免了agent中拉取代碼,從而達到加速pipeline執行的目的。操作系統