Skip to main content

Continuous Integration

Every change to MNE-CPP is automatically built, tested, and — for releases — packaged across Windows, Linux, and macOS before it reaches users. The CI system runs on GitHub Actions and is organized around the Main – Staging – Feature branch model.

Pull requests cannot be merged until all platform jobs pass. Development builds are published on every push to staging; stable release binaries are created when a version tag (v*) is pushed on main.

Guides

  • GitHub Actions — Workflow overview, the pull-request, staging, and release pipelines, secrets, and how to add or modify workflows.
  • Unit Testing — How to write and run unit tests using Qt Test, including test structure, reference data, and naming conventions.
  • Deployment — How Qt dependencies are bundled on each platform using windeployqt, linuxdeployqt, and macdeployqt.
  • Release Guide — Branch model, versioning, and the step-by-step process for creating a new stable release.

At a Glance

Branch / EventWorkflowWhat Happens
Pull request → staging or mainpull-request.ymlBuild matrix (Qt min + max) + tests on all platforms
Push to stagingstaging.ymlDev release binaries, coverage checks, dev website + Doxygen, CodeQL
Push to mainmain.ymlTests, stable website + Doxygen deployment
Tag v* on mainmain.ymlFull stable release: platform binaries, installers, WebAssembly
Push to wasmwasmtest.ymlWebAssembly build deployed to GitHub Pages
Timer (every 2 days)coverity.ymlCoverity static code analysis

Contributors should follow the contribution workflow to ensure their changes pass all CI checks before requesting a review.