name: HW CI on: [push, pull_request] jobs: build-firmware: strategy: # Let all builds finish even if one fails early fail-fast: false matrix: include: # - build-target: f407-discovery # script: hardware_ci_f4_discovery # runs-on: hw-ci-f4-discovery # test-suite: com.rusefi.HwCiF4Discovery # folder: config/boards/f407-discovery # config-name: all # openocd-script: ../.github/workflows/openocd_ci_f4_discovery.cfg # serial-device: /dev/serial/by-id/usb-FOME_FOME_Engine_Management_ECU_2B003B000A51343033393930-if01 - build-target: f407-discovery script: hardware_ci_f4_discovery runs-on: hw-ci-f4-discovery-2 test-suite: com.rusefi.HwCiF4Discovery folder: config/boards/f407-discovery config-name: all openocd-script: ../.github/workflows/openocd_ci_f4_discovery_2.cfg serial-device: /dev/serial/by-id/usb-FOME_FOME_Engine_Management_ECU_1E0032000851353238333131-if01 # - build-target: proteus_f4 # script: hardware_ci_proteus # runs-on: hw-ci-proteus # test-suite: com.rusefi.HwCiF4Proteus # folder: config/boards/proteus # config-name: proteus_f4 # openocd-script: ../.github/workflows/openocd_ci_proteus.cfg # serial-device: /dev/serial/by-id/usb-FOME_FOME_Engine_Management_ECU_41003D000451383037343335-if01 runs-on: ${{matrix.runs-on}} steps: - uses: actions/checkout@v3 with: submodules: true - name: Identify Agent run: uname -a # huh? why do we gen_config_default here if we gen_config_board later? - name: Generate Configs for HW CI working-directory: ./firmware/ run: ./gen_config_default.sh - name: Generate Enum Strings working-directory: ./firmware/ run: ./gen_enum_to_string.sh - name: Generate Board config working-directory: ./firmware/ run: bash gen_config_board.sh ${{matrix.folder}} ${{matrix.config-name}} - name: Generate Live Documentation working-directory: ./firmware/ run: ./gen_live_documentation.sh - name: Add compiler to PATH run: echo "$HOME/.rusefi-tools/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi/bin" >> $GITHUB_PATH # Make sure the compiler works - name: Test/Identify Compiler run: arm-none-eabi-gcc -v # We aren't guaranteed a clean machine every time, so manually clean the output - name: Clean Build working-directory: ./firmware run: make clean - name: Set EXTRA env run: | echo "EXTRA_2_PARAMS=-DHARDWARE_CI" >> $GITHUB_ENV echo "HARDWARE_CI_SERIAL_DEVICE=${{matrix.serial-device}}" >> $GITHUB_ENV - name: Build Firmware run: bash misc/jenkins/compile_other_versions/compile.sh ${{matrix.folder}} ${{matrix.build-target}} - name: Check for STLINK run: lsusb | grep 'ST-LINK\|STLINK' - name: OpenOCD wipe & flash STM32 working-directory: ./firmware run: openocd -f "${{matrix.openocd-script}}" -c init -c targets -c "reset halt" -c "flash erase_sector 0 0 11" -c "flash write_image "deliver/fome.bin" 0x08000000" -c "reset run" -c "shutdown" - name: Generate Java (Antlr) working-directory: ./java_tools run: ./gradlew :config_definition:generateGrammarSource - name: Generate Autotest Jar working-directory: ./java_tools run: ./gradlew :autotest:shadowJar - name: List serial services run: ls /dev/serial/by-id/ # This both compiles and runs HW CI tests - name: Run Hardware CI working-directory: ./java_console run: ant ${{matrix.script}}