# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)

# This is YAML - indentation levels are crucial

# Set the 'name:' properties to values that work for you (MYMODULE)

name: "GHA build"

# Trigger on pushes to the master branch and PRs
on:
  push:
    paths-ignore:
      - 'documentation/*'
      - '**/*.html'
      - '**/*.md'
      - '.github/workflows/ci-scripts-build-full.yml'
    branches:
      - master
  pull_request:

env:
  SETUP_PATH: .ci-local:.ci
  # For the sequencer on Linux/Windows/MacOS
  APT: re2c
  CHOCO: re2c
  BREW: re2c

jobs:
  build-base:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    # Set environment variables from matrix parameters
    env:
      CMP: ${{ matrix.cmp }}
      BCFG: ${{ matrix.configuration }}
      BASE: ${{ matrix.base }}
      WINE: ${{ matrix.wine }}
      RTEMS: ${{ matrix.rtems }}
      RTEMS_TARGET: ${{ matrix.rtems_target }}
      EXTRA: ${{ matrix.extra }}
      TEST: ${{ matrix.test }}
      SET: ${{ matrix.set }}
    strategy:
      fail-fast: false
      matrix:
        # Job names also name artifacts, character limitations apply
        include:
          - os: ubuntu-20.04
            cmp: gcc
            configuration: default
            base: "7.0"
            set: modules
            name: "7.0 Ub-20 gcc-9"
        
          - os: macos-latest
            cmp: clang
            configuration: default
            base: "3.15"
            set: modules
            name: "3.15 MacOS clang-12"

          - os: windows-2019
            cmp: vs2019
            configuration: static
            base: "3.15"
            set: modules
            name: "3.15 Win VS2019, static"

    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Automatic core dumper analysis
      uses: mdavidsaver/ci-core-dumper@master
    - name: "apt-get install"
      run: |
        sudo apt-get update
        sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
      if: runner.os == 'Linux'
    - name: "apt-get install ${{ matrix.cmp }}"
      run: |
        sudo apt-get -y install software-properties-common
        sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
        sudo apt-get update
        sudo apt-get -y install ${{ matrix.cmp }}
      if: matrix.utoolchain
    - name: Sanity Check
      run: python .ci-local/github-actions/sanity-check.py
    - name: Prepare and compile dependencies
      run: python .ci/cue.py prepare
    - name: Patch main module
      run: python .ci-local/github-actions/post-prepare.py
    - name: Build main module
      run: python .ci/cue.py build
    - name: Run main module tests
      run: python .ci/cue.py test
    - name: Upload tapfiles Artifact
      uses: actions/upload-artifact@v3
      with:
        name: tapfiles ${{ matrix.name }}
        path: '**/O.*/*.tap'
    - name: Collect and show test results
      run: python .ci/cue.py test-results
