name: Build docker CI images
on:
  - workflow_dispatch
jobs:
  base_images:
    name: Push Docker images
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.CR_PAT }}
      - name: Build base
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ./docker/Dockerfile.base
          push: true
          tags: ghcr.io/lnis-uofu/openfpga-build-base:latest
      - name: Build environment image
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ./docker/Dockerfile.env
          push: true
          tags: ghcr.io/lnis-uofu/openfpga-env:latest
  compiler_images:
    name: Build ${{ matrix.compiler }} compiler image
    needs: base_images
    runs-on: ubuntu-latest
    strategy:
      matrix:
        compiler:
          - gcc-5
          - gcc-6
          - gcc-7
          - gcc-8
          - gcc-9
          - clang-6.0
          - clang-8
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.CR_PAT }}
      - name: Build ${{ matrix.compiler }} image
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ./docker/Dockerfile.${{ matrix.compiler }}
          push: true
          tags: ghcr.io/lnis-uofu/openfpga-build-${{ matrix.compiler }}:latest