Jenkins2 學習系列22 -- pipeline 中 agent 使用介紹

agent label 標籤

當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' } } 的簡寫。工具

label 支持過濾多標籤

agent {
  label 'windows && jdk8'
}
複製代碼

node 除了 label 選項,還支持自定義工做目錄ui

agent {
  node {
      label 'jdk8'
      customWorkspace '/var/lib/custom'
   }
}
複製代碼

不分配 agent

agent none ,這樣能夠在具體的stages中定義spa

when 指令中的 beforeAgent 選項

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執行的目的。操作系統

參考

www.jianshu.com/p/1ee7a828e…code

相關文章
相關標籤/搜索