name: Docker Images CI
on:
  push:
    branches: dev

jobs:
  buildx:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v3
      -
        name: Set up Docker Buildx
        uses: crazy-max/ghaction-docker-buildx@v3
      -
        name: Cache Docker layers
        uses: actions/cache@v3
        id: cache
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      -
        name: Docker Buildx (build amd64)
        run: |
          docker buildx build \
            --cache-from "type=local,src=/tmp/.buildx-cache" \
            --cache-to "type=local,dest=/tmp/.buildx-cache" \
            --platform linux/amd64 \
            --output "type=image,push=false" \
            --tag albertoxamin/bang:dev \
            --file ./Dockerfile ./
      -
        name: Docker Buildx (build armv-7)
        run: |
          docker buildx build \
            --cache-from "type=local,src=/tmp/.buildx-cache" \
            --cache-to "type=local,dest=/tmp/.buildx-cache" \
            --platform linux/arm/v7 \
            --output "type=image,push=false" \
            --tag albertoxamin/bang:dev \
            --file ./Dockerfile ./
      -
        name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      -
        name: Docker Buildx (push)
        run: |
          docker buildx build \
            --cache-from "type=local,src=/tmp/.buildx-cache" \
            --platform linux/amd64,linux/arm/v7 \
            --output "type=image,push=true" \
            --tag albertoxamin/bang:dev \
            --file ./Dockerfile ./
      -
        name: Inspect image
        run: |
          docker buildx imagetools inspect albertoxamin/bang:dev
      
      - name: Notify discord
        uses: th0th/notify-discord@v0.4.1
        if: ${{ always() }}
        env:
          DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
          GITHUB_ACTOR: ${{ github.actor }}
          GITHUB_JOB_NAME: "Docker image :dev"
          GITHUB_JOB_STATUS: ${{ job.status }}
