mirror of https://github.com/rusefi/rusefi-1.git
151 lines
5.2 KiB
YAML
151 lines
5.2 KiB
YAML
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, frankenso-pal, mre-f4, mre-f7, prometheus-405, prometheus-469, proteus-f4, proteus-f7, kinetis]
|
|
build-type: [debug, release]
|
|
|
|
include:
|
|
# Board configurations
|
|
- build-target: frankenso
|
|
efi-cpu: ARCH_STM32F4
|
|
efi-board: st_stm32f4
|
|
|
|
- build-target: frankenso-pal
|
|
efi-cpu: ARCH_STM32F4
|
|
efi-board: st_stm32f4
|
|
target-extra-params: -DHAL_TRIGGER_USE_PAL=TRUE -DEFI_ICU_INPUTS=FALSE -DEFI_VEHICLE_SPEED=FALSE -DEFI_LOGIC_ANALYZER=FALSE
|
|
|
|
- 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
|
|
|
|
- build-target: proteus-f4
|
|
efi-cpu: ARCH_STM32F4
|
|
efi-board: proteus
|
|
|
|
- build-target: proteus-f7
|
|
efi-cpu: ARCH_STM32F7
|
|
efi-board: proteus
|
|
|
|
- build-target: kinetis
|
|
efi-cpu: kinetis
|
|
efi-board: kinetis
|
|
target-extra-params: -DCPU_MKE16F512VLH16 -DCPU_MKE16F512VLH16_cm4 -D__USE_CMSI -DDEFAULT_ENGINE_TYPE=MINIMAL_PINS
|
|
extra-options: USE_FATFS=no USE_BOOTLOADER=no
|
|
|
|
# Debug vs. release configuration
|
|
- build-type: debug
|
|
type-extra-params: -DDUMMY
|
|
build-debug-level-opt: -O0 -ggdb -g3
|
|
|
|
- build-type: release
|
|
type-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
|
|
|
|
# We don't need debug builds for every board...
|
|
exclude:
|
|
- build-target: frankenso-pal
|
|
build-type: debug
|
|
- build-target: mre-f4
|
|
build-type: debug
|
|
- build-target: mre-f7
|
|
build-type: debug
|
|
- build-target: prometheus-405
|
|
build-type: debug
|
|
- build-target: prometheus-469
|
|
build-type: debug
|
|
- build-target: proteus-f4
|
|
build-type: debug
|
|
- build-target: proteus-f7
|
|
build-type: debug
|
|
- build-target: kinetis
|
|
build-type: debug
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Generate Configs
|
|
working-directory: ./firmware/
|
|
run: sh gen_config.sh
|
|
|
|
- name: Generate Live Documentation
|
|
working-directory: ./firmware/
|
|
run: sh gen_live_documentation.sh
|
|
|
|
# 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: | # Compiler hosted on our other git repo - avoids having to download from the nice folks at ARM every time
|
|
wget 'https://github.com/rusefi/build_support/raw/master/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.xz' -O compiler.tar.xz
|
|
tar -xvf compiler.tar.xz
|
|
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.type-extra-params}} ${{matrix.target-extra-params}}" DEBUG_LEVEL_OPT='${{matrix.build-debug-level-opt}}' ${{matrix.extra-options}}
|
|
|
|
# Get hex2dfu
|
|
- name: Fetch hex2dfu
|
|
uses: actions/checkout@v2
|
|
with:
|
|
repository: 'rusefi/hex2dfu'
|
|
path: hex2dfu
|
|
|
|
# Build hex2dfu
|
|
- name: Build hex2dfu
|
|
working-directory: ./hex2dfu
|
|
run: gcc hex2dfu.c -o hex2dfu
|
|
|
|
# Convert hex to dfu
|
|
- name: Create DFU file
|
|
run: ./hex2dfu/hex2dfu -i ./firmware/build/rusefi.hex -o ./firmware/build/rusefi.dfu
|
|
|
|
|
|
# The next two steps upload the bin, elf, and dfu 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
|
|
|
|
- name: Upload dfu
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: firmware-${{matrix.build-target}}-${{matrix.build-type}}-dfu
|
|
path: ./firmware/build/rusefi.dfu
|