我想在docker容器中安装与工作区关联的临时卷以进行gradle缓存.使用Scripted Pipeline,可以像下面这样编写.
docker.image('my-gradle').inside("-v ${pwd(tmp: true)}:/home/jenkins/.gradle") {
sh './gradlew test'
}
Run Code Online (Sandbox Code Playgroud)
但是使用Declarative Pipeline,以下内容会导致错误.
agent {
dockerfile {
dir 'path/to/dockerfileDir'
label 'docker-nodes'
args "-v ${pwd(tmp: true)}:/home/jenkins/.gradle"
}
}
Run Code Online (Sandbox Code Playgroud)
控制台日志如下所示.
$ docker run -t -d -u 1000:1000 -v org.jenkinsci.plugins.pipeline.modeldefinition.ClosureModelTranslator@34a240ba:/home/jenkins/.gradle ...
java.io.IOException: Failed to run image 'e3747815ce1fc12012be2114aa26b6b1ec8a0492'. Error: docker: Error response from daemon: create org.jenkinsci.plugins.pipeline.modeldefinition.ClosureModelTranslator@34a240ba: "org.jenkinsci.plugins.pipeline.modeldefinition.ClosureModelTranslator@34a240ba" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intented to pass a host directory, use absolute path.
See 'docker run --help'.
at …Run Code Online (Sandbox Code Playgroud)