jenkins 在宣告式管缐中使用withEnv

ccrfmcuu  于 2022-11-21  发布在  Jenkins
关注(0)|答案(3)|浏览(140)

我试图在我的声明性管道中运行docker命令,在我的从机上安装docker env,我试图使用docker公共插件“https://plugins.jenkins.io/docker-commons/“,但没有成功。
进一步的研究,我有下面的链接提到如何使用这个插件。
https://automatingguy.com/2017/11/06/jenkins-pipelines-simple-delivery-flow/
我已经在管理jenkins -〉全局工具配置中配置了docker,但是没有找到如何在我的jenkins声明管道中使用下面的部分,我认为下面的结构/语法将适用于脚本化的jenkins管道

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

有人可以请帮助,我可以如何使用docker公共工具在声明管道的jenkins.注意:由于与其他项目的标准化,我无法切换到脚本化管道

sczxawaw

sczxawaw1#

以下是工作示例

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

3okqufwl2#

我觉得你不需要使用withEnvdocker commons。你看过这个吗?https://www.jenkins.io/doc/book/pipeline/docker/有很多很好的例子来说明如何在Jenkinsfile中使用docker。
我尝试回答您的问题(如果我没有猜错的话),如果您询问脚本化withEnv的声明性等价物,那么您可能正在寻找environment {}?类似于:

pipeline {
    agent any

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

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

hmmo2u0o3#

下面是一个自Docker Commons v1.17起有效的声明性管道解决方案
注:工具名称dockerTool是关键字,docker-19.03.11 是我在Jenkins〉Manage Jenkins〉Global Tool Configuration(管理Jenkins〉全局工具配置)页面中为安装指定的名称。

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')
                    }
                }
            }
        }
    }
}

相关问题