CI: pushing existing workflows down to 'develop' branch - #73
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces a full CI/testing stack (workflows + reusable composite actions/scripts) intended to be usable from the develop branch, and adds an initial pFUnit-based Fortran unit-test target for MPAS spline/interpolation routines.
Changes:
- Add pFUnit unit-test build system under
tests/and an initial spline interpolation test suite. - Add GitHub Actions workflows for unit tests, ECT validation, coverage, subset compiler/MPI tests, BFB comparisons, and GPU profiling.
- Add reusable composite actions and helper scripts to build MPAS, download test data, run MPAS/ECT ensembles, validate with PyCECT, and support Nsight Systems profiling.
Reviewed changes
Copilot reviewed 44 out of 44 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
tests/unit/test_spline_interpolation.pf |
Adds pFUnit unit tests for linear and cubic-spline interpolation/integration. |
tests/unit/CMakeLists.txt |
Defines the pFUnit CTest target for the spline interpolation tests. |
tests/CMakeLists.txt |
Adds a standalone CMake project to build a small MPAS “testable procedures” library and enable unit tests. |
.github/workflows/unit-tests.yml |
New CI workflow to build and run pFUnit unit tests on multiple GCC versions. |
.github/workflows/test-nvhpc-openmpi.yml |
Dispatch-only caller for NVHPC+OpenMPI subset ECT validation. |
.github/workflows/test-nvhpc-mpich.yml |
Caller for NVHPC+MPICH subset ECT validation. |
.github/workflows/test-intel-openmpi.yml |
Dispatch-only caller for OneAPI+OpenMPI subset ECT validation. |
.github/workflows/test-intel-mpich.yml |
Caller for OneAPI+MPICH subset ECT validation. |
.github/workflows/test-gpu-openmpi.yml |
Dispatch-only caller for GPU ECT validation with OpenMPI. |
.github/workflows/test-gpu-mpich.yml |
Dispatch-only caller for GPU ECT validation with MPICH. |
.github/workflows/test-gcc-openmpi.yml |
Dispatch-only caller for GCC+OpenMPI subset ECT validation. |
.github/workflows/test-gcc-mpich.yml |
Caller for GCC+MPICH subset ECT validation. |
.github/workflows/test-cross-repo.yml |
Adds a dispatch workflow to run CI against an external MPAS repo/ref. |
.github/workflows/profile-gpu-nsight.yml |
Adds a dispatch workflow to profile MPAS runs on GPU with Nsight Systems. |
.github/workflows/ect-test.yml |
Adds an ECT workflow that builds MPAS-A and validates 3-member ensembles with PyCECT. |
.github/workflows/ect-ensemble-gen.yml |
Adds a dispatch workflow to generate a full ECT reference ensemble/summary and publish to releases. |
.github/workflows/coverage.yml |
Adds a workflow to build with GCC coverage flags and upload lcov output to Codecov. |
.github/workflows/compile-nvhpc-cuda-mpich.yml |
Adds a compile-only workflow for NVHPC+CUDA toolchain validation on hosted runners. |
.github/workflows/bfb-nvhpc-cpu-vs-gpu.yml |
Adds a dispatch BFB workflow comparing NVHPC CPU vs GPU OpenACC outputs. |
.github/workflows/bfb-io.yml |
Adds a BFB caller comparing SMIOL vs PIO outputs. |
.github/workflows/bfb-io-gpu.yml |
Adds a dispatch BFB caller for GPU runs comparing SMIOL vs PIO outputs. |
.github/workflows/bfb-decomp.yml |
Adds a BFB caller comparing different MPI decompositions (rank counts). |
.github/workflows/bfb-decomp-gpu.yml |
Adds a dispatch GPU BFB caller comparing different rank counts. |
.github/workflows/_test-gpu.yml |
Reusable workflow for GPU (CUDA/OpenACC) ECT validation on self-hosted runners. |
.github/workflows/_test-compiler.yml |
Reusable workflow for CPU subset ECT validation across compiler/MPI combinations. |
.github/workflows/_test-bfb.yml |
Reusable workflow for BFB comparisons across multiple variants (CPU/GPU, PIO/SMIOL, ranks). |
.github/scripts/run-nsys-profile.sh |
Adds a helper script to run MPAS under nsys profile. |
.github/scripts/resolve-nsys.sh |
Adds logic to locate a working nsys binary (avoid NVHPC stubs). |
.github/scripts/install-nsight-systems-cli.sh |
Adds an installer for Nsight Systems CLI via NVIDIA devtools RPM repo (RHEL-family images). |
.github/scripts/compare-bfb-nc.py |
Adds a NetCDF “data-only” comparator for BFB checks when container metadata differs. |
.github/data/ect_excluded_vars.txt |
Adds an exclude list to trim large/unneeded variables from ECT artifacts. |
.github/ci-config.env |
Adds centralized CI configuration (containers, make targets, testdata tags, ECT/BFB parameters). |
.github/actions/validate-ect/action.yml |
Composite action to download ECT summary + run PyCECT + write an enriched result artifact. |
.github/actions/setup-nsight-systems/action.yml |
Composite action to ensure a working nsys is available and cache RPM downloads. |
.github/actions/run-perturb-mpas/trim_history.py |
Adds a trimmer to reduce ECT history files (single timeslice, exclude vars, deflate). |
.github/actions/run-perturb-mpas/perturb_theta.py |
Adds a script to perturb theta in IC/restart files for ensemble diversity. |
.github/actions/run-perturb-mpas/action.yml |
Composite action to run perturbed ensemble members and collect/trim history output. |
.github/actions/run-mpas/action.yml |
Composite action to download a test case and run MPAS with configurable overrides/timeouts. |
.github/actions/resolve-container/action.yml |
Composite action to assemble container image names from ci-config.env. |
.github/actions/print-mpas-logs/action.yml |
Composite action to print per-rank MPAS log files into the workflow log. |
.github/actions/mpas-version/action.yml |
Composite action to extract MPAS version from Registry.xml (used for ECT release tags). |
.github/actions/ect-summary/action.yml |
Composite action to aggregate multiple ECT result artifacts into a step-summary table. |
.github/actions/download-testdata/action.yml |
Composite action to download/cache/extract test-case tarballs from GitHub releases. |
.github/actions/build-mpas/action.yml |
Composite action to build MPAS-A using ci-config.env make-target mappings and workarounds. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+19
to
+20
| push: | ||
| branches: [master] |
Comment on lines
+18
to
+19
| push: | ||
| branches: [master] |
Comment on lines
+14
to
+15
| push: | ||
| branches: [master] |
Comment on lines
+8
to
+11
| push: | ||
| branches: [master, 'hackathon-*'] | ||
| pull_request: | ||
| branches: [master, 'hackathon-*'] |
Comment on lines
+11
to
+14
| push: | ||
| branches: [master, 'hackathon-*'] | ||
| pull_request: | ||
| branches: [master, 'hackathon-*'] |
Comment on lines
+8
to
+11
| push: | ||
| branches: [master, 'hackathon-*'] | ||
| pull_request: | ||
| branches: [master, 'hackathon-*'] |
Comment on lines
+8
to
+11
| push: | ||
| branches: [master, 'hackathon-*'] | ||
| pull_request: | ||
| branches: [master, 'hackathon-*'] |
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The development process on the NCAR/MPAS-Model-CI branch looked different than on the main MPAS-Dev/MPAS-Model repository, because of the need for the CI files to exist on the default 'master' branch. This means that instead of changes being pushed from develop -> master, in this case I need to push the changes on 'master' -> 'develop'. If the files exist on 'develop', I can test the new changes on the MPAS-Dev/MPAS-Model 'develop' branch when I sync my fork.