如何将环境变量传递到Jenkinsfile中的docker-agent部分

j5fpnvbx  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(88)

我正在尝试将环境变量从environment部分传递到Jenkinsfile中的agent部分,请注意agent将是docker container。请在下面找到代码片段

pipeline {
    environment {
        DOCKER_REGISTRY = "my-docker-registry"
        DOCKER_IMAGE = "my-docker-image-build"
        BUILD_LABEL = "my-server-to-run-container"
    }
    
    agent {
        docker {
            label "${env.BUILD_LABEL}"
            image "${env.DOCKER_IMAGE}"
        }
    }
    stages {
        stage('sample-print-env-variables') {
            steps {
                echo "This is the BUILD Label ${env.BUILD_LABEL}"
                echo "This is the Docker Image ${env.DOCKER_IMAGE}"
                echo "This is the Artifactory URL ${env.ARTIFACTORY_URL}"                
            }
        }
    }
}

字符串
在Jenkins示例(运行版本2.319)上尝试上述代码片段时,会产生以下结果

[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . null

Error: No such object: null
[Pipeline] isUnix
[Pipeline] withEnv (hide)
[Pipeline] {
[Pipeline] sh
+ docker pull null
Using default tag: latest


基于Jenkins-Documentation-Excellence,声明性语义看起来正确,还使用Jenkins-Linter来确认Jenkinsfile没有错误。
任何建议或意见,以解决错误是非常感谢。
谢谢

xpcnnkqh

xpcnnkqh1#

这是一个声明性管道的错误,这个问题是在2017年创建的,他们仍然没有修复它。https://issues.jenkins.io/browse/JENKINS-42369
作为一种变通方法,我建议使用凭证或调用返回参数的函数。
How to use an environment variable in the agent section of a Jenkins Declarative Pipeline?

相关问题