name: Multiple container CLI build tests
on:
  push:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * *'  # every day at midnight

env:
  IMAGE_REGISTRY: quay.io
  IMAGE_NAMESPACE: redhat-github-actions
  IMAGE_NAME: ptr-test
  IMAGE_TAG: v1
  SHORT_IMAGE_NAME_TAG: ptr-test:v1
  FULLY_QUALIFIED_IMAGE_NAME_TAG: quay.io/redhat-github-actions/ptr-test:v1

jobs:
  build:
    name: |-
      Build with ${{ matrix.build_with }} and push${{ matrix.fully_qualified_image_name_tag && ' FQIN' || '' }} (latest: ${{ matrix.install_latest }})
    runs-on: ubuntu-20.04
    strategy:
      fail-fast: false
      matrix:
        install_latest: [ true, false ]
        build_with: [ "docker after podman", "podman after docker", "podman only", "docker only" ]
        fully_qualified_image_name_tag: [ true, false ]

    steps:

      # Checkout push-to-registry action github repository
      - name: Checkout Push to Registry action
        uses: actions/checkout@v2

      - name: Install latest podman
        if: matrix.install_latest
        run: |
          bash .github/install_latest_podman.sh

      - name: Build image using Docker
        if: endsWith(matrix.build_with, 'docker')
        run: |
            docker build -t ${{ matrix.fully_qualified_image_name_tag && env.FULLY_QUALIFIED_IMAGE_NAME_TAG || env.SHORT_IMAGE_NAME_TAG }} -<<EOF
            FROM busybox
            RUN echo "hello world"
            EOF

      - name: Build image using Podman
        if: contains(matrix.build_with, 'podman')
        run: |
            podman build -t ${{ matrix.fully_qualified_image_name_tag && env.FULLY_QUALIFIED_IMAGE_NAME_TAG || env.SHORT_IMAGE_NAME_TAG }} -<<EOF
            FROM busybox
            RUN echo "hello world"
            EOF

      - name: Build image using Docker
        if: startsWith(matrix.build_with, 'docker')
        run: |
            docker build -t ${{ matrix.fully_qualified_image_name_tag && env.FULLY_QUALIFIED_IMAGE_NAME_TAG || env.SHORT_IMAGE_NAME_TAG }} -<<EOF
            FROM busybox
            RUN echo "hello world"
            EOF

      - name: Push image to ${{ env.IMAGE_REGISTRY }}
        id: push
        uses: ./
        with:
          image: ${{ env.IMAGE_NAME }}
          tags: ${{ matrix.fully_qualified_image_name_tag && env.FULLY_QUALIFIED_IMAGE_NAME_TAG || env.IMAGE_TAG }}
          registry: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAMESPACE }}
          username: ${{ secrets.REGISTRY_USER }}
          password: ${{ secrets.REGISTRY_PASSWORD }}

      - name: Echo outputs
        run: |
          echo "${{ toJSON(steps.push.outputs) }}"