diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 2d49b81..f68fe15 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -30,7 +30,7 @@ jobs: - name: Run tests for backend run: yarn test - build-and-push: + build-and-push-amd64: runs-on: ubuntu-latest needs: test if: ${{ needs.test.result == 'success' }} @@ -38,8 +38,35 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: docker.io + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Build and Push Docker Image (amd64) + uses: docker/build-push-action@v4 + with: + context: ./ + push: true + platforms: linux/amd64 + build-args: | + VERSION_ARG=${{ github.ref_name }} + tags: | + quickstack/quickstack:latest-amd64 + quickstack/quickstack:${{ github.ref_name }}-amd64 + + build-and-push-arm64: + runs-on: ubuntu-latest + needs: test + if: ${{ needs.test.result == 'success' }} + steps: + - name: Checkout code + uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 @@ -51,17 +78,45 @@ jobs: username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - - name: Build and Push Docker Image + - name: Build and Push Docker Image (arm64) uses: docker/build-push-action@v4 with: context: ./ push: true - platforms: linux/amd64,linux/arm64 + platforms: linux/arm64 build-args: | VERSION_ARG=${{ github.ref_name }} tags: | - quickstack/quickstack:latest - quickstack/quickstack:${{ github.ref_name }} + quickstack/quickstack:latest-arm64 + quickstack/quickstack:${{ github.ref_name }}-arm64 + + build-and-push-manifest: + runs-on: ubuntu-latest + needs: [build-and-push-amd64, build-and-push-arm64] + steps: + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: docker.io + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Create multi-arch manifest (latest) + run: | + docker buildx imagetools create -t quickstack/quickstack:latest \ + quickstack/quickstack:latest-amd64 \ + quickstack/quickstack:latest-arm64 + docker buildx imagetools inspect quickstack/quickstack:latest + + - name: Create multi-arch manifest (versioned) + run: | + docker buildx imagetools create -t quickstack/quickstack:${{ github.ref_name }} \ + quickstack/quickstack:${{ github.ref_name }}-amd64 \ + quickstack/quickstack:${{ github.ref_name }}-arm64 + docker buildx imagetools inspect quickstack/quickstack:${{ github.ref_name }} build-and-push-mongodb-backup: runs-on: ubuntu-latest diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml index af7ec49..eacff60 100644 --- a/.github/workflows/canary-release.yml +++ b/.github/workflows/canary-release.yml @@ -31,7 +31,7 @@ jobs: - name: Run tests for backend run: yarn test - build-and-push: + build-and-push-amd64: runs-on: ubuntu-latest needs: test if: ${{ needs.test.result == 'success' }} @@ -39,8 +39,34 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: docker.io + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Build and Push Docker Image (amd64) + uses: docker/build-push-action@v4 + with: + context: ./ + push: true + platforms: linux/amd64 + build-args: | + VERSION_ARG=canary-${{ github.run_number }} + tags: | + quickstack/quickstack:canary-amd64 + + build-and-push-arm64: + runs-on: ubuntu-latest + needs: test + if: ${{ needs.test.result == 'success' }} + steps: + - name: Checkout code + uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 @@ -52,16 +78,37 @@ jobs: username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - - name: Build and Push Docker Image + - name: Build and Push Docker Image (arm64) uses: docker/build-push-action@v4 with: context: ./ push: true - platforms: linux/amd64 #,linux/arm64 + platforms: linux/arm64 build-args: | VERSION_ARG=canary-${{ github.run_number }} tags: | - quickstack/quickstack:canary + quickstack/quickstack:canary-arm64 + + build-and-push-manifest: + runs-on: ubuntu-latest + needs: [build-and-push-amd64, build-and-push-arm64] + steps: + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: docker.io + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Create multi-arch manifest (canary) + run: | + docker buildx imagetools create -t quickstack/quickstack:canary \ + quickstack/quickstack:canary-amd64 \ + quickstack/quickstack:canary-arm64 + docker buildx imagetools inspect quickstack/quickstack:canary build-and-push-mongodb-backup: runs-on: ubuntu-latest