如何在 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"