如何在声明式Jenkinspipe道中使用Docker的–cache-from构build标志?

我正在使用声明性Jenkinsfile在Docker容器内运行一些阶段。 这个过程没有问题,但是构build时间通常非常缓慢,因为我们的CI有很多奴隶,如果构build发生在没有层caching的奴隶上,整个构build需要一段时间。

我已经读过,如果指定了--cache-from标志,Docker可以加速构build。 如何指定caching – 来自标志和外部registry的URL和凭证?

 pipeline { agent { dockerfile true } environment { REPO = credentials('supersecret') } stages { stage('Prepare environment') { steps { 

pipe道语法确实授权其他参数

您可以使用additionalBuildArgs选项将其他parameter passing给docker build ...命令,如代理程序

 { dockerfile { additionalBuildArgs '--build-arg foo=bar' } } 

但是, cache-from是指可能位于专用外部registry中的图像,并具有自己的凭据。
也许你可以设置第一步,在该registry中负责docker login


另一种方法完全是为特定的构build重用相同的节点。
请参阅“ 使用每个阶段的Docker代理重新使用节点/工作区 ”

 pipeline { agent { label 'whatever' } stages { stage('build') { steps { sh "./build-artifact.sh" } } stage('test in docker') { agent { docker { image 'ubuntu:16.04' reuseNode true } } steps { sh "./run-tests-in-docker.sh" } } } } 

然后任何docker build将受益于当前的本地图像caching。