检查Jenkins文件上docker图像的if条件
我对Jenkins声明性管道相当陌生。在Jenkins文件中,我想检查 特定的docker映像是否已在计算机上。如果图像已经是这样,它只需删除旧图像,然后构建新图像,如果不是这样,则只需构建新图像。我如何使用声明性管道实现这一目标检查Jenkins文件上docker图像的if条件,docker,jenkins,Docker,Jenkins,我对Jenkins声明性管道相当陌生。在Jenkins文件中,我想检查 特定的docker映像是否已在计算机上。如果图像已经是这样,它只需删除旧图像,然后构建新图像,如果不是这样,则只需构建新图像。我如何使用声明性管道实现这一目标 如果您想帮助非常感谢,如果您已经在本地拥有映像,那么构建映像和从注册表中提取映像都非常便宜。如果您正在构建图像,Docker的意思是Docker将扫描Docker文件并快速得出结论,它已经有了最终图像;如果您从注册表中提取,Docker将联系注册表,获取图层列表(小)
如果您想帮助非常感谢,如果您已经在本地拥有映像,那么构建映像和从注册表中提取映像都非常便宜。如果您正在构建图像,Docker的意思是Docker将扫描Docker文件并快速得出结论,它已经有了最终图像;如果您从注册表中提取,Docker将联系注册表,获取图层列表(小),并确定它已经拥有所有图层 这意味着可以无条件地在CI系统中构建/拉取映像。如果没有工作要做,事情很快就会发生
(相反,请注意,一些Docker映像实际上是定期更新的;例如,
ubuntu
基本映像每周到每月都会重新发布更新的安全补丁。因此,始终在CI系统中提取基本映像会带来一些好处,因此您一定会得到这些更新。)您可以使用sh删除映像“docker rmi-f”
命令。要查找ImageID,您可以使用docker的
-qf
选项列出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..."
}
}
}
}
stage('Remove old Image'){
台阶{
脚本{
def imageName=“”
env.imageName=“${imageName}”
def oldImageID=sh(
脚本:“docker images-qf reference=\${imageName}:\${imageTag}”,
回答:是的
)
echo“图像名称:”+“${imageName}”
回显“旧图像:${oldImageID}”
如果(“${oldImageID}”!=”){
echo“正在删除图像id:${oldImageID}…”
sh“docker rmi-f${oldImageID}”
}否则{
echo“没有要删除的图像…”
}
}
}
}
有关docker图像选项的信息,请访问: