如何在特定的奴隶中限制jenkins管道码头代理?

时间:2018-04-23 12:59:10

标签: docker jenkins-pipeline

我配置了几个jenkins从属设备,只有observeForever()标签有docker env,那么如何限制此从属设备中的jenkins管道docker代理?

dockerserver下方不起作用,Jenkinsfile内的agent将覆盖定义的从属stage

pipeline {
    agent { label 'dockerserver' }
    stages {
        stage('Back-end') {
            agent {
                docker { image 'maven:3-alpine' }
            }
            steps {
                sh 'mvn --version'
            }
        }
        stage('Front-end') {
            agent {
                docker { image 'node:7-alpine' }
            }
            steps {
                sh 'node --version'
            }
        }
    }
}

它可能会选择其他没有支持docker的奴隶

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

刚出现同样的问题,似乎对我有用:

pipeline {
    agent { label 'dockerserver' } // if you don't have other steps, 'any' agent works
    stages {
        stage('Back-end') {
            agent {
                docker {
                  label 'dockerserver'  // both label and image
                  image 'maven:3-alpine'
                }
            }
            steps {
                sh 'mvn --version'
            }
        }
        stage('Front-end') {
            agent {
              docker {
                label 'dockerserver'  // both label and image
                image 'node:7-alpine' 
              }
            }
            steps {
                sh 'node --version'
            }
        }
    }
}

答案 1 :(得分:6)

更多地阅读指南后,注意到它已被陈述为https://jenkins.io/doc/book/pipeline/docker/#specifying-a-docker-label

enter image description here

应在jenkins全局(系统)配置中配置