jenkins agent
参考地址https://www.jenkins.io/doc/book/pipeline/syntax/
该agent部分指定整个Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置。该部分必须在pipeline块内的顶层定义 ,但阶段级使用是可选的。
简单来说,agent部分主要作用就是告诉Jenkins,选择那台节点机器去执行Pipeline代码。这个指令是必须要有的,也就在你顶层pipeline {…}的下一层,必须要有一个agent{…},agent这个指令对应的多个可选参数,本篇文章会一一介绍。这里注意一点,在具体某一个stage {…}里面也可以使用agent指令。这种用法不多,一般我们在顶层使用agent,这样,接下来的全部stage都在一个agent机器下执行代码。
#参数1:any 作用:在任何可用的代理上执行Pipeline或stage
pipeline {
agent any
parameters {gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'}
stages{
stage("git clone"){
steps {
script {
sh """
"""
}
}
}
stage("git clone"){
steps {
}
}
stage("git clone"){
steps {
}
}
}
}
参数2:none 当在pipeline块的顶层应用时,将不会为整个Pipeline运行分配全局代理,并且每个stage部分将需要包含其自己的agent部分。
pipeline {
agent any
parameters {gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'}
stages{
stage("git clone"){
agent {
label 'jenkins-git'
}
steps {
script {
sh """
"""
}
}
}
stage("git build"){
agent {
label 'jenkins-jdk'
}
steps {
}
}
stage("deploy"){
agent {
label 'jenkins-sync'
}
steps {
}
}
}
}
//参数3:label 作用:使用提供的标签在Jenkins环境中可用的代理机器上执行Pipeline或stage内执行。
pipeline {
agent {
label 'jenkins-dev'
}
}
//参数4:node 作用:和上面label功能类似,但是node运行其他选项,例如customWorkspace
pipeline {
agent {
node {
label 'jenkins-agent-node1'
customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}"
}
}
}
//其实agent相关的还有两个可选参数,分别是docker和dockerfile
//第一种全部在一个节点和 容器内运行 在节点jenkins-dev 上运行 golang:1.17-alpine容器挂载目录
pipeline {
agent {
docker {
label 'jenkins-dev'
image 'golang:1.17-alpine'
args "-v ${SSH_KEY_PATH}:${SSH_CREDENTIAL_PATH}"
}
}
parameters {gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'BRANCH', type: 'PT_BRANCH'}
stages{
stage("git clone"){
steps {
script {
sh """
"""
}
}
}
stage("git build"){
agent {
label 'jenkins-jdk'
}
steps {
}
}
stage("deploy"){
agent {
label 'jenkins-sync'
}
steps {
}
}
}
}
//使用多个容器
pipeline {
agent none
stages {
stage('git pull') {
agent {
docker{ image 'git:latest' }
}
steps {
sh 'git version'
}
}
stage('build'){
agent {
docker{ image 'node:7-alpine' }
}
steps {
sh 'node --version'
}
}
}
}