Mri*_*lla 6 jenkins docker docker-build jenkins-pipeline
我使用声明性 Jenkinsfile 在 Docker 容器内运行某些阶段。该过程工作正常,但构建时间通常非常慢,因为我们的 CI 有相当多的从属设备,如果构建发生在没有层缓存的从属设备上,则整个构建需要一段时间。
我读到,如果--cache-from
指定了标志,Docker 可以加快构建速度。如何指定缓存来源标志以及外部注册表的 URL 和凭据?
pipeline {
agent { dockerfile true }
environment {
REPO = credentials('supersecret')
}
stages {
stage('Prepare environment') {
steps {
Run Code Online (Sandbox Code Playgroud)
管道语法确实授权附加参数
docker build ...
您可以使用选项将其他参数传递给命令additionalBuildArgs
,例如代理
{ dockerfile { additionalBuildArgs '--build-arg foo=bar' } }
Run Code Online (Sandbox Code Playgroud)
但cache-from
请参考可能位于专用外部注册表中并具有自己的凭据的映像。
也许您可以在该注册表中设置一个仅负责的第一步docker login
。
另一种方法完全是为该特定构建重用相同的节点。
请参阅“通过每阶段 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"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么任何人docker build
都会从当前的本地图像缓存中受益。
归档时间: |
|
查看次数: |
5187 次 |
最近记录: |