首页 > 解决方案 > if 检查 Jenkinsfile 上的 docker 镜像的条件

问题描述

我对 Jenkins 声明式管道很陌生。在 Jenkinsfile 中,我想检查特定的 docker 映像是否已经在机器上。如果图像已经如此,则只需删除旧图像,然后构建新图像,如果不是,则仅构建新图像。我怎样才能通过声明性管道达到这个目标?

如果您想提供帮助,非常感谢

标签: dockerjenkins

解决方案


sh "docker rmi -f <ImageID>"您可以使用命令删除图像。
要找到 ImageID,您可以使用-qfdocker 选项列出 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/


推荐阅读