如何在声明式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。