如何在后期制作中混合使用主节点和docker节点/代理?

时间:2018-08-09 01:15:24

标签: jenkins jenkins-pipeline

我是Jenkins的新手,刚开始学习它,我正尝试在后期构建部分执行两个不同的脚本,一个在master上,另一个在docker容器内。我无法将agentdocker标签放置在什么地方?后期构建的结构与通常的阶段有很大的不同。

下面是我剥离的Jenkinsfile,toolbox只是我使用与构建步骤相关的工具构建的docker映像的任意名称。我的Jenkins服务器已安装在主机上。我在EC2上使用Bitnami AMI。

任何指针或好的文章对此进行解释都将很有帮助。谢谢。

注意:我相信我的Jenkinsfile还有其他问题,我将在此发布一个单独的问题

pipeline {
  agent {
    node {
      label 'master'
      }
  }
  stages {
    stage('Build') {
      agent any
        steps {
          sh '''
            docker-compose build
          '''
        }
    }
    stage('Up') {
      agent any
      steps {
        sh '''
          docker-compose up -d
        '''
      }
    }
    stage('Test') {
      agent {
        docker {
          image 'toolbox'
          args '-u 0 --net="host"'
        }
      }
      steps {
        sh '''
          sleep 10
          curl ....
        '''
      }
    }
  }
  post {
    always {
      node('master') {
        script {
          timeout(time: 10, unit: 'MINUTES') {
            input(id: "Stop Docker", message: "Stop Docker?", ok: 'Stop')
          }
        }
        sh '''
            docker-compose rm -fs
        '''
        # Issue here, no issue with linter though
        agent {
          #docker { # linter complaint here
            image 'toolbox'
          #}
        }
        withCredentials([usernamePassword(credentialsId: 'AWS_TOKEN', passwordVariable: 'TOKEN', usernameVariable: 'KEY')]) {
          sh '''
            aws ...
          '''
        }
      }
    }
  }
}

0 个答案:

没有答案