name: Build and Push Docker Images (Default + Simple Mode) on: push: branches: - 'main' tags: - 'v*' workflow_dispatch: jobs: docker-build-and-push: runs-on: ubuntu-latest permissions: contents: write packages: write strategy: matrix: mode: - name: default simple_mode: false suffix: '' - name: simple simple_mode: true suffix: '-simple' steps: - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract version from tag id: version run: | if [[ $GITHUB_REF == refs/tags/* ]]; then VERSION=${GITHUB_REF#refs/tags/} echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "version_without_v=${VERSION#v}" >> $GITHUB_OUTPUT else echo "version=latest" >> $GITHUB_OUTPUT echo "version_without_v=latest" >> $GITHUB_OUTPUT fi - name: Build and push ${{ matrix.mode.name }} image uses: docker/build-push-action@v6 with: push: true build-args: | SIMPLE_MODE=${{ matrix.mode.simple_mode }} tags: | bentopdf/bentopdf${{ matrix.mode.suffix }}:latest bentopdf/bentopdf${{ matrix.mode.suffix }}:${{ steps.version.outputs.version_without_v }} bentopdf/bentopdf${{ matrix.mode.suffix }}:${{ steps.version.outputs.version }} ghcr.io/${{ github.repository_owner }}/bentopdf${{ matrix.mode.suffix }}:latest ghcr.io/${{ github.repository_owner }}/bentopdf${{ matrix.mode.suffix }}:${{ steps.version.outputs.version_without_v }} ghcr.io/${{ github.repository_owner }}/bentopdf${{ matrix.mode.suffix }}:${{ steps.version.outputs.version }} platforms: linux/amd64,linux/arm64 cache-from: type=gha cache-to: type=gha,mode=max