我们有一个带有声明性管道的Jenkinsfile,它使用Docker容器在build节点上运行。
pipeline {
agent {
docker {
registryCredentialsId 'foobar-registry'
registryUrl 'https://foobar.com/'
image 'bar:latest'
label 'foobar && docker'
reuseNode false
args ''
}
}
stages {
stage('Steps run inside docker here ...') {
steps {
sh "python3 -m pycodestyle ."
}
}
}
}这是可行的,除非构建节点docker实例正在缓存bar:latest镜像,并且在存在更新时不从上游注册表中提取最新的镜像。如果我们更新存储库中的Docker镜像,我们必须手动清理构建节点docker缓存,这是一件痛苦的事情。
我们可以手动将版本添加到Jenkinsfile中引用的镜像构建中,并在每次修改Docker镜像时更新版本,但对于我们的开发分支,我们非常希望此管道仅在存储库中提取最新的镜像(理想情况下,如果没有检测到任何更改,则使用缓存)。
这不是一个不常见的需求,但是很难找到docker插件的文档(特别是声明性作业),所以任何帮助都很感谢。
发布于 2019-12-19 00:53:30
在翻看源代码之后,修复方法是:
pipeline {
agent {
docker {
...
alwaysPull true
...
}
}
}这将使用本地docker缓存,并且仅当情况发生变化时才拉取新图像。
https://stackoverflow.com/questions/59396276
复制相似问题