name: Simulator on: [push, pull_request] env: AUTOMATION_REF: ${{github.ref_name}} jobs: # This is just to ensure the simulator compiles on Linux build-simulator: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # todo: how to reduce code duplication of submodules list? - name: Checkout Submodules run: | misc/git_scripts/common_submodule_init.sh - name: Print GCC version working-directory: . run: gcc -v - name: Install multilib run: | sudo bash misc/actions/add-ubuntu-latest-apt-mirrors.sh sudo bash misc/actions/ubuntu-install-tools.sh - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' - name: Generate docs and enums working-directory: ./firmware/ run: make docs-enums - name: Gradle autotest java Using freshly generated java code working-directory: ./java_tools run: ./gradlew :autotest:shadowJar - name: Compile Linux Simulator working-directory: ./simulator/ run: make -j$(nproc) -r - name: Run Simulator Functional Test working-directory: ./java_tools/ run: ./gradlew simulatorFunctionalTestLauncherWithSimulator - name: Run Linux Simulator for 10 seconds working-directory: ./simulator/ run: ./build/rusefi_simulator 10 - name: Git Status and Simulator generated folder Status run: | git status ls -l simulator/generated/ - name: Gradle tune-tools working-directory: ./java_tools run: ./gradlew :tune-tools:shadowJar - name: Convert .bin from Linux Simulator into .xml working-directory: ./simulator/ run: | export DEFAULT_TUNE_OUTPUT_FOLDER=../simulator/generated/ echo "DEFAULT_TUNE_OUTPUT_FOLDER=$DEFAULT_TUNE_OUTPUT_FOLDER" ./write_tune.sh ../firmware/tunerstudio/generated/rusefi_f407-discovery.ini - name: Commit fresh generated default simulator tune if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master'}} run: | git config --local user.email "action@github.com" git config --local user.name "GitHub gen-default-tune Action" git add "simulator/generated/*msq" git add "simulator/generated/canned-tunes/*md" OUT=$(git commit -m "Auto-generated default tune" 2>&1) || echo "commit failed, finding out why" if echo "$OUT" | grep 'nothing to commit\|no changes added'; then echo "default tune: looks like nothing to commit" exit 0 elif echo "$OUT" | grep 'changed'; then echo "COMMIT=true" >> $GITHUB_ENV echo "default tune: looks like something has changed" exit 0 else echo "default tune: looks like something unexpected: [$OUT]" exit 1 fi git stash git pull --rebase - name: Push fresh default tune if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && env.COMMIT == 'true'}} uses: ad-m/github-push-action@master with: github_token: ${{ github.token }} branch: ${{ github.ref }} - name: Upload Linux built simulator uses: actions/upload-artifact@v4 with: name: rusefi_simulator_linux path: ./simulator/build/rusefi_simulator