#!/bin/bash
|
# 删除历史版本镜像
|
# 镜像仓库名称
|
RESP_NAME=drone
|
# 打印本次更新的版本号(为jenkins更新的版本号),小于这个版本号的都清理掉
|
echo $BUILD_NUMBER
|
# 需要清理的镜像名名称,一般是项目模块名称
|
echo $IMAGE_NAME
|
# 要比较的版本号(仅比较数字部分,忽略 -SNAPSHOT)
|
TARGET_BUILD_NUMBER=$BUILD_NUMBER
|
# 列出所有相关镜像
|
images=$(docker images --filter=reference="$RESP_NAME:SNAPSHOT-*" --format '{{.Repository}}:{{.Tag}}')
|
echo $images
|
for image in $images; do
|
# 提取镜像标签中的构建号
|
tag=$(echo $image | cut -d: -f2)
|
build_number=$(echo $tag | sed -n 's/.SNAPSHOT-\([0-9]*\).*/\1/p')
|
|
# 检查是否提取到有效的构建号
|
if [[ -z $build_number ]]; then
|
echo "Warning: Could not extract build number from tag '$tag'. Skipping image '$image'."
|
continue
|
fi
|
|
# 将构建号转换为整数进行比较
|
if (( build_number < TARGET_BUILD_NUMBER )); then
|
# 构建号小于目标值,删除镜像
|
echo "Deleting image: $image (build number $build_number is less than $TARGET_BUILD_NUMBER)"
|
docker rmi $image
|
fi
|
done
|