name: docker on: push: tags: - "v*" env: DOCKER_REPO: richarvey/mailhog jobs: build: timeout-minutes: 30 strategy: matrix: platform: - linux/amd64 - linux/arm64 - linux/arm/v6 - linux/arm/v7 steps: - name: Set vars id: vars run: | echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT echo "platform=$(echo -n ${{ matrix.platform }} | sed 's/\//-/g')" >> $GITHUB_OUTPUT - uses: actions/checkout@v3 - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build docker images uses: docker/build-push-action@v5 with: context: . push: true platforms: ${{ matrix.platform }} tags: | ${{ env.DOCKER_REPO }}:${{ steps.vars.outputs.version }}-${{ steps.vars.outputs.platform }} release: timeout-minutes: 10 needs: build steps: - name: Set vars id: vars run: | echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Create Docker Hub manifest run: | docker manifest create $DOCKER_REPO:latest \ $DOCKER_REPO:${{ steps.vars.outputs.version }}-linux-amd64 \ $DOCKER_REPO:${{ steps.vars.outputs.version }}-linux-arm64 \ $DOCKER_REPO:${{ steps.vars.outputs.version }}-linux-arm-v6 \ $DOCKER_REPO:${{ steps.vars.outputs.version }}-linux-arm-v7 - name: Push manifests run: | docker manifest push $DOCKER_REPO:latest