简体   繁体   中英

Unable to delete docker image via Jenkins pipeline

I want to delete image from previous build. I'm able to get its image id, however the job dies every time it hits docker rmi command.

stage('Clean old Image') {
            steps {
                script { 
                    def imageName = "${registry}" + "/" + "${branchName}"
                    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 log console shows these error messages

Shell Script -- docker rmi -f $oldImageID (self time 282ms) + docker rmi -f "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] Remove one or more images

but actually, the image id is already persists as it shows in stage log

Print Message -- Old Image: 267848fadb74 (self time 11ms) Old Image: 267848fadb74

Try passing in " instead of ' with ${oldImageID}

 sh "docker rmi -f ${oldImageID}"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM