吉安感知网项目-后端
linwei
6 days ago 526eaf8779cc21823a41be654082fcdd1638863e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
# 删除历史版本镜像
# 镜像仓库地址
REGISTRY=172.21.81.239:32002
# 镜像仓库命名空间
NAMESPACE=drone-manage
# 保留的版本号个数
KEEP_NUM=20
# 打印本次更新的版本号(为jenkins更新的版本号),小于这个版本号的都清理掉
echo $BUILD_NUMBER
# $1 为动态传入的镜像名称
echo $1
# 需要清理的镜像名名称,一般是项目模块名称
# 要比较的版本号(仅比较数字部分,忽略 -SNAPSHOT)
# 列出所有相关镜像
images=$(docker images --filter=reference="$REGISTRY/$NAMESPACE/$1:SNAPSHOT-*" --format '{{.Repository}}:{{.Tag}}')
echo $images
for image in $images; do
    # 提取镜像标签中的构建号
    build_number=$(echo "$image" |sed -n 's/.*SNAPSHOT-\([0-9]*\).*/\1/p')
    echo $build_number
    # 检查是否提取到有效的构建号
    if [[ -z $build_number ]]; then
        echo "Warning: Could not extract build number from tag '$build_number'. Skipping image '$image'."
        continue
    fi
 
    # 将构建号转换为整数进行比较
    if (( build_number <= $BUILD_NUMBER - $KEEP_NUM )); then
        # 构建号小于目标值,删除镜像
        echo "Deleting image: $image (build number $build_number is less than $BUILD_NUMBER)"
        docker rmi $image
    fi
done