联系:node, agent以及slave都用来指被Jenkins master管理的用来执行Jenkins jobs的服务器。

区别:agents用在表述性pipeline中,可以不仅仅是nodes,还可以是docker container等

           nodes用在脚本化pipeline中。

表述性pipeline

所有操作都在pipeline块中执行,格式如下:

pipeline
{
//pipeline can be defined here
}

脚本化pipeline

绝大多数操作都在node中执行,格式如下:

node{
stage("A"){
}
// ... stages
}

Agent在表述性pipeline中的应用

agent必须在pipeline的顶端定义,也可在stage的顶端定义。例如

pipeline {
  agent none
  stages {
    stage("Stage A") {
      agent any
    } // stage
    stage("Stage B") {
      agent { label 'my-defined-label' } 
    } //stage
  } // stages
}

Node在脚本化pipeline中的应用

在脚本pipeline中,一个或者多个node块来完成整个pipeline的核心工作。在脚本pipeline中,node并不是必须的。但是,node中的pipeline可以完成两样工作:

1. 一个块就是一个queue,只要node中又可用的executor,则块中的模块就会执行。

2. 创建工作区间。

node {  
    stage('Build') { 
        // 
    }
    stage('Test') { 
        // 
    }
    stage('Deploy') { 
        // 
    }
}
node {
    stage('ReBuild') { 
        // 
    }
    stage('ReTest') { 
        // 
    }
    stage('ReDeploy') { 
        // 
    }
}

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐