2021-07-24 13:23:03 -07:00
|
|
|
name: FW
|
2019-11-20 20:34:55 -08:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
on: [push, pull_request]
|
2019-11-20 20:34:55 -08:00
|
|
|
|
|
|
|
jobs:
|
2020-07-08 08:10:24 -07:00
|
|
|
build-firmware:
|
2019-11-20 20:34:55 -08:00
|
|
|
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.
|
2021-04-29 20:00:22 -07:00
|
|
|
#
|
|
|
|
# see also gen_config where we have a similar list for all boards!
|
|
|
|
#
|
2021-05-08 15:44:19 -07:00
|
|
|
build-target: [hellen72, hellenNA6, hellen128, hellen121vag, hellen121nissan, cypress, frankenso_na6, kinetis, mre_f4, mre_f4_recovery, mre_f4_hardware_QC_special_build, mre_f7, prometheus_405, prometheus_469, proteus_f4, proteus_f4_hardware_QC_special_build, proteus_f7, proteus_f7_hardware_QC_special_build, proteus_h7, proteus_legacy, stm32f767_nucleo, stm32h743_nucleo, subaru_eg33_f7]
|
2019-11-20 20:34:55 -08:00
|
|
|
|
|
|
|
include:
|
2021-01-08 09:50:13 -08:00
|
|
|
# Board configurations
|
|
|
|
- build-target: hellen72
|
|
|
|
folder: hellen/hellen72
|
|
|
|
ini-file: rusefi_hellen72.ini
|
|
|
|
|
2021-04-19 06:12:47 -07:00
|
|
|
- build-target: hellenNA6
|
2021-04-18 19:03:43 -07:00
|
|
|
folder: hellen/hellen64_miataNA6_94
|
|
|
|
ini-file: rusefi_hellenNA6.ini
|
|
|
|
|
2021-05-01 17:43:09 -07:00
|
|
|
- build-target: hellen128
|
|
|
|
folder: hellen/hellen128
|
2021-07-21 16:23:17 -07:00
|
|
|
ini-file: rusefi_hellen128mercedes.ini
|
2021-05-01 17:43:09 -07:00
|
|
|
|
|
|
|
- build-target: hellen121vag
|
|
|
|
folder: hellen/hellen121vag
|
|
|
|
ini-file: rusefi_hellen121vag.ini
|
|
|
|
|
|
|
|
- build-target: hellen121nissan
|
|
|
|
folder: hellen/hellen121nissan
|
|
|
|
ini-file: rusefi_hellen121nissan.ini
|
|
|
|
|
2020-09-26 19:13:39 -07:00
|
|
|
- build-target: cypress
|
2020-09-27 03:27:50 -07:00
|
|
|
folder: hellen
|
2020-09-28 04:24:48 -07:00
|
|
|
ini-file: rusefi_hellen_cypress.ini
|
2020-09-26 19:13:39 -07:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: frankenso_na6
|
|
|
|
folder: frankenso
|
2020-07-27 16:42:29 -07:00
|
|
|
ini-file: rusefi_frankenso_na6.ini
|
2019-11-20 20:34:55 -08:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: kinetis
|
|
|
|
folder: kinetis
|
2020-09-28 04:24:48 -07:00
|
|
|
ini-file: rusefi_kinetis.ini
|
2020-07-08 08:10:24 -07:00
|
|
|
|
|
|
|
- build-target: mre_f4
|
|
|
|
folder: microrusefi
|
|
|
|
ini-file: rusefi_mre_f4.ini
|
|
|
|
|
2021-01-28 14:46:49 -08:00
|
|
|
- build-target: mre_f4_recovery
|
|
|
|
folder: microrusefi
|
|
|
|
ini-file: rusefi_mre_f4.ini
|
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: mre_f4_hardware_QC_special_build
|
|
|
|
folder: microrusefi
|
2020-07-27 16:42:29 -07:00
|
|
|
ini-file: rusefi_mre_f4.ini
|
2019-11-20 20:34:55 -08:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: mre_f7
|
|
|
|
folder: microrusefi
|
|
|
|
ini-file: rusefi_mre_f7.ini
|
|
|
|
console-settings: firmware/config/boards/nucleo_f767/rusefi_console_properties.xml
|
2019-12-02 20:54:40 -08:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: prometheus_405
|
|
|
|
folder: prometheus
|
|
|
|
ini-file: rusefi_prometheus_405.ini
|
|
|
|
|
|
|
|
- build-target: prometheus_469
|
|
|
|
folder: prometheus
|
|
|
|
ini-file: rusefi_prometheus_469.ini
|
|
|
|
|
|
|
|
- build-target: proteus_f4
|
|
|
|
folder: proteus
|
|
|
|
ini-file: rusefi_proteus_f4.ini
|
|
|
|
|
2020-12-20 06:11:36 -08:00
|
|
|
- build-target: proteus_f4_hardware_QC_special_build
|
|
|
|
folder: proteus
|
|
|
|
ini-file: rusefi_proteus_f4.ini
|
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: proteus_f7
|
|
|
|
folder: proteus
|
|
|
|
ini-file: rusefi_proteus_f7.ini
|
|
|
|
|
2021-05-08 07:32:21 -07:00
|
|
|
- build-target: proteus_f7_hardware_QC_special_build
|
|
|
|
folder: proteus
|
|
|
|
ini-file: rusefi_proteus_f7.ini
|
|
|
|
|
2021-03-07 13:43:00 -08:00
|
|
|
- build-target: proteus_h7
|
|
|
|
folder: proteus
|
|
|
|
ini-file: rusefi_proteus_h7.ini
|
|
|
|
|
2021-05-08 15:44:19 -07:00
|
|
|
- build-target: proteus_legacy
|
|
|
|
folder: proteus
|
|
|
|
ini-file: rusefi_proteus_f7.ini
|
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- build-target: stm32f767_nucleo
|
|
|
|
folder: nucleo_f767
|
|
|
|
ini-file: no
|
|
|
|
console-settings: firmware/config/boards/nucleo_f767/rusefi_console_properties.xml
|
2020-07-14 07:28:26 -07:00
|
|
|
skip-config: yes
|
2019-12-04 12:16:26 -08:00
|
|
|
|
2021-02-08 13:24:38 -08:00
|
|
|
- build-target: stm32h743_nucleo
|
|
|
|
folder: nucleo_h743
|
|
|
|
ini-file: no
|
|
|
|
skip-config: yes
|
|
|
|
|
2021-02-18 15:18:13 -08:00
|
|
|
- build-target: subaru_eg33_f7
|
|
|
|
folder: subaru_eg33
|
|
|
|
ini-file: rusefi_subaru_eg33_f7.ini
|
|
|
|
|
2019-11-20 20:34:55 -08:00
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v1
|
|
|
|
with:
|
|
|
|
submodules: recursive
|
2021-03-03 04:50:53 -08:00
|
|
|
|
2021-02-17 07:07:09 -08:00
|
|
|
- uses: actions/setup-java@v1
|
|
|
|
with:
|
|
|
|
java-version: '8'
|
|
|
|
|
2021-03-03 04:50:53 -08:00
|
|
|
- name: Install multilib, mingw, ncftp and mtools
|
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
2021-03-13 13:34:08 -08:00
|
|
|
sudo apt-get install gcc-multilib g++-multilib g++-mingw-w64 gcc-mingw-w64 ncftp mtools
|
2021-03-03 04:50:53 -08:00
|
|
|
|
2020-06-18 15:31:54 -07:00
|
|
|
- name: Generate Configs
|
2020-07-14 07:28:26 -07:00
|
|
|
if: ${{ matrix.skip-config != 'yes' }}
|
2020-06-18 15:31:54 -07:00
|
|
|
working-directory: ./firmware/
|
2020-07-14 07:28:26 -07:00
|
|
|
run: |
|
|
|
|
if [ "${{ matrix.build-target }}" = "kinetis" ]; then
|
|
|
|
cd config/boards/kinetis/config
|
|
|
|
bash gen_config.sh
|
|
|
|
[ $? -eq 0 ] || { echo "ERROR generating board kinetis kin"; exit 1; }
|
2020-09-27 06:56:44 -07:00
|
|
|
elif [ "${{ matrix.build-target }}" = "cypress" ]; then
|
|
|
|
cd config/boards/hellen/cypress/config
|
|
|
|
bash gen_config.sh
|
|
|
|
[ $? -eq 0 ] || { echo "ERROR generating board hellen_cypress hellen_cypress"; exit 1; }
|
2021-02-18 15:18:13 -08:00
|
|
|
elif [ "${{ matrix.build-target }}" = "subaru_eg33_f7" ]; then
|
|
|
|
bash config/boards/subaru_eg33/config/gen_config.sh
|
|
|
|
[ $? -eq 0 ] || { echo "ERROR generating board subaru_eg33 subaru_eg33_f7"; exit 1; }
|
2020-07-14 07:28:26 -07:00
|
|
|
else
|
2021-07-17 18:41:45 -07:00
|
|
|
bash gen_config_board.sh ${{matrix.folder}} ${{matrix.build-target}} ${{matrix.ini-file}}
|
2020-07-14 07:28:26 -07:00
|
|
|
fi
|
2020-06-18 15:31:54 -07:00
|
|
|
|
2020-07-30 09:27:20 -07:00
|
|
|
- name: Generate Enum Strings
|
|
|
|
working-directory: ./firmware/
|
|
|
|
run: bash gen_enum_to_string.sh
|
|
|
|
|
2020-07-21 18:46:39 -07:00
|
|
|
- name: Generate Default config
|
|
|
|
working-directory: ./firmware/
|
|
|
|
run: bash gen_config_default.sh
|
|
|
|
|
2020-06-18 15:31:54 -07:00
|
|
|
- name: Generate Live Documentation
|
|
|
|
working-directory: ./firmware/
|
2020-07-14 07:28:26 -07:00
|
|
|
run: bash gen_live_documentation.sh
|
2020-06-18 15:31:54 -07:00
|
|
|
|
2019-11-20 20:34:55 -08:00
|
|
|
# Build machines don't have arm-none-eabi gcc, so let's download it and put it on the path
|
|
|
|
- name: Download & Install GCC
|
2020-11-18 15:53:41 -08:00
|
|
|
env:
|
|
|
|
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
2020-02-06 16:18:35 -08:00
|
|
|
run: | # Compiler hosted on our other git repo - avoids having to download from the nice folks at ARM every time
|
2020-11-11 05:30:26 -08:00
|
|
|
wget 'https://github.com/rusefi/build_support/raw/master/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.xz' -O compiler.tar.xz
|
2020-02-06 16:18:35 -08:00
|
|
|
tar -xvf compiler.tar.xz
|
2020-11-18 15:45:16 -08:00
|
|
|
echo "::add-path::`pwd`/gcc-arm-none-eabi-9-2020-q2-update/bin"
|
2020-11-11 05:30:26 -08:00
|
|
|
|
|
|
|
# Make sure the compiler we just downloaded works - just print out the version
|
|
|
|
- name: Test Compiler
|
|
|
|
run: arm-none-eabi-gcc -v
|
|
|
|
|
2020-11-18 15:59:02 -08:00
|
|
|
- name: Configs Set FTP variables
|
|
|
|
env:
|
|
|
|
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
2020-07-08 08:10:24 -07:00
|
|
|
run: |
|
|
|
|
if [ "${{github.event_name}}" = "push" ] && [ "${{github.ref}}" = "refs/heads/master" ]; then
|
2020-11-18 15:44:53 -08:00
|
|
|
echo "::set-env name=RUSEFI_FTP_SERVER::${{secrets.RUSEFI_FTP_SERVER}}";
|
|
|
|
echo "::set-env name=RUSEFI_BUILD_FTP_USER::${{secrets.RUSEFI_BUILD_FTP_USER}}";
|
|
|
|
echo "::set-env name=RUSEFI_BUILD_FTP_PASS::${{secrets.RUSEFI_BUILD_FTP_PASS}}";
|
2020-07-08 08:10:24 -07:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Build rusEFI console
|
|
|
|
- name: Build console
|
2020-07-14 07:28:26 -07:00
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
|
|
run: bash misc/jenkins/build_java_console.sh
|
2019-11-20 20:34:55 -08:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
# Build the simulator
|
|
|
|
- name: Build simulator
|
2020-07-14 07:28:26 -07:00
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
|
|
run: OS="Windows_NT" bash misc/jenkins/build_simulator.sh
|
2020-07-08 08:10:24 -07:00
|
|
|
|
2019-11-20 20:34:55 -08:00
|
|
|
# Build the firmware!
|
|
|
|
- name: Build Firmware
|
2020-07-14 07:28:26 -07:00
|
|
|
run: bash misc/jenkins/compile_other_versions/compile.sh ${{matrix.folder}} ${{matrix.build-target}} ${{matrix.ini-file}} ${{matrix.console-settings}}
|
|
|
|
|
|
|
|
- name: Package Bundle
|
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
2020-07-17 19:32:53 -07:00
|
|
|
run: bash misc/jenkins/compile_other_versions/prepare_bundle.sh ${{matrix.build-target}} ${{matrix.ini-file}}
|
2020-06-16 09:33:49 -07:00
|
|
|
|
2020-07-18 19:30:44 -07:00
|
|
|
- name: Attach console junit results
|
|
|
|
if: always()
|
|
|
|
uses: actions/upload-artifact@v2
|
|
|
|
with:
|
|
|
|
name: console ${{matrix.build-target}} junit
|
|
|
|
path: ./java_console/build/*.txt
|
|
|
|
|
2020-07-19 13:05:47 -07:00
|
|
|
- name: Upload build bin
|
|
|
|
if: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master' }}
|
2020-07-19 13:09:29 -07:00
|
|
|
uses: actions/upload-artifact@v2
|
2020-07-19 13:05:47 -07:00
|
|
|
with:
|
|
|
|
name: rusefi_${{matrix.build-target}}.bin
|
2021-02-23 16:17:58 -08:00
|
|
|
path: ./firmware/deliver/rusefi*.bin
|
2020-07-19 13:05:47 -07:00
|
|
|
|
|
|
|
- name: Upload build hex
|
|
|
|
if: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master' }}
|
2020-07-19 13:09:29 -07:00
|
|
|
uses: actions/upload-artifact@v2
|
2020-07-19 13:05:47 -07:00
|
|
|
with:
|
|
|
|
name: rusefi_${{matrix.build-target}}.hex
|
2021-02-23 16:17:58 -08:00
|
|
|
path: ./firmware/deliver/rusefi*.hex
|
2020-07-19 13:05:47 -07:00
|
|
|
|
|
|
|
- name: Upload build dfu
|
|
|
|
if: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master' }}
|
2020-07-19 13:09:29 -07:00
|
|
|
uses: actions/upload-artifact@v2
|
2020-07-19 13:05:47 -07:00
|
|
|
with:
|
|
|
|
name: rusefi_${{matrix.build-target}}.dfu
|
2021-02-23 16:17:58 -08:00
|
|
|
path: ./firmware/deliver/rusefi*.dfu
|
2020-07-19 13:05:47 -07:00
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- name: Upload bundle
|
2020-07-14 07:28:26 -07:00
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
2020-07-02 20:11:48 -07:00
|
|
|
uses: actions/upload-artifact@v2
|
2019-11-20 20:34:55 -08:00
|
|
|
with:
|
2020-07-08 08:10:24 -07:00
|
|
|
name: rusefi_bundle_${{matrix.build-target}}.zip
|
2021-02-23 16:17:58 -08:00
|
|
|
path: ./artifacts/rusefi_bundle*.zip
|
2020-07-08 08:10:24 -07:00
|
|
|
|
|
|
|
- name: Upload autoupdate bundle
|
2020-07-14 07:28:26 -07:00
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
2020-07-02 20:11:48 -07:00
|
|
|
uses: actions/upload-artifact@v2
|
2019-11-20 20:34:55 -08:00
|
|
|
with:
|
2020-07-08 08:10:24 -07:00
|
|
|
name: rusefi_bundle_${{matrix.build-target}}_autoupdate.zip
|
|
|
|
path: ./artifacts/rusefi_bundle_${{matrix.build-target}}_autoupdate.zip
|
|
|
|
|
|
|
|
build-primary-bundle:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v1
|
|
|
|
with:
|
|
|
|
submodules: recursive
|
2021-02-17 07:21:52 -08:00
|
|
|
- uses: actions/setup-java@v1
|
|
|
|
with:
|
|
|
|
java-version: '8'
|
2020-07-08 08:10:24 -07:00
|
|
|
|
2020-12-31 09:22:01 -08:00
|
|
|
- name: Generate Enum Strings
|
|
|
|
working-directory: ./firmware/
|
|
|
|
run: bash gen_enum_to_string.sh
|
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- name: Generate Configs
|
|
|
|
working-directory: ./firmware/
|
2020-07-14 07:28:26 -07:00
|
|
|
run: bash gen_config_default.sh
|
2020-07-08 08:10:24 -07:00
|
|
|
|
|
|
|
- name: Generate Live Documentation
|
|
|
|
working-directory: ./firmware/
|
2020-07-14 07:28:26 -07:00
|
|
|
run: bash gen_live_documentation.sh
|
2020-07-08 08:10:24 -07:00
|
|
|
|
|
|
|
# Build machines don't have arm-none-eabi gcc, so let's download it and put it on the path
|
|
|
|
- name: Download & Install GCC
|
2020-11-18 15:53:41 -08:00
|
|
|
env:
|
|
|
|
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
2020-07-08 08:10:24 -07:00
|
|
|
run: | # Compiler hosted on our other git repo - avoids having to download from the nice folks at ARM every time
|
2020-11-11 05:30:26 -08:00
|
|
|
wget 'https://github.com/rusefi/build_support/raw/master/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.xz' -O compiler.tar.xz
|
2020-07-08 08:10:24 -07:00
|
|
|
tar -xvf compiler.tar.xz
|
2020-11-18 15:45:16 -08:00
|
|
|
echo "::add-path::`pwd`/gcc-arm-none-eabi-9-2020-q2-update/bin"
|
2020-07-08 08:10:24 -07:00
|
|
|
|
|
|
|
- name: Install multilib, mingw, and ncftp
|
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
2021-03-13 13:34:08 -08:00
|
|
|
sudo apt-get install gcc-multilib g++-multilib g++-mingw-w64 gcc-mingw-w64 ncftp
|
2020-07-08 08:10:24 -07:00
|
|
|
|
|
|
|
# Make sure the compiler we just downloaded works - just print out the version
|
|
|
|
- name: Test Compiler
|
|
|
|
run: arm-none-eabi-gcc -v
|
|
|
|
|
2020-11-18 15:59:02 -08:00
|
|
|
- name: primary Set FTP variables
|
|
|
|
env:
|
|
|
|
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
2020-07-08 08:10:24 -07:00
|
|
|
run: |
|
|
|
|
if [ "${{github.event_name}}" = "push" ] && [ "${{github.ref}}" = "refs/heads/master" ]; then
|
2020-11-18 15:44:53 -08:00
|
|
|
echo "::set-env name=RUSEFI_FTP_SERVER::${{secrets.RUSEFI_FTP_SERVER}}";
|
|
|
|
echo "::set-env name=RUSEFI_BUILD_FTP_USER::${{secrets.RUSEFI_BUILD_FTP_USER}}";
|
|
|
|
echo "::set-env name=RUSEFI_BUILD_FTP_PASS::${{secrets.RUSEFI_BUILD_FTP_PASS}}";
|
2020-07-08 08:10:24 -07:00
|
|
|
fi
|
|
|
|
|
|
|
|
- name: Build Primary Bundle
|
2020-07-14 07:28:26 -07:00
|
|
|
run: OS="Windows_NT" bash misc/jenkins/functional_test_and_build_bundle/build_current_bundle.sh
|
|
|
|
|
|
|
|
- name: Package Bundle
|
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
|
|
run: bash misc/jenkins/compile_other_versions/prepare_bundle.sh default
|
2020-06-16 09:33:49 -07:00
|
|
|
|
2020-07-18 19:30:44 -07:00
|
|
|
- name: Attach console junit results
|
|
|
|
if: always()
|
|
|
|
uses: actions/upload-artifact@v2
|
|
|
|
with:
|
2020-07-18 19:50:32 -07:00
|
|
|
name: console primary junit
|
2020-07-18 19:30:44 -07:00
|
|
|
path: ./java_console/build/*.txt
|
|
|
|
|
2020-07-08 08:10:24 -07:00
|
|
|
- name: Upload primary bundle
|
2020-07-14 07:28:26 -07:00
|
|
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
2020-07-02 20:11:48 -07:00
|
|
|
uses: actions/upload-artifact@v2
|
2020-06-16 09:33:49 -07:00
|
|
|
with:
|
2020-07-08 08:10:24 -07:00
|
|
|
name: rusefi_bundle.zip
|
|
|
|
path: ./artifacts/rusefi_bundle.zip
|