name: 'CI'

on:
  push:
    branches: [ master ]
    paths-ignore:
    - 'wiki/**'
    - 'wiki_static/**'
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
            submodules: true

      - uses: satackey/action-docker-layer-caching@v0.0.8
        continue-on-error: true
        with:
          key: docker-cache-${{ hashFiles('docker/**') }}-{hash}
          restore-keys: docker-cache-${{ hashFiles('docker/**') }}-
      - name: Build docker image
        uses: ./.github/actions/docker

      - name: Check syntax
        uses: ./.github/actions/docker
        continue-on-error: false
        with:
          run: /syntax_check.sh

      - name: Build F2 bootloader in docker
        uses: ./.github/actions/docker
        with:
          run: make -C bootloader TARGET=f2

      - name: Publish F2 bootloader artifacts
        uses: actions/upload-artifact@v2
        with:
          name: bootloader_f2
          path: |
            bootloader/.obj/f2/bootloader.elf
            bootloader/.obj/f2/bootloader.bin
            bootloader/.obj/f2/bootloader.hex
          if-no-files-found: error

      - name: Build local testing firmware in docker
        uses: ./.github/actions/docker
        with:
          run: make -C firmware TARGET=local

      - name: Run local tests
        uses: ./.github/actions/docker
        with:
          run: make -C firmware TARGET=local APP_TEST=1 run

      - name: Build F2 firmware in docker
        uses: ./.github/actions/docker
        with:
          run: make -C firmware TARGET=f2

      - name: Publish F2 firmware artifacts
        uses: actions/upload-artifact@v2
        with:
          name: firmware_f2
          path: |
            firmware/.obj/f2/firmware.elf
            firmware/.obj/f2/firmware.bin
            firmware/.obj/f2/firmware.hex
          if-no-files-found: error
