docker - 如何在 Jenkins 声明式管道中删除 docker 代理的图像?
问题描述
我正在使用自定义映像作为 Docker 代理运行 Jenkins 的 CI/CD 管道。在某些时候,我修改了 dockerfile(我只是在容器内添加了 curl,但这应该在问题中起到边缘作用)。
现在,当我再次运行构建时,在其他包中找不到 curl,我相信这是因为 Jenkins 将旧图像保存在内存中并且没有从我的新版本中构建容器码头文件。因此,我正在尝试将图像作为发布操作删除:
pipeline {
agent {
docker {
image 'my-personal-image'
registryUrl 'my-custom-registry'
args '-v ${WORKSPACE}:/usr/jenkins --rm=true'
}
}
stages {
...
}
post{
failure{
sh "docker rmi -f my-personal-image"
}
cleanup{
cleanWs()
}
}
}
当然,这会失败,因为 sh 正在 docker 容器内传递命令。
+ docker rmi -f my-personal-image
/srv/jenkins/workspace/build@tmp/durable-cfcfebd7/script.sh:
1: /srv/jenkins/workspace/build@tmp/durable-cfcfebd7/script.sh:
docker: not found
我想知道是否有办法在构建结束时删除图像?
PS。我通过转移到脚本管道或在开始时使用“代理无”并稍后在变量中引用图像来找到其他方法。然而,我仍然不满意,我不能不重复使用脚本管道(它工作顺利!),也没有在 Jenkinsfile 稍后在某个阶段级别指定 docker 代理
解决方案
推荐阅读
- python-3.x - 使用本机反应和烧瓶后端在opencv中处理实时图像
- jasmine - 在使用 Jasmine Karma 编写测试用例时,我无法涵盖正在执行的处理程序
- mysql - 是否有工具可以显示 MySQL 的两个转储文件之间的架构/定义更改?
- firebase - Flutter Firebase 中的喜欢和不喜欢的功能
- python - PyQt5 setText 与 add_event_detect
- jquery - 如何使脚本在 Laravel Blade 中除以 if-else 的元素上工作
- react-native - 是否可以在 react-native 中更改推送通知消息的字体大小或字体颜色?
- python - 从列表数据结构中检索元素
- bash - 尝试从现在开始计算 ssl 证书的剩余天数
- linux - 在 Linux 上使用共享库运行程序