Skip to content

Add comprehensive test suite, CI/CD restructuring, and documentation updates#979

Merged
chdinh merged 4 commits intomainfrom
staging
Mar 9, 2026
Merged

Add comprehensive test suite, CI/CD restructuring, and documentation updates#979
chdinh merged 4 commits intomainfrom
staging

Conversation

@chdinh
Copy link
Member

@chdinh chdinh commented Mar 9, 2026

This pull request introduces a major overhaul of the project's GitHub Actions CI/CD workflows. The changes modularize and modernize the pipeline, introducing reusable workflows for building and testing, expanding platform and Qt version coverage, and improving code coverage tracking and deployment processes. Additionally, obsolete or redundant workflows are removed, and some configuration is updated to reflect the new branching model.

Workflow modularization and enhancements:

  • Added .github/workflows/_reusable-build.yml and .github/workflows/_reusable-tests.yml to provide reusable, parameterized workflows for building and testing MNE-CPP across Linux, macOS, and Windows, with support for different Qt versions and code coverage options. These are now called by the main, staging, and pull-request pipelines. [1] [2]
  • Introduced .github/workflows/main.yml as the new main branch pipeline, orchestrating builds, tests, documentation, website deployment, releases, installers, and WebAssembly builds. This workflow uses the new reusable build/test workflows and covers a comprehensive release process.

Testing and code coverage improvements:

  • The new test workflow supports optional code coverage (gcov/lcov) on Linux, uploads to Codecov, and enforces configurable coverage thresholds and regression checks, with baseline caching for comparison.

Branching model and configuration updates:

  • Updated .github/workflows/codeql.yml to include the staging branch alongside main for both push and pull request triggers, reflecting the new branching model.

Cleanup and deprecation:

  • Removed the obsolete .github/workflows/docutest.yml workflow, which was previously used for documentation updates on a dedicated branch, as this functionality is now handled in the new main pipeline.

Summary of most important changes:

1. Workflow modularization and orchestration

  • Added reusable build and test workflows (_reusable-build.yml, _reusable-tests.yml) for consistent CI across platforms and Qt versions, now leveraged by the main pipeline. [1] [2]
  • Introduced a comprehensive new main workflow (main.yml) to coordinate builds, tests, documentation, website deployment, releases, and WebAssembly artifacts, supporting both branch and tag triggers.

2. Testing and code coverage

  • Enhanced test workflow to support code coverage instrumentation, reporting, threshold enforcement, and regression detection, with Codecov integration and artifact uploads.

3. Branching and configuration updates

  • Updated CodeQL workflow to include the new staging branch for both push and pull request events.

4. Cleanup

  • Removed the legacy documentation workflow (docutest.yml), consolidating documentation deployment into the main pipeline.

chdinh added 4 commits March 7, 2026 19:01
- Add test_fiff_info: FiffInfoBase, FiffInfo, channel picks, FiffProj
- Add test_fiff_data_types: FiffEvents, FiffDigPointSet, FiffEvokedSet, FiffCoordTrans
- Add test_filter_kernel: FilterKernel, ParksMcClellan, CosineFilter
- Add test_filter_data: filterData, filterDataBlock, FilterOverlapAdd, DetectTrigger
- Add test_fs_surface_annotation: Surface normals, SurfaceSet, Annotation, Label, Colortable
- Add test_mne_data_types: MNESourceSpace, MNEBem, MNEForwardSolution, MNESourceEstimate
- Add test_fwd_models: FwdBemModel, FwdEegSphereModel, ComputeFwdSettings, FwdCoilSet
- Add extended tests for connectivity, disp, fiff, fs, fwd, mne, rtprocessing, utils
- Update testframes CMakeLists.txt with all new test subdirectories
…e to mne_source_estimate

- Consolidated boost/push tests into 4 library-level tests:
  test_mne_library, test_fwd_library, test_fiff_fs_library, test_inv_rt_library
- Added new test frameworks for fiff_coord_transform, fiff_raw_io,
  fs_annotation_labels, fwd_bem_data, fwd_sphere_settings,
  inverse_data, inverse_rap_dipole, mne_hemisphere_epoch,
  mne_source_data, rtprocessing_averaging, compute_raw_inverse
- Renamed mne_sourceestimate.h/cpp to mne_source_estimate.h/cpp
- Updated all include references across applications, examples,
  libraries, and testframes
- Various library improvements and fixes
- Add reusable workflows: _reusable-build.yml, _reusable-tests.yml
- Add main.yml: tag-based releases, production website + Doxygen deploy
- Add staging.yml: dev builds, coverage threshold/regression, dev docs
- Add pull-request.yml: build matrix + tests for PR validation
- Update release-linux/macos/windows/installer for unified release logic
- Update codeql.yml and codecov.yml for new branch names
- Update docusaurus.config.ts with version dropdown (stable/dev)
- Remove obsolete: tests.yml, release.yml, pullrequest.yml, docutest.yml
- ci-releasecycle.mdx: Rewrite branch strategy, add dual-version docs section,
  update release steps for staging→main→tag flow
- contr-guide.mdx: PRs now target staging, feature branches from staging
- contr-git.mdx: Add branch model overview, rebase against staging
- ci.mdx: Update At a Glance table with new workflow names
- ci-ghactions.mdx: Rewrite workflow overview, add reusable workflows,
  document staging and main/release pipelines
- ci-deployment.mdx: Update workflow file references to split release files
- contribute.mdx: Update quick start to branch from staging
@chdinh chdinh merged commit 0233fd6 into main Mar 9, 2026
10 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant