From 9e650c6ad3b3713e247fd4587e1a6ab903400a86 Mon Sep 17 00:00:00 2001 From: Peleke Sengstacke Date: Thu, 6 Nov 2025 18:23:28 -0500 Subject: [PATCH] perf(ci): implement Docker Buildx with registry layer caching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use docker/setup-buildx-action for advanced caching - Use docker/build-push-action for layer cache support - Cache layers in Artifact Registry (buildcache ref) - mode=max exports all layers for maximum cache reuse Expected: 60-80% faster builds on subsequent runs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/staging-deploy.yml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/staging-deploy.yml b/.github/workflows/staging-deploy.yml index 9fd81233..e01d74fe 100644 --- a/.github/workflows/staging-deploy.yml +++ b/.github/workflows/staging-deploy.yml @@ -33,6 +33,9 @@ jobs: - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Configure Docker for Artifact Registry run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev @@ -43,16 +46,18 @@ jobs: echo "timestamp=$(date +%Y%m%d-%H%M%S)" >> $GITHUB_OUTPUT - name: Build and push container - run: | - docker build \ - --build-arg NEXT_PUBLIC_SUPABASE_URL="${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}" \ - --build-arg NEXT_PUBLIC_SUPABASE_ANON_KEY="${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}" \ - -t ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:staging-${{ steps.vars.outputs.short_sha }} \ - -t ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:staging-latest \ - . - - docker push ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:staging-${{ steps.vars.outputs.short_sha }} - docker push ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:staging-latest + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:staging-${{ steps.vars.outputs.short_sha }} + ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:staging-latest + build-args: | + NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} + NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} + cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:buildcache + cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/interlinear/app:buildcache,mode=max - name: Deploy to Cloud Run run: |