agent部分详解
打完标签后,如何在pipeline中使用标签呢? Jenkins master根据此agent部分决定将任务分配到哪个agent上执行。agent部分必须在pipeline块内的顶层定义,而在stage块内的定义是可选的。
agent any告诉Jenkins master任何可用的agent都可以执行。 agent部分的定义可以放在阶段中,用于指定该stage执行时的agent
pipeline {
agent any //不能省略
stages {
stage('pull')
{
agent any
steps {
echo '开始拉取代码'
-
}
-
}
-
}
}
通过标签指定agent 当pipline需要再Jdk 8环境下进行构建时,就需要通过标签来指定agent
pipeline {
agent {
label 'jdk8'
-
}
stages {
stage('Build')
{
steps {
echo "build"
-
}
-
}
-
}
}
事实上,agent{label’jdk8’}是以下定义方式的简略写法。
agent {
node {
label 'jdk8'
-
}
}
有些构建任务是需要再JDK8以及windows环境下执行的,也就是说我们需要过滤同时具有windows和jdk8标签的agent
agent {
label 'windows && jdk8'
}
使用&&代表并且关系
上文中,在增加agent时,已经配置好了该agent上的默认工作目录路径,但是agent部分允许我们对工作目录进行自定义。node除了label选项,还提供了另一个选项-customWorkspace,自定义工作目录:
agent {
node {
label 'jdk8'
customWorkspace '/var/lib/custom'
-
}
}