#
# test-builds.yml
# Do test builds to catch compile errors
#

name: CI

on:
  pull_request:
    branches:
    - bugfix-2.0.x
    paths-ignore:
    - config/**
    - data/**
    - docs/**
    - '**/*.md'
  push:
    branches:
    - bugfix-2.0.x
    paths-ignore:
    - config/**
    - data/**
    - docs/**
    - '**/*.md'

jobs:
  test_builds:
    name: Run All Tests
    if: github.repository == 'MarlinFirmware/Marlin'

    runs-on: ubuntu-latest

    strategy:
      matrix:
        test-platform:
        # Base Environments

        - DUE
        - DUE_archim
        - esp32
        - linux_native
        - mega2560
        - at90usb1286_dfu
        - teensy31
        - teensy35
        - teensy41
        - SAMD51_grandcentral_m4

        # Extended AVR Environments

        - FYSETC_F6
        - mega1280
        - rambo
        - sanguino1284p
        - sanguino644p

        # STM32F1 (Maple) Environments

        #- STM32F103RC_btt_maple
        - STM32F103RC_btt_USB_maple
        - STM32F103RC_fysetc
        - STM32F103RC_meeb
        - jgaurora_a5s_a1
        - STM32F103VE_longer
        #- mks_robin_maple
        - mks_robin_lite
        - mks_robin_pro
        #- mks_robin_nano35_maple
        #- STM32F103RET6_creality_maple

        # STM32 (ST) Environments

        - STM32F103RC_btt
        #- STM32F103RC_btt_USB
        - STM32F103RE_btt
        - STM32F103RE_btt_USB
        - STM32F103RET6_creality
        - STM32F407VE_black
        - STM32F401VE_STEVAL
        - BIGTREE_BTT002
        - BIGTREE_SKR_PRO
        - BIGTREE_GTR_V1_0
        - mks_robin
        - ARMED
        - FYSETC_S6
        - STM32F070CB_malyan
        - STM32F070RB_malyan
        - malyan_M300
        - FLYF407ZG
        - rumba32
        - LERDGEX
        - LERDGEK
        - mks_robin_nano35
        - NUCLEO_F767ZI
        - REMRAM_V1
        - BTT_SKR_SE_BX
        - chitu_f103

        # Put lengthy tests last

        - LPC1768
        - LPC1769

        # Non-working environment tests
        #- at90usb1286_cdc
        #- STM32F103CB_malyan
        #- STM32F103RE
        #- mks_robin_mini

    steps:

    - name: Check out the PR
      uses: actions/checkout@v2

    - name: Cache pip
      uses: actions/cache@v2
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - name: Cache PlatformIO
      uses: actions/cache@v2
      with:
        path: ~/.platformio
        key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}

    - name: Select Python 3.7
      uses: actions/setup-python@v2
      with:
        python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax.
        architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified

    - name: Install PlatformIO
      run: |
        pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
        platformio update

    - name: Run ${{ matrix.test-platform }} Tests
      run: |
        make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}
