docker - if 检查 Jenkinsfile 上的 docker 镜像的条件
问题描述
我对 Jenkins 声明式管道很陌生。在 Jenkinsfile 中,我想检查特定的 docker 映像是否已经在机器上。如果图像已经如此,则只需删除旧图像,然后构建新图像,如果不是,则仅构建新图像。我怎样才能通过声明性管道达到这个目标?
如果您想提供帮助,非常感谢
解决方案
sh "docker rmi -f <ImageID>"
您可以使用命令删除图像。
要找到 ImageID,您可以使用-qf
docker 选项列出 imageid。
参考示例如下:
stage('Remove old Image') {
steps {
script {
def imageName = "<Your image Name>"
env.imageName = "${imageName}"
def oldImageID = sh(
script: 'docker images -qf reference=\${imageName}:\${imageTag}',
returnStdout: true
)
echo "Image Name: " + "${imageName}"
echo "Old Image: ${oldImageID}"
if ( "${oldImageID}" != '' ) {
echo "Deleting image id: ${oldImageID}..."
sh "docker rmi -f ${oldImageID}"
} else {
echo "No image to delete..."
}
}
}
}
有关 docker 图像选项的信息,请访问:https ://docs.docker.com/engine/reference/commandline/images/
推荐阅读
- ruby-on-rails - 我可以在交互器类中将上下文用作@context 吗?
- c++ - Sublime Text 3 在编译 C 程序时出错
- azure-devops - Power Automate 无法在 Azure DevOps 中创建工作项(共享收件箱)
- node.js - 无法在 mongo db 中添加超过 1 个 post 请求
- javascript - 在 Laravel 文件上传时无法识别文件错误“调用成员函数 store() on null”
- angular - ejs网格内的角度工具垫复选框
- css - 如何用连接点制作垂直线?
- .net-core - Azure SQL 依赖项(基于 EF Core 3.1.7)未出现在 App Insights 的应用程序图中
- javascript - 如何将 spring 数组拆分为 char 数组?
- css - css contains 使性能变差