CI strategy - MDAnalysis/mdanalysis GitHub Wiki
This page is a work in progress — 2024-08-25
We use continuous integration to continuously run a range of tests and checks on our code.
Overview
The standard .github/workflows/gh-ci.yaml workflow configuration file for GitHub-actions and azure-pipelines.yml for Azure contain all information about our CI runners.
We are also using CirrusCI (config files .cirrus.star, maintainer/ci/cirrus-ci.yml, maintainer/ci/cirrus-deploy.yml) for some special cases.
Types of tests/checks
- functional/unit tests (pytest)
- coverage (of the unit tests)
- doctests
- performance benchmarks (asv)
- sdist package build
Priorities
Currently we first make sure that MDAnalysis runs correctly with all supported Python versions. We always test all versions on Linux x86_64.
We then want to make sure that it runs on macOS (M1/M2 macs, older x86_64) and Windows (x86_64). In order to decrease the load on CI, we do not test the full matrix of Python versions with operating systems and CPU architectures.
External variables: Test matrix
Elements of the test matrix are the operating system, architecture, and the source of the dependency installation. We do not test a full Cartesian product of all possibilities. Instead different runners cover subsets.
(TODO: describe which runner does what and why)
Operating systems
- Linux
- macOS
- Windows
Python version
Follow SPEC0, so typically only the last 3-4 minor versions, e.g., 3.10, 3.11, 3.12.
Architectures
- x86_64
- arm64 (macOS) – GH runners
- arm64 (Linux) — CirrusCI
numpy version
- minimal
- latest
Installation source of dependencies
- PyPi (pip installation)
- conda-forge (mamba installation)
Implementation
? Which resources/runners cover the priorities ?