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