jenkins分布式--agent

2021-06-01 17:57:11 浏览数 (1)

agent部分详解

打完标签后,如何在pipeline中使用标签呢? Jenkins master根据此agent部分决定将任务分配到哪个agent上执行。agent部分必须在pipeline块内的顶层定义,而在stage块内的定义是可选的。

agent any告诉Jenkins master任何可用的agent都可以执行。 agent部分的定义可以放在阶段中,用于指定该stage执行时的agent

  1. pipeline {
  2.     agent any //不能省略
  3.     stages {
  4.         stage('pull') {
  5. agent any
  6.             steps {
  7.                 echo '开始拉取代码'
  8. }
  9. }
  10. }
  11. }

通过标签指定agent 当pipline需要再Jdk 8环境下进行构建时,就需要通过标签来指定agent

  1. pipeline {
  2.     agent {
  3.         label 'jdk8'
  4. }
  5.     stages {
  6.         stage('Build') {
  7.             steps {
  8.                 echo "build"
  9. }
  10. }
  11. }
  12. }

事实上,agent{label’jdk8’}是以下定义方式的简略写法。

  1. agent {
  2.     node {
  3.         label 'jdk8'
  4. }
  5. }

有些构建任务是需要再JDK8以及windows环境下执行的,也就是说我们需要过滤同时具有windows和jdk8标签的agent

  1. agent {
  2. label 'windows && jdk8'
  3. }

使用&&代表并且关系

上文中,在增加agent时,已经配置好了该agent上的默认工作目录路径,但是agent部分允许我们对工作目录进行自定义。node除了label选项,还提供了另一个选项-customWorkspace,自定义工作目录:

  1. agent {
  2.     node {
  3.         label 'jdk8'
  4.         customWorkspace '/var/lib/custom'
  5. }
  6. }

0 人点赞