更改删除镜像步骤
This commit is contained in:
@@ -237,12 +237,13 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
echo "开始清理本地旧镜像,仅保留最近 2 个构建版本"
|
||||
def keepCount = 2
|
||||
echo "开始清理本地旧镜像,仅保留最近 ${keepCount} 个构建版本"
|
||||
def imagePrefix = "${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}"
|
||||
|
||||
// 获取所有镜像(按创建时间排序,越新的越前)
|
||||
def allImagesRaw = sh(script: "docker images ${imagePrefix} --format '{{.ID}} {{.Repository}}:{{.Tag}}' | sort -rk1", returnStdout: true).trim()
|
||||
// 格式:Repository:Tag ImageID CreatedAt
|
||||
def allImagesRaw = sh(script: "docker images ${imagePrefix} --format '{{.Repository}}:{{.Tag}} {{.ID}} {{.CreatedAt}}' | sort -rk3", returnStdout: true).trim()
|
||||
if (!allImagesRaw) {
|
||||
echo "未找到任何镜像,无需清理"
|
||||
return
|
||||
@@ -256,13 +257,28 @@ pipeline {
|
||||
|
||||
def oldImages = allImages.drop(keepCount)
|
||||
echo "发现 ${oldImages.size()} 个旧镜像需要清理"
|
||||
oldImages.each { line ->
|
||||
echo " ${line}"
|
||||
}
|
||||
|
||||
oldImages.each { line ->
|
||||
def parts = line.split(' ')
|
||||
def imageId = parts[0]
|
||||
def imageTag = parts[1]
|
||||
echo "删除旧镜像: ${imageTag} (ID: ${imageId})"
|
||||
sh "docker rmi -f \"${imageId}"\ || true"
|
||||
def imageTag = parts[0]
|
||||
def imageId = parts.size() > 1 ? parts[1] : ""
|
||||
|
||||
// 对于标签为<none>的无效镜像,使用镜像ID删除
|
||||
if (imageTag.contains("<none>") && imageId) {
|
||||
echo "删除无效镜像: ${imageId}"
|
||||
sh(returnStatus: true, script: "docker rmi -f ${imageId} || true")
|
||||
} else if (imageId) {
|
||||
// 对于有标签的有效镜像,优先使用镜像ID删除
|
||||
echo "删除旧镜像: ${imageTag} (${imageId})"
|
||||
sh(returnStatus: true, script: "docker rmi -f ${imageId} || true")
|
||||
} else {
|
||||
// 兜底方案,使用标签删除
|
||||
echo "删除旧镜像: ${imageTag}"
|
||||
sh(returnStatus: true, script: "docker rmi -f ${imageTag} || true")
|
||||
}
|
||||
}
|
||||
|
||||
echo "清理完成,当前镜像状态:"
|
||||
|
||||
Reference in New Issue
Block a user