Finite Element Discretization Library
__
_ __ ___ / _| ___ _ __ ___
| '_ ` _ \ | |_ / _ \| '_ ` _ \
| | | | | || _|| __/| | | | | |
|_| |_| |_||_| \___||_| |_| |_|
https://mfem.org
This directory contains the GitHub CI scripts for MFEM.
Note that some of these scripts use the shared MFEM GitHub Actions from the external mfem/github-actions repository:
https://github.com/mfem/github-actions
For a particular action, e.g. mfem/github-actions/build-mfem@v2.5, the v2.5 suffix denotes the branch in the above from which the action is taken.
The current CI workflows are:
repo-check.yml
Runs a number of static repository-level sanity checks.
-
file-headers-checkchecks copyright date, license, etc. using the--copyright,--licenseand--releaseoptions of theconfig/githooks/pre-pushscript. -
code-stylechecks the code style using the--styleoption of theconfig/githooks/pre-pushscript. -
documentationchecks the documentation build using thetests/scripts/documentationscript. -
branch-historyguards against accidental commits of large files using the--historyoption of theconfig/githooks/pre-pushscript.
mfem-analysis.yml (build-analysis)
Checks if the code builds and satisfies minimal requirements.
gitignorebuilds hypre, METIS, and MFEM usingmfem/github-actions/build-hypre,mfem/github-actions/build-metis, andmfem/github-actions/build-mfemand checks for correct.gitignoresettings by running thetests/scripts/gitignorescript.
builds-and-tests.yml
Runs a matrix of builds and tests runs with different compilers, OS, mfem/hypre settings, etc. Also processes and upload Codecov reports.
Uses the following GitHub Actions from https://github.com/mfem/github-actions:
mfem/github-actions/build-hypremfem/github-actions/build-metismfem/github-actions/build-mfemmfem/github-actions/upload-coverage
Sanitizer Workflow for MFEM Verification
This workflow validates MFEM unit tests, examples, and miniapps using sanitizer tools.
sanitizers.ymlorchestrates:- Building and caching dependencies: HYPRE, METIS, LSAN suppression file, and LLVM libcxx.
- Launching fine-grained jobs for serial (ASAN, MSAN, UBSAN) and parallel (ASAN, UBSAN) sanitizers.
sanitize-tests.ymlis a reusable workflow acceptingparmode (truefor parallel) andsanitizer(ASAN, MSAN, or UBSAN) as inputs. It executes the following jobs:- Build: Compiles the MFEM library with specified parallel and sanitizer settings.
- Check: Runs verification checks.
- Parallel jobs to test the following: Examples, Miniapps and Unit tests
The workflow leverages composite actions in .github/actions/sanitize/:
config: Centralizes settings for the sanitizer workflow.mfem: Manages the MFEM library build process.mpi: Installs MPI and applies additional compilation flags.restore: Restores the testing environment state.setup: Builds or restores cached dependencies.