name: ci

on:
  push:
    branches:
      - master
      - v2-working-branch # remove when merged to master
  pull_request:
    branches:
      - master
      - v2-working-branch # remove when merged to master

jobs:
  main:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dockerfile:
          - multi
          - multi-sudo
    steps:
      -
        name: Run local registry
        run: |
          docker run -d -p 5000:5000 registry:2
      -
        name: Checkout
        uses: actions/checkout@v2.3.1
      -
        name: Set up QEMU
        uses: ./setup-qemu/ # change to docker/setup-qemu-action@master
        with:
          platforms: all
      -
        name: Set up Docker Buildx
        id: buildx
        uses: ./setup-buildx/ # change to docker/setup-buildx-action@master
#        with:
#          driver-opt: network=host
      -
        name: Build and push
        uses: ./
        with:
          context: ./test
          file: ./test/Dockerfile-${{ matrix.dockerfile }}
          builder: ${{ steps.buildx.outputs.name }}
          platforms: linux/amd64,linux/arm64
          #allow: network.host,security.insecure
          #push: true
          tags: |
            localhost:5000/name/app:latest
            localhost:5000/name/app:1.0.0
      -
        name: Dump context
        if: always()
        uses: crazy-max/ghaction-dump-context@v1

  git-context:
    runs-on: ubuntu-latest
    steps:
      -
        name: Run local registry
        run: |
          docker run -d -p 5000:5000 registry:2
      -
        name: Checkout
        uses: actions/checkout@v2.3.1
      -
        name: Set up QEMU
        uses: ./setup-qemu/ # change to docker/setup-qemu-action@master
        with:
          platforms: all
      -
        name: Set up Docker Buildx
        id: buildx
        uses: ./setup-buildx/ # change to docker/setup-buildx-action@master
        with:
          version: latest
          #driver-opt: network=host
      -
        name: Build and push
        uses: ./
        env:
          GIT_AUTH_TOKEN: ${{ github.token }}
          GIT_REF: ${{ github.ref }}
        with:
          context: ${{ github.repositoryUrl }}
          file: ./test/Dockerfile
          builder: ${{ steps.buildx.outputs.name }}
          platforms: linux/amd64,linux/arm64
          #allow: network.host,security.insecure
          #push: true
          tags: |
            localhost:5000/name/app:latest
            localhost:5000/name/app:1.0.0
      -
        name: Dump context
        if: always()
        uses: crazy-max/ghaction-dump-context@v1

  bake:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        target:
          - default
          - release
    steps:
      -
        name: Run local registry
        run: |
          docker run -d -p 5000:5000 registry:2
      -
        name: Checkout
        uses: actions/checkout@v2.3.1
      -
        name: Set up QEMU
        uses: ./setup-qemu/ # change to docker/setup-qemu-action@master
        with:
          platforms: all
      -
        name: Set up Docker Buildx
        id: buildx
        uses: ./setup-buildx/ # change to docker/setup-buildx-action@master
#        with:
#          driver-opt: network=host
      -
        name: Build and push
        uses: ./
        with:
          builder: ${{ steps.buildx.outputs.name }}
          bake: true
          #push: true
          bake-files: |
            ./test/config.hcl
          bake-targets: |
            ${{ matrix.target }}
      -
        name: Dump context
        if: always()
        uses: crazy-max/ghaction-dump-context@v1

  github-cache:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v2.3.1
      -
        name: Set up QEMU
        uses: ./setup-qemu/ # change to docker/setup-qemu-action@master
        with:
          platforms: all
      -
        name: Set up Docker Buildx
        id: buildx
        uses: ./setup-buildx/ # change to docker/setup-buildx-action@master
      -
        name: Build 1
        uses: ./
        with:
          context: ./test
          file: ./test/Dockerfile-multi-golang
          builder: ${{ steps.buildx.outputs.name }}
          platforms: linux/amd64,linux/arm64
          cache-github: true
          tags: |
            localhost:5000/name/app:latest
            localhost:5000/name/app:1.0.0
      -
        name: Build 2
        uses: ./
        with:
          context: ./test
          file: ./test/Dockerfile-multi-golang
          builder: ${{ steps.buildx.outputs.name }}
          platforms: linux/amd64,linux/arm64
          cache-github: true
          tags: |
            localhost:5000/name/app2:latest
            localhost:5000/name/app2:1.0.0
      -
        name: Dump context
        if: always()
        uses: crazy-max/ghaction-dump-context@v1