diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 9cfaa8fa..9af451e0 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -23,10 +23,9 @@ jobs: qemu-user-static \ binfmt-support - - name: Set up Docker Buildx + - name: Set up QEMU run: | - docker buildx create --use - docker buildx inspect --bootstrap + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - name: Login to registry env: @@ -35,17 +34,45 @@ jobs: run: | echo "$REGISTRY_PASS" | DOCKER_API_VERSION=1.44 docker login registry.infra.mintel.me -u "$REGISTRY_USER" --password-stdin - - name: Build and push image + - name: Build image for AMD64 run: | - # Build for ARM64 using Buildx (required for cross-platform build) - DOCKER_API_VERSION=1.44 docker buildx build \ + # Build for AMD64 (x86_64) + DOCKER_API_VERSION=1.44 docker build \ + --platform linux/amd64 \ + --pull \ + --build-arg NEXT_PUBLIC_UMAMI_WEBSITE_ID=${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID }} \ + --build-arg NEXT_PUBLIC_UMAMI_SCRIPT_URL=${{ secrets.NEXT_PUBLIC_UMAMI_SCRIPT_URL }} \ + --build-arg NEXT_PUBLIC_SENTRY_DSN=${{ secrets.SENTRY_DSN }} \ + -t registry.infra.mintel.me/mintel/klz-cables.com:amd64 . + + - name: Build image for ARM64 + run: | + # Build for ARM64 using QEMU emulation + DOCKER_API_VERSION=1.44 docker build \ --platform linux/arm64 \ --pull \ --build-arg NEXT_PUBLIC_UMAMI_WEBSITE_ID=${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID }} \ --build-arg NEXT_PUBLIC_UMAMI_SCRIPT_URL=${{ secrets.NEXT_PUBLIC_UMAMI_SCRIPT_URL }} \ --build-arg NEXT_PUBLIC_SENTRY_DSN=${{ secrets.SENTRY_DSN }} \ - -t registry.infra.mintel.me/mintel/klz-cables.com:latest \ - --push . + -t registry.infra.mintel.me/mintel/klz-cables.com:arm64 . + + - name: Push architecture-specific images + run: | + # Push both architecture-specific images + DOCKER_API_VERSION=1.44 docker push registry.infra.mintel.me/mintel/klz-cables.com:amd64 + DOCKER_API_VERSION=1.44 docker push registry.infra.mintel.me/mintel/klz-cables.com:arm64 + + - name: Create and push multi-arch manifest + run: | + # Create multi-arch manifest + DOCKER_API_VERSION=1.44 docker manifest create \ + registry.infra.mintel.me/mintel/klz-cables.com:latest \ + registry.infra.mintel.me/mintel/klz-cables.com:amd64 \ + registry.infra.mintel.me/mintel/klz-cables.com:arm64 + + # Push the manifest + DOCKER_API_VERSION=1.44 docker manifest push \ + registry.infra.mintel.me/mintel/klz-cables.com:latest - name: Setup SSH run: |