diff --git a/.github/workflows/docker-build-and-push.yml b/.github/workflows/docker-build-and-push.yml new file mode 100644 index 00000000..2d67b210 --- /dev/null +++ b/.github/workflows/docker-build-and-push.yml @@ -0,0 +1,73 @@ +# Based on https://github.com/docker/build-push-action + +name: "Docker Multiarch Build & Push" + +on: + release: +# types: [published] + branches: [master] + +env: + DOCKER_HUB_USER: neilalexander + +jobs: + BuildAndPush: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Get release tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ env.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_TOKEN }} + - + name: Build temporary (builder) image + id: docker_build_temporary + uses: docker/build-push-action@v2 + with: + context: . + file: ./build/docker/Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: false + tags: ${{ env.DOCKER_HUB_USER }}/dendrite:latest + - + name: Build monolith image + id: docker_build_monolith + uses: docker/build-push-action@v2 + with: + context: . + file: ./build/docker/Dockerfile.monolith + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + ${{ env.DOCKER_HUB_USER }}/dendrite-monolith:latest + ${{ env.DOCKER_HUB_USER }}/dendrite-monolith:${{ env.RELEASE_VERSION }} + - + name: Build polylith image + id: docker_build_polylith + uses: docker/build-push-action@v2 + with: + context: . + file: ./build/docker/Dockerfile.polylith + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + ${{ env.DOCKER_HUB_USER }}/dendrite-polylith:latest + ${{ env.DOCKER_HUB_USER }}/dendrite-polylith:${{ env.RELEASE_VERSION }} + - + name: Image digest + run: | + echo Monolith ( ${{ env.RELEASE_VERSION }} ) image digest - ${{ steps.docker_build_monolith.outputs.digest }} + echo Polylith ( ${{ env.RELEASE_VERSION }} ) image digest - ${{ steps.docker_build_polylith.outputs.digest }}