From 367f2b4ca67cd5847353ca652b83b97c530b2a23 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 25 Jan 2026 20:02:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=BF=80=E9=80=B2=E7=9A=84?= =?UTF-8?q?=E7=A3=81=E7=A2=9F=E6=B8=85=E7=90=86=20+=20BuildKit=20GC=20?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 181 +++++++++++++++++----------------- 1 file changed, 88 insertions(+), 93 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 61bfdb8..d71dfd7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,64 +29,56 @@ jobs: steps: # ======================================== - # 🔥 第一步就清理磁碟(在 checkout 之前!) + # 🔥 極限磁碟清理(釋放 70GB+ 空間) # ======================================== - name: Maximize disk space (before checkout) run: | - echo "🧹 極限磁碟清理(在 checkout 之前)..." - echo "========================================" + echo "🧹 極限磁碟清理..." echo "📊 初始磁碟空間:" df -h / - echo "========================================" - # 停止不需要的服務 - sudo systemctl stop docker || true + # 停止服務 + sudo systemctl stop docker containerd || true - # 移除大型預裝軟體(最關鍵!) - sudo rm -rf /usr/share/dotnet || true # ~6GB - sudo rm -rf /usr/local/lib/android || true # ~10GB - sudo rm -rf /opt/ghc || true # ~2GB - sudo rm -rf /opt/hostedtoolcache || true # ~8GB - sudo rm -rf /usr/share/swift || true # ~1.5GB - sudo rm -rf /usr/local/share/boost || true # ~500MB - sudo rm -rf /opt/microsoft || true # ~1GB - sudo rm -rf /usr/local/aws-* || true - sudo rm -rf /usr/local/julia* || true - sudo rm -rf /usr/share/az_* /opt/az || true - sudo rm -rf /usr/lib/google-cloud-sdk || true - sudo rm -rf /usr/local/share/powershell || true - sudo rm -rf /usr/share/miniconda || true - sudo rm -rf /usr/local/go ~/go || true - sudo rm -rf /usr/share/rust ~/.rustup ~/.cargo || true - sudo rm -rf /usr/share/R /usr/lib/R || true + # 移除大型預裝軟體(約 50-60GB) + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc || true + sudo rm -rf /opt/hostedtoolcache /usr/share/swift /opt/microsoft || true + sudo rm -rf /usr/local/aws-* /usr/local/julia* /usr/share/az_* /opt/az || true + sudo rm -rf /usr/lib/google-cloud-sdk /usr/local/share/powershell || true + sudo rm -rf /usr/share/miniconda /usr/local/go ~/go || true + sudo rm -rf /usr/share/rust ~/.rustup ~/.cargo /usr/share/R /usr/lib/R || true + sudo rm -rf /usr/local/share/boost /usr/local/graalvm /usr/local/.ghcup || true + sudo rm -rf /usr/local/share/chromium || true - # 移除預裝資料庫 - sudo rm -rf /var/lib/mysql || true - sudo rm -rf /var/lib/postgresql || true - sudo rm -rf /var/lib/mongodb || true + # 移除資料庫 + sudo rm -rf /var/lib/mysql /var/lib/postgresql /var/lib/mongodb || true - # 移除文檔 - sudo rm -rf /usr/share/doc || true - sudo rm -rf /usr/share/man || true - sudo rm -rf /usr/share/locale || true - sudo rm -rf /usr/share/icons || true + # 移除 snap/flatpak + sudo rm -rf /snap /var/snap /var/lib/snapd || true - # 清理 APT - sudo apt-get clean || true - sudo rm -rf /var/lib/apt/lists/* || true - sudo rm -rf /var/cache/apt/archives || true + # 移除文檔和 locale + sudo rm -rf /usr/share/doc /usr/share/man /usr/share/locale || true + sudo rm -rf /usr/share/icons /usr/share/fonts /usr/share/help || true - # 清理 Docker(完全重置) - sudo rm -rf /var/lib/docker || true - sudo mkdir -p /var/lib/docker + # 移除 imagegeneration(GitHub runner 專用) + sudo rm -rf /imagegeneration /opt/actionarchivecache || true - # 重啟 Docker - sudo systemctl start docker || true + # 清理 cache + sudo apt-get clean && sudo apt-get autoremove -y || true + sudo rm -rf /var/lib/apt/lists/* /var/cache/* /tmp/* || true + + # 完全重置 Docker + sudo rm -rf /var/lib/docker /var/lib/containerd || true + sudo mkdir -p /var/lib/docker /var/lib/containerd + sudo systemctl start containerd docker || true - echo "========================================" echo "📊 清理後磁碟空間:" df -h / - echo "========================================" + + # 驗證空間 + AVAIL_GB=$(df / | tail -1 | awk '{print int($4/1024/1024)}') + echo "可用空間: ${AVAIL_GB}GB" + [ "$AVAIL_GB" -ge 50 ] && echo "✅ 空間充足" || echo "⚠️ 空間可能不足" - name: Checkout repository uses: actions/checkout@v4 @@ -106,9 +98,15 @@ jobs: driver-opts: | image=moby/buildkit:latest network=host + # 限制 BuildKit 使用的磁碟空間 buildkitd-config-inline: | [worker.oci] - max-parallelism = 2 + max-parallelism = 1 + gc = true + gckeepstorage = 5000000000 + [worker.containerd] + gc = true + gckeepstorage = 5000000000 - name: Login to Docker Hub uses: docker/login-action@v3 @@ -116,7 +114,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: "� 開始構建 AMD64 Image" + - name: "📦 開始構建 AMD64 Image" run: | echo "========================================" echo "📦 開始構建 AMD64 Docker Image..." @@ -131,7 +129,7 @@ jobs: echo "開始時間: $(date)" echo "========================================" - - name: "�🐳 Build and push AMD64 image" + - name: "🐳 Build and push AMD64 image" uses: docker/build-push-action@v6 with: context: . @@ -167,64 +165,56 @@ jobs: steps: # ======================================== - # 🔥 第一步就清理磁碟(在 checkout 之前!) + # 🔥 極限磁碟清理(釋放 70GB+ 空間) # ======================================== - name: Maximize disk space (before checkout) run: | - echo "🧹 極限磁碟清理(在 checkout 之前)..." - echo "========================================" + echo "🧹 極限磁碟清理..." echo "📊 初始磁碟空間:" df -h / - echo "========================================" - # 停止不需要的服務 - sudo systemctl stop docker || true + # 停止服務 + sudo systemctl stop docker containerd || true - # 移除大型預裝軟體(最關鍵!) - sudo rm -rf /usr/share/dotnet || true # ~6GB - sudo rm -rf /usr/local/lib/android || true # ~10GB - sudo rm -rf /opt/ghc || true # ~2GB - sudo rm -rf /opt/hostedtoolcache || true # ~8GB - sudo rm -rf /usr/share/swift || true # ~1.5GB - sudo rm -rf /usr/local/share/boost || true # ~500MB - sudo rm -rf /opt/microsoft || true # ~1GB - sudo rm -rf /usr/local/aws-* || true - sudo rm -rf /usr/local/julia* || true - sudo rm -rf /usr/share/az_* /opt/az || true - sudo rm -rf /usr/lib/google-cloud-sdk || true - sudo rm -rf /usr/local/share/powershell || true - sudo rm -rf /usr/share/miniconda || true - sudo rm -rf /usr/local/go ~/go || true - sudo rm -rf /usr/share/rust ~/.rustup ~/.cargo || true - sudo rm -rf /usr/share/R /usr/lib/R || true + # 移除大型預裝軟體(約 50-60GB) + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc || true + sudo rm -rf /opt/hostedtoolcache /usr/share/swift /opt/microsoft || true + sudo rm -rf /usr/local/aws-* /usr/local/julia* /usr/share/az_* /opt/az || true + sudo rm -rf /usr/lib/google-cloud-sdk /usr/local/share/powershell || true + sudo rm -rf /usr/share/miniconda /usr/local/go ~/go || true + sudo rm -rf /usr/share/rust ~/.rustup ~/.cargo /usr/share/R /usr/lib/R || true + sudo rm -rf /usr/local/share/boost /usr/local/graalvm /usr/local/.ghcup || true + sudo rm -rf /usr/local/share/chromium || true - # 移除預裝資料庫 - sudo rm -rf /var/lib/mysql || true - sudo rm -rf /var/lib/postgresql || true - sudo rm -rf /var/lib/mongodb || true + # 移除資料庫 + sudo rm -rf /var/lib/mysql /var/lib/postgresql /var/lib/mongodb || true - # 移除文檔 - sudo rm -rf /usr/share/doc || true - sudo rm -rf /usr/share/man || true - sudo rm -rf /usr/share/locale || true - sudo rm -rf /usr/share/icons || true + # 移除 snap/flatpak + sudo rm -rf /snap /var/snap /var/lib/snapd || true - # 清理 APT - sudo apt-get clean || true - sudo rm -rf /var/lib/apt/lists/* || true - sudo rm -rf /var/cache/apt/archives || true + # 移除文檔和 locale + sudo rm -rf /usr/share/doc /usr/share/man /usr/share/locale || true + sudo rm -rf /usr/share/icons /usr/share/fonts /usr/share/help || true - # 清理 Docker(完全重置) - sudo rm -rf /var/lib/docker || true - sudo mkdir -p /var/lib/docker + # 移除 imagegeneration(GitHub runner 專用) + sudo rm -rf /imagegeneration /opt/actionarchivecache || true - # 重啟 Docker - sudo systemctl start docker || true + # 清理 cache + sudo apt-get clean && sudo apt-get autoremove -y || true + sudo rm -rf /var/lib/apt/lists/* /var/cache/* /tmp/* || true + + # 完全重置 Docker + sudo rm -rf /var/lib/docker /var/lib/containerd || true + sudo mkdir -p /var/lib/docker /var/lib/containerd + sudo systemctl start containerd docker || true - echo "========================================" echo "📊 清理後磁碟空間:" df -h / - echo "========================================" + + # 驗證空間 + AVAIL_GB=$(df / | tail -1 | awk '{print int($4/1024/1024)}') + echo "可用空間: ${AVAIL_GB}GB" + [ "$AVAIL_GB" -ge 50 ] && echo "✅ 空間充足" || echo "⚠️ 空間可能不足" - name: Checkout repository uses: actions/checkout@v4 @@ -247,9 +237,15 @@ jobs: driver-opts: | image=moby/buildkit:latest network=host + # 限制 BuildKit 使用的磁碟空間 buildkitd-config-inline: | [worker.oci] - max-parallelism = 2 + max-parallelism = 1 + gc = true + gckeepstorage = 5000000000 + [worker.containerd] + gc = true + gckeepstorage = 5000000000 - name: Login to Docker Hub uses: docker/login-action@v3 @@ -257,7 +253,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: "� 開始構建 ARM64 Image" + - name: "📦 開始構建 ARM64 Image" run: | echo "========================================" echo "📦 開始構建 ARM64 Docker Image..." @@ -273,7 +269,7 @@ jobs: echo "開始時間: $(date)" echo "========================================" - - name: "�🐳 Build and push ARM64 image" + - name: "🐳 Build and push ARM64 image" uses: docker/build-push-action@v6 with: context: . @@ -287,7 +283,6 @@ jobs: sbom: false build-args: | BUILDKIT_INLINE_CACHE=1 - - name: "✅ ARM64 Image 構建完成" run: | echo "========================================"