name: Docker build on push

env:
    DOCKER_CLI_EXPERIMENTAL: enabled

on:
  push:
    branches:
      - master

jobs:
    build:
        runs-on: ubuntu-20.04
        name: Build and push lnbits image
        steps:
            - name: Login to Docker Hub
              run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

            - name: Checkout project
              uses: actions/checkout@v2

            - name: Set up QEMU
              uses: docker/setup-qemu-action@v1
              id: qemu

            - name: Setup Docker buildx action
              uses: docker/setup-buildx-action@v1
              id: buildx

            - name: Show available Docker buildx platforms
              run: echo ${{ steps.buildx.outputs.platforms }}

            - name: Cache Docker layers
              uses: actions/cache@v2
              id: cache
              with:
                path: /tmp/.buildx-cache
                key: ${{ runner.os }}-buildx-${{ github.sha }}
                restore-keys: |
                  ${{ runner.os }}-buildx-

            - name: Run Docker buildx against commit hash
              run: |
                  docker buildx build \
                  --cache-from "type=local,src=/tmp/.buildx-cache" \
                  --cache-to "type=local,dest=/tmp/.buildx-cache" \
                  --platform linux/amd64,linux/arm64,linux/arm/v7 \
                  --tag ${{ secrets.DOCKER_USERNAME }}/lnbits:${GITHUB_SHA:0:7} \
                  --output "type=registry" ./

            - name: Run Docker buildx against latest
              run: |
                  docker buildx build \
                  --cache-from "type=local,src=/tmp/.buildx-cache" \
                  --cache-to "type=local,dest=/tmp/.buildx-cache" \
                  --platform linux/amd64,linux/arm64,linux/arm/v7 \
                  --tag ${{ secrets.DOCKER_USERNAME }}/lnbits:latest \
                  --output "type=registry" ./