rusefi/.github/workflows/build-firmware.yaml

83 lines
3.0 KiB
YAML
Raw Normal View History

name: Firmware CI
on: [push,pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
# Let all builds finish even if one fails early
fail-fast: false
matrix:
# What boards should we build for? In the 'include' section below,
# set up what each of these boards needs to build.
build-target: [frankenso, mre-f4, mre-f7, prometheus-405, prometheus-469]
build-type: [debug, release]
include:
# Board configurations
- build-target: frankenso
efi-cpu: ARCH_STM32F4
efi-board: st_stm32f4
- build-target: mre-f4
efi-cpu: ARCH_STM32F4
efi-board: microrusefi
- build-target: mre-f7
efi-cpu: ARCH_STM32F7
efi-board: microrusefi
- build-target: prometheus-405
efi-cpu: ARCH_STM32F4
efi-board: prometheus/f405
- build-target: prometheus-469
efi-cpu: ARCH_STM32F4
efi-board: prometheus/f469
# Debug vs. release configuration
- build-type: debug
extra-params: -DDUMMY
build-debug-level-opt: -O0 -ggdb -g3
- build-type: release
extra-params: -DEFI_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_TRACE=FALSE -DCH_DBG_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_STACK_CHECK=FALSE -DCH_DBG_FILL_THREADS=FALSE -DCH_DBG_THREADS_PROFILING=FALSE
build-debug-level-opt: -O2 -ggdb -g3
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
submodules: recursive
# Build machines don't have arm-none-eabi gcc, so let's download it and put it on the path
- name: Download & Install GCC
run: |
wget 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=6e63531f-8cb1-40b9-bbfc-8a57cdfc01b4&la=en&hash=F761343D43A0587E8AC0925B723C04DBFB848339' -O compiler.tar.bz2
tar -xvf compiler.tar.bz2
echo "::add-path::`pwd`/gcc-arm-none-eabi-9-2019-q4-major/bin"
# Make sure the compiler we just downloaded works - just print out the version
- name: Test Compiler
run: arm-none-eabi-gcc -v
# Build the firmware!
- name: Build Firmware
working-directory: ./firmware/
run: make -j4 PROJECT_BOARD=${{matrix.efi-board}} PROJECT_CPU=${{matrix.efi-cpu}} EXTRA_PARAMS="${{matrix.extra-params}}" DEBUG_LEVEL_OPT='${{matrix.build-debug-level-opt}}'
# The next two steps upload the bin and elf as build artifacts
- name: Upload elf
uses: actions/upload-artifact@v1
with:
name: firmware-${{matrix.build-target}}-${{matrix.build-type}}-elf
path: ./firmware/build/rusefi.elf
- name: Upload bin
uses: actions/upload-artifact@v1
with:
name: firmware-${{matrix.build-target}}-${{matrix.build-type}}-bin
path: ./firmware/build/rusefi.bin