docker - docker内部的Jenkins管道使用最新的上游图像
问题描述
我们有一个带有声明性管道的 Jenkinsfile,它使用 Docker 容器在构建节点上运行。
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 插件的文档(特别是对于声明性工作),所以任何帮助表示赞赏。
解决方案
在源代码中翻找之后,修复是:
pipeline {
agent {
docker {
...
alwaysPull true
...
}
}
}
这将使用本地 docker 缓存,并且仅在发生更改时才拉取新图像。
推荐阅读
- python - Django 管理命令无法正确导入
- python - 如何从 view.py 向模板发送警报或消息?
- html - 在悬停时调整卡片大小会使下面的 div 跳转
- javascript - 如何计算增加值的线性(非罪)输出
- javascript - 如何将json对象数组准备为d3层次树结构
- typescript - DevServer contentBase 弃用警告和标头内容中的无效字符
- html - 如何将幻灯片指示器放在左上角
- swift - 运行 Kitura Docker Image 导致 libmysqlclient.so.18 错误
- c# - 如何在包含数字 1 的每一行中将数字加 1
- rust - 为动态加载的 crate 提供一致的 TypeId