如何在 docker args 中使用环境变量
How to use environment variables in docker args
我正在尝试编写一个使用 docker 插件的 Jenkins CI 作业。插件已安装,我想做的是将 docker 图像拉到 jenkins 客户端(配置为 运行 docker),然后向 docker 发出命令图片。我需要使用一些环境变量(比如 env.WORKSPACE),但我似乎无法让它工作。这是我的詹金斯文件的样子:
管道{
代理 { 标签 'my_docker_jenkins_agent' }
options {
timestamps()
}
stages {
stage('docker test') {
agent {
docker {
label 'my_docker_jenkins_agent'
image 'docker_registry/test/f32-bld:0.1'
registryUrl 'https://my_internal_registry.foo.com'
registryCredentialsId '<credentials id not shown>'
args '--mount src=${env.WORKSPACE}/my-build-dir,dst=/bld,type=bind'
}
}
steps {
script {
blah
}
}
}
}
}
我需要使用 Jenkins WORKSPACE 变量,因为它会随着 运行s 的每个作业而改变,并且 jenkins 正在为我将代码检出到 my-build-dir 中,但我无法获取它上班。当我 运行 作业时出现此错误:
java.io.IOException: 无法 运行 图片 'my_internal_registry.foo.com/docker_registry/test/f32-bld:0.1'。错误:docker:来自守护程序的错误响应:类型“绑定”的无效挂载配置:无效的挂载路径:'${env.WORKSPACE}/my-build-dir' 挂载路径必须是绝对路径。
知道如何传递 WORKSPACE 变量吗?
答案:
尝试使用双引号
args "--mount src=${env.WORKSPACE}/my-build-dir,dst=/bld,type=bind"
我正在尝试编写一个使用 docker 插件的 Jenkins CI 作业。插件已安装,我想做的是将 docker 图像拉到 jenkins 客户端(配置为 运行 docker),然后向 docker 发出命令图片。我需要使用一些环境变量(比如 env.WORKSPACE),但我似乎无法让它工作。这是我的詹金斯文件的样子:
管道{ 代理 { 标签 'my_docker_jenkins_agent' }
options {
timestamps()
}
stages {
stage('docker test') {
agent {
docker {
label 'my_docker_jenkins_agent'
image 'docker_registry/test/f32-bld:0.1'
registryUrl 'https://my_internal_registry.foo.com'
registryCredentialsId '<credentials id not shown>'
args '--mount src=${env.WORKSPACE}/my-build-dir,dst=/bld,type=bind'
}
}
steps {
script {
blah
}
}
}
}
}
我需要使用 Jenkins WORKSPACE 变量,因为它会随着 运行s 的每个作业而改变,并且 jenkins 正在为我将代码检出到 my-build-dir 中,但我无法获取它上班。当我 运行 作业时出现此错误:
java.io.IOException: 无法 运行 图片 'my_internal_registry.foo.com/docker_registry/test/f32-bld:0.1'。错误:docker:来自守护程序的错误响应:类型“绑定”的无效挂载配置:无效的挂载路径:'${env.WORKSPACE}/my-build-dir' 挂载路径必须是绝对路径。
知道如何传递 WORKSPACE 变量吗?
答案:
尝试使用双引号
args "--mount src=${env.WORKSPACE}/my-build-dir,dst=/bld,type=bind"