我正在尝试将环境变量从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
没有错误。
任何建议或意见,以解决错误是非常感谢。
谢谢
1条答案
按热度按时间xpcnnkqh1#
这是一个声明性管道的错误,这个问题是在2017年创建的,他们仍然没有修复它。https://issues.jenkins.io/browse/JENKINS-42369
作为一种变通方法,我建议使用凭证或调用返回参数的函数。
How to use an environment variable in the agent section of a Jenkins Declarative Pipeline?的