【发布时间】:2018-12-21 09:47:51
【问题描述】:
Jenkins 不想在代理 docker args 部分中使用任何变量,除了主要的 Jenkins 变量,例如 JENKINS_URL。
容器化 Jenkins 2.152。尝试使用变量使用自定义参数启动 docker 代理。尝试使用 Groove var、env.Var 之类的环境 var、${Var} 之类的环境 var。它们都被用作名称,而不是它们的值。
Jenkinsfile
Gpath = "/var/log:/opt/gpath"
pipeline {
agent {
docker {
image "bash:latest"
args '--network proxy_nw -v Gpath -v ${Ppath} -v env.Ppath2 -v /var/log:/${NODE_LABELS}'
}
}
environment {
Ppath = "/var/log:/opt/ppath"
Ppath2 = "/var/log:/opt/ppath2"
}
stages {
stage ('main') {
steps {
script {
sh 'echo "Ppath= " ${Ppath} "; Ppath2= " ${Ppath2} "; NODE_LABELS= " ${NODE_LABELS}'
sh 'printenv'
input message: "wait"
}
}
}
}
}
Jenkins 控制台输出
docker run -t -d -u 1000:1000 --network proxy_nw -v Gpath -v ${Ppath} -v env.Ppath2 -v /var/log:/${NODE_LABELS}
如您所见,我在 args 部分中使用了几个变量。
好的,由于单引号,Groovy 变量看起来像名字是合理的。我们可以在 Jenkins 控制台输出中看到它。
但是环境变量也不起作用。它们实际上在 docker 容器中可用,而不是在 Jenkins 级别。
那么,如何为代理 docker 指令的 args 部分定义变量呢?
【问题讨论】: