模板码头代理在jenkins声明管道中

时间:2017-12-13 12:01:18

标签: jenkins-pipeline jenkins-docker jenkins-declarative-pipeline

我有一个使用docker代理的声明性管道的Jenkins文件。许多步骤使用docker代理,并且为这些步骤添加相同的代理有点重复

e.g。

pipeline {
  agent any
  stages {  
    stage('Stage 1') {
      steps {
        //Do something
      }
    }
    stage('Stage 2') {      
      agent {
        docker { image 'jenkins/jenkins-slave:latest'
                 reuseNode true
                 registryUrl 'https://some.registry/'
                 registryCredentialsId 'git'
           args '-v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -e HOME=${WORKSPACE}' 
        }                         
      }
      steps {
         //Do something
      }
    }
    stage('Stage 3') {
      steps {
        //Do something
      }
    }
    stage('Stage 4') {      
      agent {
        docker { image 'jenkins/jenkins-slave:latest'
                 reuseNode true
                 registryUrl 'https://some.registry/'
                 registryCredentialsId 'git'
           args '-v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -e HOME=${WORKSPACE}' 
        }                         
      }
      steps {
         //Do something
      }
    }
  }
}

有没有办法模拟代理(或编写我自己的代理),以便我可以执行以下操作

pipeline {
  agent any
  stages {  
    stage('Stage 1') {
      steps {
        //Do something
      }
    }
    stage('Stage 2') {      
      agent {
        my-docker                     
      }
      steps {
         //Do something
      }
    }
    stage('Stage 3') {
      steps {
        //Do something
      }
    }
    stage('Stage 4') {      
      agent {
        my-docker             
      }
      steps {
         //Do something
      }
    }
  }
}

因此我不必重复编写相同的代理,可能我可以在所有Dockerfiles中重用它

0 个答案:

没有答案