From 02cadea0236d7a0fa5ea91898a40c4ee33ab3e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnold=20G=C3=A1lovics?= Date: Thu, 6 Mar 2025 18:35:35 +0100 Subject: [PATCH] Multi-arch docker image for x86 and arm64 + hashed tagging Multi-arch docker image for x86 and arm64 --- .github/workflows/create-docker-hub-image.yml | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/.github/workflows/create-docker-hub-image.yml b/.github/workflows/create-docker-hub-image.yml index 23847eddb..c009c0fc2 100644 --- a/.github/workflows/create-docker-hub-image.yml +++ b/.github/workflows/create-docker-hub-image.yml @@ -8,28 +8,40 @@ jobs: build: runs-on: ubuntu-latest env: - DOCKER_ORGANIZATION: ${{secrets.DOCKER_ORGANIZATION}} + DOCKER_ORGANIZATION: ${{ secrets.DOCKER_ORGANIZATION }} steps: - uses: actions/checkout@v2 - - name: Docker Hub Login - env: - DOCKER_USER: ${{secrets.DOCKER_USER}} - DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} - run: | - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USER --password-stdin + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKER_PASSWORD }} - name: Extract branch name shell: bash run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT id: extract_branch - - name: Build the Docker image - run: docker build -t web-app:latest . + - name: Get Git Hashes + run: | + echo "short_hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + echo "long_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + id: git_hashes - - name: Docker Hub Prepare - run: docker image tag web-app $DOCKER_ORGANIZATION/web-app:${{ steps.extract_branch.outputs.branch }} + - name: Build and Push Multi-Arch Docker Image + run: | + TAGS="--tag $DOCKER_ORGANIZATION/web-app:${{ steps.extract_branch.outputs.branch }}" - - name: Docker Hub Push - run: docker image push $DOCKER_ORGANIZATION/web-app:${{ steps.extract_branch.outputs.branch }} + if [ "${{ steps.extract_branch.outputs.branch }}" == "develop" ]; then + TAGS="$TAGS --tag $DOCKER_ORGANIZATION/web-app:${{ steps.git_hashes.outputs.short_hash }} --tag $DOCKER_ORGANIZATION/web-app:${{ steps.git_hashes.outputs.long_hash }}" + fi + + docker build --push --build-arg="PUPPETEER_SKIP_DOWNLOAD_ARG=true" --platform linux/amd64,linux/arm64 $TAGS .