我使用声明性Jenkinsfile在Docker容器中运行一些阶段。这个过程运行正常但是构建时间通常很慢,因为我们的CI有很多从属,如果构建发生在没有层缓存的从属上,整个构建需要一段时间。
我已经读过,如果指定了--cache-from
标志,Docker可以加速构建。如何指定cache-from标志和外部注册表的URL和凭据?
pipeline {
agent { dockerfile true }
environment {
REPO = credentials('supersecret')
}
stages {
stage('Prepare environment') {
steps {
答案 0 :(得分:1)
The pipeline syntax会授权其他参数
您可以使用
docker build ...
选项将其他参数传递给additionalBuildArgs
命令,例如代理
{ dockerfile { additionalBuildArgs '--build-arg foo=bar' } }
但是cache-from
是指可能位于具有自己凭据的专用外部注册表中的图像
也许你可以在该注册表中设置docker login
的第一步。
另一种方法完全是为特定构建重用相同的节点 请参阅" Reusing node/workspace with per-stage Docker agents"
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
都将受益于当前的本地图像缓存。