From e937850d370c70dbf8efa3896f888308c98b264b Mon Sep 17 00:00:00 2001 From: yhl452493373 Date: Sat, 22 Nov 2025 01:01:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B8=85=E7=90=86=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/BuildServer.yml | 38 ++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/.github/workflows/BuildServer.yml b/.github/workflows/BuildServer.yml index bcdbc61..4d0cdad 100644 --- a/.github/workflows/BuildServer.yml +++ b/.github/workflows/BuildServer.yml @@ -135,4 +135,40 @@ jobs: else echo "镜像仅本地构建,用户选择不推送到 Docker Hub" fi - fi \ No newline at end of file + fi + + - name: 清理 Docker 镜像和缓存 + run: | + echo "=== 开始清理 Docker 资源 ===" + + # 1. 删除构建的镜像 + IMAGE_TAG="${{ steps.exist-tag.outputs.tag }}" + if [ -n "$IMAGE_TAG" ]; then + echo "删除构建的镜像: $IMAGE_TAG" + docker rmi $IMAGE_TAG 2>/dev/null || echo "镜像已删除或不存在" + else + echo "未获取到镜像标签,跳过镜像删除" + fi + + # 2. 清理所有悬空镜像 + echo "清理悬空镜像..." + DANGLING_IMAGES=$(docker images -f "dangling=true" -q) + if [ -n "$DANGLING_IMAGES" ]; then + docker rmi $DANGLING_IMAGES 2>/dev/null || true + echo "已清理悬空镜像" + else + echo "无悬空镜像需要清理" + fi + + # 3. 在磁盘空间不足时清理构建缓存 + echo "检查磁盘使用情况..." + DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') + if [ "$DISK_USAGE" -gt 90 ]; then + echo "磁盘使用率 ${DISK_USAGE}%,清理构建缓存" + docker buildx prune -f + echo "构建缓存已清理" + else + echo "磁盘使用率 ${DISK_USAGE}%,保留构建缓存" + fi + + echo "资源清理完成" \ No newline at end of file