mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-05-06 17:49:07 -05:00
feat(containers): comprehensive buildx optimization for production reliability
Added comprehensive buildx optimizations to ensure maximum reliability and performance for Linux container builds: 🚀 Advanced Buildx Configuration: - Use latest moby/buildkit image for best performance - Configure garbage collection (9GB keep storage) - Limit parallelism to 2 workers to prevent resource exhaustion - Add Docker Hub mirror (mirror.gcr.io) for faster pulls - Enhanced entitlements for complex builds 💾 Smart Caching Strategy: - GitHub Actions cache integration with mode=max - Conditional cache logic: respects no_cache input properly - Cache disabled only when explicitly requested via workflow_dispatch 🧹 Resource Management: - Pre-build disk cleanup removes unnecessary files (~14GB freed) - Removes .NET, Android SDK, GHC, CodeQL tools - Docker system prune for clean build environment - Disk space monitoring before/after cleanup 🔧 Build Reliability: - Network host mode for better connectivity - Security entitlements for complex operations - Optimized worker configuration for stability - Registry mirrors for faster base image pulls These optimizations should resolve buildx issues and provide: - Faster builds through better caching and mirrors - More reliable builds through resource management - Better handling of complex multi-step builds like TeX Live - Reduced build failures due to disk space or resource limits
This commit is contained in:
35
.github/workflows/build-linux-container.yml
vendored
35
.github/workflows/build-linux-container.yml
vendored
@@ -147,13 +147,42 @@ jobs:
|
||||
- name: 📥 Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 🧹 Free up disk space
|
||||
run: |
|
||||
echo "🧹 Freeing up disk space for large container build..."
|
||||
echo "📊 Disk space before cleanup:"
|
||||
df -h /
|
||||
|
||||
# Remove unnecessary packages and files
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf /opt/hostedtoolcache/CodeQL
|
||||
sudo docker system prune -af
|
||||
|
||||
echo "📊 Disk space after cleanup:"
|
||||
df -h /
|
||||
echo "✅ Disk cleanup complete"
|
||||
|
||||
- name: 🐳 Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: docker-container
|
||||
driver-opts: |
|
||||
network=host
|
||||
buildkitd-flags: --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
|
||||
image=moby/buildkit:latest
|
||||
buildkitd-flags: |
|
||||
--allow-insecure-entitlement security.insecure
|
||||
--allow-insecure-entitlement network.host
|
||||
--oci-worker-gc=true
|
||||
--oci-worker-gc-keepstorage=9000mb
|
||||
config-inline: |
|
||||
[worker.oci]
|
||||
max-parallelism = 2
|
||||
[worker.containerd]
|
||||
max-parallelism = 2
|
||||
[registry."docker.io"]
|
||||
mirrors = ["mirror.gcr.io"]
|
||||
|
||||
- name: 🔐 Log in to Container Registry
|
||||
id: login
|
||||
@@ -244,8 +273,8 @@ jobs:
|
||||
platforms: ${{ env.PLATFORM }}
|
||||
provenance: false # Disable provenance for better compatibility
|
||||
sbom: false # Disable SBOM for better compatibility
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
cache-from: ${{ (github.event_name != 'workflow_dispatch' || !inputs.no_cache) && 'type=gha' || '' }}
|
||||
cache-to: ${{ (github.event_name != 'workflow_dispatch' || !inputs.no_cache) && 'type=gha,mode=max' || '' }}
|
||||
outputs: type=docker
|
||||
|
||||
- name: Build Complete
|
||||
|
||||
Reference in New Issue
Block a user