Skip to content

Conversation

@skorya
Copy link

@skorya skorya commented Jan 25, 2026

PR Type

Enhancement


Description

  • Simplified CI workflow to single target build for MATEKH743

  • Removed matrix strategy and multi-platform SITL builds

  • Reduced workflow from 277 to 33 lines for maintainability

  • Added workflow_dispatch trigger for manual builds


Diagram Walkthrough

flowchart LR
  A["Complex multi-target CI"] -->|Simplify| B["Single MATEKH743 build"]
  B --> C["Checkout source"]
  C --> D["Install dependencies"]
  D --> E["Configure build"]
  E --> F["Compile firmware"]
  F --> G["Upload artifact"]
Loading

File Walkthrough

Relevant files
Configuration changes
ci.yml
Streamline CI to single MATEKH743 firmware build                 

.github/workflows/ci.yml

  • Renamed workflow from "Build firmware" to "Build iNav for MATEKH743"
  • Removed matrix strategy with 15 parallel jobs (ids 0-14)
  • Removed all SITL build jobs for Linux arm64, Linux x86, macOS, and
    Windows
  • Removed upload-artifacts aggregation job and test job
  • Simplified to single build job with 4 sequential steps
  • Changed trigger branches from exclusion pattern to explicit main
    branch
  • Added workflow_dispatch trigger for manual execution
  • Updated dependencies to include gcc-arm-none-eabi and python3
  • Changed build configuration to target MATEKH743 specifically
  • Simplified artifact upload to firmware binaries only
+20/-264

@github-actions
Copy link

Branch Targeting Suggestion

You've targeted the master branch with this PR. Please consider if a version branch might be more appropriate:

  • maintenance-9.x - If your change is backward-compatible and won't create compatibility issues between INAV firmware and Configurator 9.x versions. This will allow your PR to be included in the next 9.x release.

  • maintenance-10.x - If your change introduces compatibility requirements between firmware and configurator that would break 9.x compatibility. This is for PRs which will be included in INAV 10.x

If master is the correct target for this change, no action is needed.


This is an automated suggestion to help route contributions to the appropriate branch.

@qodo-code-review
Copy link
Contributor

ⓘ Your approaching your monthly quota for Qodo. Upgrade your plan

PR Compliance Guide 🔍

All compliance sections have been disabled in the configurations.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

High-level Suggestion

The PR's removal of the matrix build strategy and SITL builds eliminates crucial compilation verification across multiple hardware targets and operating systems. This reduction to a single build target (MATEKH743) introduces a high risk of undetected regressions for other hardware. [High-level, importance: 10]

Solution Walkthrough:

Before:

# .github/workflows/ci.yml
jobs:
  build:
    strategy:
      matrix:
        id: [0, 1, ..., 14] # Build for 15 target groups
    steps:
    - name: Build targets (${{ matrix.id }})
      run: cmake ... -DCI_JOB_INDEX=${{ matrix.id }} ... && ninja ci

  upload-artifacts:
    # ... aggregates matrix builds

  build-SITL-Linux:
    # ... builds SITL for Linux

  build-SITL-Mac:
    # ... builds SITL for macOS

  build-SITL-Windows:
    # ... builds SITL for Windows

After:

# .github/workflows/ci.yml
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout source
    - name: Install dependencies
    - name: Configure build for MATEKH743
      run: cmake -B build -G Ninja -D TARGET=MATEKH743 .
    - name: Compile firmware
      run: cmake --build build
    - name: Upload firmware artifact

Comment on lines +23 to +24
- name: Configure build for MATEKH743
run: cmake -B build -G Ninja -D TARGET=MATEKH743 .
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Re-introduce the -DWARNINGS_AS_ERRORS=ON flag in the cmake configuration step to treat compiler warnings as errors, thereby improving code quality. [general, importance: 6]

Suggested change
- name: Configure build for MATEKH743
run: cmake -B build -G Ninja -D TARGET=MATEKH743 .
- name: Configure build for MATEKH743
run: cmake -B build -G Ninja -DWARNINGS_AS_ERRORS=ON -D TARGET=MATEKH743 .

Comment on lines +26 to +27
- name: Compile firmware
run: cmake --build build
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Add a parallel flag like -- -j$(nproc) to the cmake --build build command to speed up firmware compilation. [general, importance: 7]

Suggested change
- name: Compile firmware
run: cmake --build build
- name: Compile firmware
run: cmake --build build -- -j$(nproc)

Comment on lines +29 to +33
- name: Upload firmware artifact
uses: actions/upload-artifact@v4
with:
name: firmware-MATEKH743
path: build/**/*.bin
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Configure the upload step to explicitly fail (or warn) when no matching firmware files are produced, so CI doesn’t “succeed” while uploading nothing. [Learned best practice, importance: 6]

Suggested change
- name: Upload firmware artifact
uses: actions/upload-artifact@v4
with:
name: firmware-MATEKH743
path: build/**/*.bin
- name: Upload firmware artifact
uses: actions/upload-artifact@v4
with:
name: firmware-MATEKH743
path: build/**/*.bin
if-no-files-found: error

Comment on lines 10 to 12
jobs:
build:
runs-on: ubuntu-latest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Add a timeout-minutes to the job to prevent stalled builds from running indefinitely due to external dependency or toolchain hangs. [Learned best practice, importance: 5]

Suggested change
jobs:
build:
runs-on: ubuntu-latest
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30

@skorya skorya closed this by deleting the head repository Jan 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant