68 lines
3.1 KiB
Markdown
68 lines
3.1 KiB
Markdown
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-check` checks copyright date, license, etc. using the `--copyright`, `--license` and `--release` options of the `config/githooks/pre-push` script.
|
|
|
|
- `code-style` checks the code style using the `--style` option of the `config/githooks/pre-push` script.
|
|
|
|
- `documentation` checks the documentation build using the `tests/scripts/documentation` script.
|
|
|
|
- `branch-history` guards against accidental commits of large files using the `--history` option of the `config/githooks/pre-push` script.
|
|
|
|
## `mfem-analysis.yml` (`build-analysis`)
|
|
|
|
Checks if the code builds and satisfies minimal requirements.
|
|
|
|
- `gitignore` builds hypre, METIS, and MFEM using `mfem/github-actions/build-hypre`, `mfem/github-actions/build-metis`, and `mfem/github-actions/build-mfem` and checks for correct `.gitignore` settings by running the `tests/scripts/gitignore` script.
|
|
|
|
## `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-hypre`
|
|
- `mfem/github-actions/build-metis`
|
|
- `mfem/github-actions/build-mfem`
|
|
- `mfem/github-actions/upload-coverage`
|
|
|
|
## Sanitizer Workflow for MFEM Verification
|
|
|
|
This workflow validates MFEM unit tests, examples, and miniapps using sanitizer tools.
|
|
|
|
- `sanitizers.yml` orchestrates:
|
|
- 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.yml` is a reusable workflow accepting `par` mode (`true` for parallel) and `sanitizer` (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.
|