fix: 更激進的磁碟清理 + BuildKit GC 設定

This commit is contained in:
Your Name 2026-01-25 20:02:28 +08:00
parent b8025f3256
commit 367f2b4ca6

View file

@ -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
# 移除 imagegenerationGitHub 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: "<EFBFBD> 開始構建 AMD64 Image"
- name: "📦 開始構建 AMD64 Image"
run: |
echo "========================================"
echo "📦 開始構建 AMD64 Docker Image..."
@ -131,7 +129,7 @@ jobs:
echo "開始時間: $(date)"
echo "========================================"
- name: "<EFBFBD>🐳 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
# 移除 imagegenerationGitHub 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: "<EFBFBD> 開始構建 ARM64 Image"
- name: "📦 開始構建 ARM64 Image"
run: |
echo "========================================"
echo "📦 開始構建 ARM64 Docker Image..."
@ -273,7 +269,7 @@ jobs:
echo "開始時間: $(date)"
echo "========================================"
- name: "<EFBFBD>🐳 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 "========================================"