除了主要的詹金斯变量(例如JENKINS_URL)之外,詹金斯不想在代理docker args部分中使用任何变量。
集装箱式詹金斯2.152。尝试使用来自变量的自定义args启动docker代理。尝试使用Groove var,envir.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 var看起来像名字一样是合理的。我们可以在Jenkins控制台输出中看到它。 但是环境变量也不起作用。它们是实际在建筑物容器中的,而不是在詹金斯级别。 所以。如何为代理docker指令的args部分定义变量?
答案 0 :(得分:0)
我找到了解决方法。
我添加到了最高级别agent none
,并且仅通过容器声明将所有阶段都置于阶段中。是的,因为我们可以将stages
放在stage
pipeline {
agent none
environment {
WORKDIR = getVar(G_workdir)
DIRDOUBLE = getVar(G_dirdouble)
}
stages {
stage('build container up') {
agent {
docker {
image G_container
args '--network proxy_nw -v ${DIRDOUBLE}'
}
}
stages {
stage('Initialise') {
steps {
........