在声明管道中使用withEnv

时间:2020-02-17 13:07:15

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy

我试图在声明性管道中运行docker命令,以在我的从属计算机上安装docker env,我试图使用docker commons插件“ https://plugins.jenkins.io/docker-commons/”,但没有成功。

我在下面的链接中进一步提到了如何使用此插件。

https://automatingguy.com/2017/11/06/jenkins-pipelines-simple-delivery-flow/

我已经在manage jenkins->全局工具配置中配置了docker,但是在我的jenkins声明性管道中找不到如何使用下面的部分,我认为下面的结构/语法将适用于脚本化的jenkins管道

def dockerTool = tool name: 'docker', type: 
'org.jenkinsci.plugins.docker.commons.tools.DockerTool'
withEnv(["DOCKER=${dockerTool}/bin"]) {
   stages{}
}

有人可以帮忙吗,我如何在詹金斯的声明式管道中使用docker通用工具。 注意:由于与其他项目的标准化,我无法切换到脚本化管道

3 个答案:

答案 0 :(得分:0)

这是工作示例

pipeline{
    agent any
    stages{
        stage('test') {
            steps{
                script{
                    test_env="this is test env"
                    withEnv(["myEnv=${test_env}"]){
                        echo "${env.myEnv}"
                    }
                }
            }
        }
    }
}

答案 1 :(得分:0)

我有种感觉,您不需要使用withEnvdocker commons。你见过这个吗? https://www.jenkins.io/doc/book/pipeline/docker/ 有很多很好的示例说明如何将Docker与Jenkinsfile一起使用。

我试图回答您的问题(如果我没错的话),如果您要询问脚本withEnv的声明性等效项,那么您可能正在寻找environment {}?像这样:

pipeline {
    agent any

    environment {
        DOCKER = "${dockerTool}/bin"
    }

    stages {
        stage('One') {
            steps {
              // steps here
            }
        }
    }
} 

答案 2 :(得分:0)

Docker Commons v1.17起,这是一个有效的声明式管道解决方案

注意:工具名称dockerTool是一个关键字,而 docker-19.03.11 是我在Jenkins> Manage Jenkins> Global Tool Configuration页面中给我安装的名称。

pipeline {
    agent any
    tools {
        dockerTool 'docker-19.03.11'
    }
    stages {
        stage('build') {
            steps {
                sh'''
                    echo 'FROM mongo:3.2' > Dockerfile
                    echo 'CMD ["/bin/echo", "HELLO WORLD...."]' >> Dockerfile
                '''
                script {
                    docker.withRegistry('http://192.168.99.100:5000/v2/') {
                        def image = docker.build('test/helloworld2:$BUILD_NUMBER')
                    }
                }
            }
        }
    }
}

enter image description here