fix: 更激進的磁碟清理 + BuildKit GC 設定
This commit is contained in:
parent
b8025f3256
commit
367f2b4ca6
1 changed files with 88 additions and 93 deletions
181
.github/workflows/release.yml
vendored
181
.github/workflows/release.yml
vendored
|
|
@ -29,64 +29,56 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# ========================================
|
# ========================================
|
||||||
# 🔥 第一步就清理磁碟(在 checkout 之前!)
|
# 🔥 極限磁碟清理(釋放 70GB+ 空間)
|
||||||
# ========================================
|
# ========================================
|
||||||
- name: Maximize disk space (before checkout)
|
- name: Maximize disk space (before checkout)
|
||||||
run: |
|
run: |
|
||||||
echo "🧹 極限磁碟清理(在 checkout 之前)..."
|
echo "🧹 極限磁碟清理..."
|
||||||
echo "========================================"
|
|
||||||
echo "📊 初始磁碟空間:"
|
echo "📊 初始磁碟空間:"
|
||||||
df -h /
|
df -h /
|
||||||
echo "========================================"
|
|
||||||
|
|
||||||
# 停止不需要的服務
|
# 停止服務
|
||||||
sudo systemctl stop docker || true
|
sudo systemctl stop docker containerd || true
|
||||||
|
|
||||||
# 移除大型預裝軟體(最關鍵!)
|
# 移除大型預裝軟體(約 50-60GB)
|
||||||
sudo rm -rf /usr/share/dotnet || true # ~6GB
|
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc || true
|
||||||
sudo rm -rf /usr/local/lib/android || true # ~10GB
|
sudo rm -rf /opt/hostedtoolcache /usr/share/swift /opt/microsoft || true
|
||||||
sudo rm -rf /opt/ghc || true # ~2GB
|
sudo rm -rf /usr/local/aws-* /usr/local/julia* /usr/share/az_* /opt/az || true
|
||||||
sudo rm -rf /opt/hostedtoolcache || true # ~8GB
|
sudo rm -rf /usr/lib/google-cloud-sdk /usr/local/share/powershell || true
|
||||||
sudo rm -rf /usr/share/swift || true # ~1.5GB
|
sudo rm -rf /usr/share/miniconda /usr/local/go ~/go || true
|
||||||
sudo rm -rf /usr/local/share/boost || true # ~500MB
|
sudo rm -rf /usr/share/rust ~/.rustup ~/.cargo /usr/share/R /usr/lib/R || true
|
||||||
sudo rm -rf /opt/microsoft || true # ~1GB
|
sudo rm -rf /usr/local/share/boost /usr/local/graalvm /usr/local/.ghcup || true
|
||||||
sudo rm -rf /usr/local/aws-* || true
|
sudo rm -rf /usr/local/share/chromium || 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
|
|
||||||
|
|
||||||
# 移除預裝資料庫
|
# 移除資料庫
|
||||||
sudo rm -rf /var/lib/mysql || true
|
sudo rm -rf /var/lib/mysql /var/lib/postgresql /var/lib/mongodb || true
|
||||||
sudo rm -rf /var/lib/postgresql || true
|
|
||||||
sudo rm -rf /var/lib/mongodb || true
|
|
||||||
|
|
||||||
# 移除文檔
|
# 移除 snap/flatpak
|
||||||
sudo rm -rf /usr/share/doc || true
|
sudo rm -rf /snap /var/snap /var/lib/snapd || true
|
||||||
sudo rm -rf /usr/share/man || true
|
|
||||||
sudo rm -rf /usr/share/locale || true
|
|
||||||
sudo rm -rf /usr/share/icons || true
|
|
||||||
|
|
||||||
# 清理 APT
|
# 移除文檔和 locale
|
||||||
sudo apt-get clean || true
|
sudo rm -rf /usr/share/doc /usr/share/man /usr/share/locale || true
|
||||||
sudo rm -rf /var/lib/apt/lists/* || true
|
sudo rm -rf /usr/share/icons /usr/share/fonts /usr/share/help || true
|
||||||
sudo rm -rf /var/cache/apt/archives || true
|
|
||||||
|
|
||||||
# 清理 Docker(完全重置)
|
# 移除 imagegeneration(GitHub runner 專用)
|
||||||
sudo rm -rf /var/lib/docker || true
|
sudo rm -rf /imagegeneration /opt/actionarchivecache || true
|
||||||
sudo mkdir -p /var/lib/docker
|
|
||||||
|
|
||||||
# 重啟 Docker
|
# 清理 cache
|
||||||
sudo systemctl start docker || true
|
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 "📊 清理後磁碟空間:"
|
echo "📊 清理後磁碟空間:"
|
||||||
df -h /
|
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
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
@ -106,9 +98,15 @@ jobs:
|
||||||
driver-opts: |
|
driver-opts: |
|
||||||
image=moby/buildkit:latest
|
image=moby/buildkit:latest
|
||||||
network=host
|
network=host
|
||||||
|
# 限制 BuildKit 使用的磁碟空間
|
||||||
buildkitd-config-inline: |
|
buildkitd-config-inline: |
|
||||||
[worker.oci]
|
[worker.oci]
|
||||||
max-parallelism = 2
|
max-parallelism = 1
|
||||||
|
gc = true
|
||||||
|
gckeepstorage = 5000000000
|
||||||
|
[worker.containerd]
|
||||||
|
gc = true
|
||||||
|
gckeepstorage = 5000000000
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
|
|
@ -116,7 +114,7 @@ jobs:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: "<EFBFBD> 開始構建 AMD64 Image"
|
- name: "📦 開始構建 AMD64 Image"
|
||||||
run: |
|
run: |
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo "📦 開始構建 AMD64 Docker Image..."
|
echo "📦 開始構建 AMD64 Docker Image..."
|
||||||
|
|
@ -131,7 +129,7 @@ jobs:
|
||||||
echo "開始時間: $(date)"
|
echo "開始時間: $(date)"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
- name: "<EFBFBD>🐳 Build and push AMD64 image"
|
- name: "🐳 Build and push AMD64 image"
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
|
|
@ -167,64 +165,56 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# ========================================
|
# ========================================
|
||||||
# 🔥 第一步就清理磁碟(在 checkout 之前!)
|
# 🔥 極限磁碟清理(釋放 70GB+ 空間)
|
||||||
# ========================================
|
# ========================================
|
||||||
- name: Maximize disk space (before checkout)
|
- name: Maximize disk space (before checkout)
|
||||||
run: |
|
run: |
|
||||||
echo "🧹 極限磁碟清理(在 checkout 之前)..."
|
echo "🧹 極限磁碟清理..."
|
||||||
echo "========================================"
|
|
||||||
echo "📊 初始磁碟空間:"
|
echo "📊 初始磁碟空間:"
|
||||||
df -h /
|
df -h /
|
||||||
echo "========================================"
|
|
||||||
|
|
||||||
# 停止不需要的服務
|
# 停止服務
|
||||||
sudo systemctl stop docker || true
|
sudo systemctl stop docker containerd || true
|
||||||
|
|
||||||
# 移除大型預裝軟體(最關鍵!)
|
# 移除大型預裝軟體(約 50-60GB)
|
||||||
sudo rm -rf /usr/share/dotnet || true # ~6GB
|
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc || true
|
||||||
sudo rm -rf /usr/local/lib/android || true # ~10GB
|
sudo rm -rf /opt/hostedtoolcache /usr/share/swift /opt/microsoft || true
|
||||||
sudo rm -rf /opt/ghc || true # ~2GB
|
sudo rm -rf /usr/local/aws-* /usr/local/julia* /usr/share/az_* /opt/az || true
|
||||||
sudo rm -rf /opt/hostedtoolcache || true # ~8GB
|
sudo rm -rf /usr/lib/google-cloud-sdk /usr/local/share/powershell || true
|
||||||
sudo rm -rf /usr/share/swift || true # ~1.5GB
|
sudo rm -rf /usr/share/miniconda /usr/local/go ~/go || true
|
||||||
sudo rm -rf /usr/local/share/boost || true # ~500MB
|
sudo rm -rf /usr/share/rust ~/.rustup ~/.cargo /usr/share/R /usr/lib/R || true
|
||||||
sudo rm -rf /opt/microsoft || true # ~1GB
|
sudo rm -rf /usr/local/share/boost /usr/local/graalvm /usr/local/.ghcup || true
|
||||||
sudo rm -rf /usr/local/aws-* || true
|
sudo rm -rf /usr/local/share/chromium || 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
|
|
||||||
|
|
||||||
# 移除預裝資料庫
|
# 移除資料庫
|
||||||
sudo rm -rf /var/lib/mysql || true
|
sudo rm -rf /var/lib/mysql /var/lib/postgresql /var/lib/mongodb || true
|
||||||
sudo rm -rf /var/lib/postgresql || true
|
|
||||||
sudo rm -rf /var/lib/mongodb || true
|
|
||||||
|
|
||||||
# 移除文檔
|
# 移除 snap/flatpak
|
||||||
sudo rm -rf /usr/share/doc || true
|
sudo rm -rf /snap /var/snap /var/lib/snapd || true
|
||||||
sudo rm -rf /usr/share/man || true
|
|
||||||
sudo rm -rf /usr/share/locale || true
|
|
||||||
sudo rm -rf /usr/share/icons || true
|
|
||||||
|
|
||||||
# 清理 APT
|
# 移除文檔和 locale
|
||||||
sudo apt-get clean || true
|
sudo rm -rf /usr/share/doc /usr/share/man /usr/share/locale || true
|
||||||
sudo rm -rf /var/lib/apt/lists/* || true
|
sudo rm -rf /usr/share/icons /usr/share/fonts /usr/share/help || true
|
||||||
sudo rm -rf /var/cache/apt/archives || true
|
|
||||||
|
|
||||||
# 清理 Docker(完全重置)
|
# 移除 imagegeneration(GitHub runner 專用)
|
||||||
sudo rm -rf /var/lib/docker || true
|
sudo rm -rf /imagegeneration /opt/actionarchivecache || true
|
||||||
sudo mkdir -p /var/lib/docker
|
|
||||||
|
|
||||||
# 重啟 Docker
|
# 清理 cache
|
||||||
sudo systemctl start docker || true
|
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 "📊 清理後磁碟空間:"
|
echo "📊 清理後磁碟空間:"
|
||||||
df -h /
|
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
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
@ -247,9 +237,15 @@ jobs:
|
||||||
driver-opts: |
|
driver-opts: |
|
||||||
image=moby/buildkit:latest
|
image=moby/buildkit:latest
|
||||||
network=host
|
network=host
|
||||||
|
# 限制 BuildKit 使用的磁碟空間
|
||||||
buildkitd-config-inline: |
|
buildkitd-config-inline: |
|
||||||
[worker.oci]
|
[worker.oci]
|
||||||
max-parallelism = 2
|
max-parallelism = 1
|
||||||
|
gc = true
|
||||||
|
gckeepstorage = 5000000000
|
||||||
|
[worker.containerd]
|
||||||
|
gc = true
|
||||||
|
gckeepstorage = 5000000000
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
|
|
@ -257,7 +253,7 @@ jobs:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: "<EFBFBD> 開始構建 ARM64 Image"
|
- name: "📦 開始構建 ARM64 Image"
|
||||||
run: |
|
run: |
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo "📦 開始構建 ARM64 Docker Image..."
|
echo "📦 開始構建 ARM64 Docker Image..."
|
||||||
|
|
@ -273,7 +269,7 @@ jobs:
|
||||||
echo "開始時間: $(date)"
|
echo "開始時間: $(date)"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
- name: "<EFBFBD>🐳 Build and push ARM64 image"
|
- name: "🐳 Build and push ARM64 image"
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
|
|
@ -287,7 +283,6 @@ jobs:
|
||||||
sbom: false
|
sbom: false
|
||||||
build-args: |
|
build-args: |
|
||||||
BUILDKIT_INLINE_CACHE=1
|
BUILDKIT_INLINE_CACHE=1
|
||||||
|
|
||||||
- name: "✅ ARM64 Image 構建完成"
|
- name: "✅ ARM64 Image 構建完成"
|
||||||
run: |
|
run: |
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue