3 codes works? #2588
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Firmware at GHA | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
do_upload: | |
description: 'Upload Build Outputs' | |
required: false | |
type: boolean | |
build_name: | |
description: 'Release Build Name' | |
required: false | |
type: string | |
jobs: | |
build-libopenblt-linux: | |
runs-on: ubuntu-latest-selfhost | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: cmake configure libopenblt | |
working-directory: ./firmware/ext/openblt/Host/Source/LibOpenBLT/build | |
run: cmake -DCMAKE_BUILD_TYPE=Release .. | |
- name: make libopenblt | |
working-directory: ./firmware/ext/openblt/Host/Source/LibOpenBLT/build | |
run: make -j8 | |
- name: cmake configure libopenblt_jni | |
working-directory: ./misc/libopenblt_jni/build | |
run: cmake -DCMAKE_BUILD_TYPE=Release .. | |
- name: make libopenblt_jni | |
working-directory: ./misc/libopenblt_jni/build | |
run: make -j8 | |
- name: coalesce | |
run: | | |
mkdir deliver | |
cp ./firmware/ext/openblt/Host/libopenblt.so deliver/ | |
cp ./misc/libopenblt_jni/build/libopenblt_jni.so deliver/ | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: libopenblt-linux | |
path: | | |
./deliver/libopenblt.so | |
./deliver/libopenblt_jni.so | |
build-libopenblt-macos: | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: cmake configure libopenblt | |
working-directory: ./firmware/ext/openblt/Host/Source/LibOpenBLT/build | |
run: cmake -DCMAKE_BUILD_TYPE=Release .. | |
- name: make libopenblt | |
working-directory: ./firmware/ext/openblt/Host/Source/LibOpenBLT/build | |
run: make -j8 | |
- name: cmake configure libopenblt_jni | |
working-directory: ./misc/libopenblt_jni/build | |
run: cmake -DCMAKE_BUILD_TYPE=Release .. | |
- name: make libopenblt_jni | |
working-directory: ./misc/libopenblt_jni/build | |
run: make -j8 | |
- name: coalesce | |
run: | | |
mkdir deliver | |
cp ./firmware/ext/openblt/Host/libopenblt.dylib deliver/ | |
cp ./misc/libopenblt_jni/build/libopenblt_jni.dylib deliver/ | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: libopenblt-macos | |
path: | | |
./deliver/libopenblt.dylib | |
./deliver/libopenblt_jni.dylib | |
build-firmware: | |
needs: [build-libopenblt-linux, build-libopenblt-macos] | |
runs-on: ubuntu-latest-selfhost | |
strategy: | |
# Let all builds finish even if one fails early | |
fail-fast: false | |
matrix: | |
include: | |
# Board configurations | |
- build-target: hellen72 | |
folder: config/boards/hellen/hellen72 | |
ini-file: fome_hellen72.ini | |
# - build-target: hellen81 | |
# folder: config/boards/hellen/hellen81 | |
# ini-file: fome_hellen81.ini | |
# - build-target: alphax-2chan | |
# folder: config/boards/hellen/alphax-2chan | |
# ini-file: fome_alphax-2chan.ini | |
# - build-target: alphax-4chan | |
# folder: config/boards/hellen/alphax-4chan | |
# ini-file: fome_alphax-4chan.ini | |
# - build-target: alphax-8chan | |
# folder: config/boards/hellen/alphax-8chan | |
# ini-file: fome_alphax-8chan.ini | |
# - build-target: harley81 | |
# folder: config/boards/hellen/harley81 | |
# ini-file: fome_harley81.ini | |
- build-target: small-can-board | |
folder: config/boards/hellen/small-can-board | |
ini-file: fome_small-can-board.ini | |
# - build-target: hellen88bmw | |
# folder: config/boards/hellen/hellen88bmw | |
# ini-file: fome_hellen88bmw.ini | |
- build-target: hellen-nb1 | |
folder: config/boards/hellen/hellen-nb1 | |
ini-file: fome_hellen-nb1.ini | |
# - build-target: hellen-gm-e67 | |
# folder: config/boards/hellen/hellen-gm-e67 | |
# ini-file: fome_hellen-gm-e67.ini | |
- build-target: hellenNA8_96 | |
folder: config/boards/hellen/hellenNA8_96 | |
ini-file: fome_hellenNA8_96.ini | |
- build-target: hellenNA6 | |
folder: config/boards/hellen/hellen64_miataNA6_94 | |
ini-file: fome_hellenNA6.ini | |
- build-target: hellen128 | |
folder: config/boards/hellen/hellen128 | |
ini-file: fome_hellen128.ini | |
# - build-target: hellen121vag | |
# folder: config/boards/hellen/hellen121vag | |
# ini-file: fome_hellen121vag.ini | |
# - build-target: hellen121nissan | |
# folder: config/boards/hellen/hellen121nissan | |
# ini-file: fome_hellen121nissan.ini | |
# - build-target: hellen-honda-k | |
# folder: config/boards/hellen/hellen-honda-k | |
# ini-file: fome_hellen-honda-k.ini | |
# - build-target: hellen154hyundai | |
# folder: config/boards/hellen/hellen154hyundai | |
# ini-file: fome_hellen154hyundai.ini | |
# - build-target: frankenso_na6 | |
# folder: config/boards/frankenso | |
# ini-file: fome_frankenso_na6.ini | |
- build-target: mre_f4 | |
folder: config/boards/microrusefi | |
ini-file: fome_mre_f4.ini | |
- build-target: mre_f7 | |
folder: config/boards/microrusefi | |
ini-file: fome_mre_f7.ini | |
- build-target: proteus_f4 | |
folder: config/boards/proteus | |
ini-file: fome_proteus_f4.ini | |
- build-target: proteus_f7 | |
folder: config/boards/proteus | |
ini-file: fome_proteus_f7.ini | |
- build-target: proteus_h7 | |
folder: config/boards/proteus | |
ini-file: fome_proteus_h7.ini | |
- build-target: stm32f429_nucleo | |
folder: config/boards/nucleo_f429 | |
ini-file: fome_stm32f429_nucleo.ini | |
# - build-target: stm32f767_nucleo | |
# folder: config/boards/nucleo_f767 | |
# ini-file: fome_stm32f767_nucleo.ini | |
# - build-target: stm32h743_nucleo | |
# folder: config/boards/nucleo_h743 | |
# ini-file: fome_stm32h743_nucleo.ini | |
# - build-target: subaru_eg33_f7 | |
# folder: config/boards/subaru_eg33 | |
# ini-file: fome_subaru_eg33_f7.ini | |
- build-target: f407-discovery | |
folder: config/boards/f407-discovery | |
ini-file: fome_f407-discovery.ini | |
# - build-target: f429-discovery | |
# folder: config/boards/f429-discovery | |
# ini-file: fome_f429-discovery.ini | |
- build-target: core8 | |
folder: config/boards/core8 | |
ini-file: fome_core8.ini | |
- build-target: core48 | |
folder: config/boards/core48 | |
ini-file: fome_core48.ini | |
- build-target: atlas | |
folder: config/boards/atlas | |
ini-file: fome_atlas.ini | |
# - build-target: tdg-pdm8 | |
# folder: config/boards/tdg-pdm8 | |
# ini-file: fome_tdg-pdm8.ini | |
steps: | |
- name: Check branch name | |
if: ${{ contains(github.ref_name, '.') }} | |
run: echo '::error::Branch names must not contain ".", this breaks firmware autoupdates.' && exit 1 | |
- name: Set run condition variables | |
run: | | |
if [ "${{github.repository}}" = "FOME-Tech/fome-fw" ]\ | |
&& [ "${{github.event_name}}" = "push" ]\ | |
&& [ "${{github.ref}}" = "refs/heads/master" ]\ | |
|| [ "${{toJSON(inputs.do_upload)}}" = "true" ]; then | |
echo "full=true" >> $GITHUB_ENV | |
echo "upload=true" >> $GITHUB_ENV | |
elif [ "${{github.event_name}}" = "push" ]\ | |
&& [ "${{github.ref}}" = "refs/heads/master" ]; then | |
echo "full=true" >> $GITHUB_ENV | |
fi | |
- name: Pre-build Cleanup Test | |
run: | | |
ls -l firmware | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Pre-build Cleanup Test 2 | |
run: | | |
ls -l firmware | |
# - uses: actions/setup-java@v3 | |
# with: | |
# distribution: 'zulu' | |
# java-version: '8' | |
# - name: Install multilib, mingw, sshpass and mtools | |
# working-directory: ./.github/workflows/ | |
# run: | | |
# sudo ./add-ubuntu-latest-apt-mirrors.sh | |
# sudo apt-get install gcc-multilib g++-multilib g++-mingw-w64 gcc-mingw-w64 sshpass mtools | |
# sudo apt-get install zip | |
# sudo apt-get install dosfstools | |
- name: Generate Live Documentation | |
working-directory: ./firmware/ | |
run: ./gen_live_documentation.sh | |
# Build the firmware! | |
- name: Build Firmware | |
run: bash misc/jenkins/compile_other_versions/compile.sh ${{matrix.folder}} ${{matrix.build-target}} | |
- name: Check for illegal time conversions | |
working-directory: ./firmware/ | |
run: bash check_illegal_conversion.sh | |
# Build rusEFI console | |
- name: Build console | |
if: ${{ env.full == 'true' }} | |
run: bash misc/jenkins/build_java_console.sh | |
# Build the simulator | |
- name: Build simulator | |
if: ${{ env.full == 'true' }} | |
working-directory: ./simulator/ | |
# 'OS="Windows_NT"' allows us to build Windows executable on unix | |
run: OS="Windows_NT" SHORT_BOARD_NAME=${{matrix.build-target}} ./compile.sh | |
- name: Download LibOpenBLT Tool (Linux) | |
uses: actions/download-artifact@v4 | |
with: | |
name: libopenblt-linux | |
path: ./firmware/ext/openblt/Host/ | |
- name: Download LibOpenBLT Tool (MacOS) | |
uses: actions/download-artifact@v4 | |
with: | |
name: libopenblt-macos | |
path: ./firmware/ext/openblt/Host/ | |
- name: Package Bundle | |
if: ${{ env.full == 'true' }} | |
run: bash misc/jenkins/compile_other_versions/prepare_bundle.sh ${{matrix.build-target}} "${{matrix.ini-file}}" ${{ toJSON(inputs.build_name) }} | |
- name: Upload INI to tunes.fome.tech | |
if: ${{ env.full == 'true' && env.upload == 'true' }} | |
uses: hyper-tuner/ini-upload-action@v1 | |
continue-on-error: true | |
with: | |
api-url: "${{ secrets.HYPER_TUNER_INI_UPLOAD_URL }}" | |
username: "${{ secrets.HYPER_TUNER_INI_UPLOAD_USERNAME }}" | |
password: "${{ secrets.HYPER_TUNER_INI_UPLOAD_PASSWORD }}" | |
path: ./firmware/tunerstudio/generated/${{matrix.ini-file}} | |
ecosystem: fome | |
# If not uploading the full bundle, at least upload the bin+ini so you can test off a PR | |
- name: Upload build bin | |
uses: actions/upload-artifact@v3 | |
with: | |
name: fome_${{matrix.build-target}}.bin | |
path: ./firmware/deliver/fome.bin | |
- name: Upload ini | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{matrix.ini-file}} | |
path: ./firmware/tunerstudio/generated/${{matrix.ini-file}} | |
- name: Upload bundle | |
if: ${{ env.full == 'true' && env.upload == 'true' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fome_bundle_${{matrix.build-target}}.zip | |
path: ./artifacts/fome_bundle_${{matrix.build-target}}.zip |