From 2a84df471d8b15b3ec76309b4314dc4c60dcfc20 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 28 Mar 2026 12:16:20 -0500 Subject: [PATCH] fix: use legacy Docker build to avoid permission errors in CI (#206) - Replace BuildKit with legacy docker build (DOCKER_BUILDKIT=0) - Use plain docker login instead of docker/login-action - Remove BuildKit setup action entirely - Works with VFS storage driver on unprivileged runners Reviewed-on: https://git.mcintire.me/graham/towerops-web/pulls/206 --- .forgejo/workflows/production.yaml | 39 ++++++++++++++---------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/.forgejo/workflows/production.yaml b/.forgejo/workflows/production.yaml index f51314fd..187aa3f8 100644 --- a/.forgejo/workflows/production.yaml +++ b/.forgejo/workflows/production.yaml @@ -106,18 +106,9 @@ jobs: timeout 30 bash -c 'until docker info > /dev/null 2>&1; do sleep 1; done' fi - - name: Set up Docker Buildx - uses: https://github.com/docker/setup-buildx-action@v3 - with: - driver: docker - install: true - - name: Log in to Container Registry - uses: https://github.com/docker/login-action@v3 - with: - registry: ${{ secrets.REGISTRY_URL }} - username: ${{ secrets.REGISTRY_USER }} - password: ${{ secrets.REGISTRY_PASSWORD }} + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ secrets.REGISTRY_URL }} -u "${{ secrets.REGISTRY_USER }}" --password-stdin - name: Generate image tag id: tag @@ -130,16 +121,22 @@ jobs: echo "Full image tag: ${TAG}" - name: Build and push Docker image - uses: https://github.com/docker/build-push-action@v5 - with: - context: . - file: k8s/Dockerfile - push: true - tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }} - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:production - build-args: | - MIX_ENV=prod + env: + DOCKER_BUILDKIT: 0 + run: | + IMAGE_TAG="${{ steps.tag.outputs.tag }}" + + # Build image + docker build \ + --file k8s/Dockerfile \ + --build-arg MIX_ENV=prod \ + --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${IMAGE_TAG} \ + --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:production \ + . + + # Push both tags + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${IMAGE_TAG} + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:production - name: Update deployment manifest run: |