Continuous Integration

CI Status

TAU Commander uses GitHub Actions for CI, nightly testing, and release publication. The workflows are in .github/workflows/.

CI (CI.yml)

CI runs on every push and pull request, or upon request. Each variant installs the system compilers and MPI, then runs tox for the version of Python used for testing. tox builds the wheel, installs it and runs the whole test suite against the installed copy. The tests run twice for each Python version to cover both storage backends, TinyDB and SQLite.

On push and pull request, CI tests Python 3.15 on ubuntu-24.04 (x86_64), ubuntu-24.04-arm (aarch64) and macos-latest (Apple silicon). To test the older supported Pythons, run the CI manually and give the Python versions to test using the python-versions input:

gh workflow run CI.yml --ref <branch> -f python-versions='["3.11", "3.12", "3.13", "3.14"]'

The ubuntu-24.04 Python 3.15 TinyDB leg also builds the documentation. On a push to master or unstable, the deploy-docs job publishes them to GitHub Pages once all tests have passed.

Nightly (nightly.yml)

The nightly workflow runs every day at 10:18 UTC, or upon request. It installs TAU Commander with uv tool install, builds a minimal and then a full set of TAU configurations with tau system configure, runs the test suite under each backend against that installation’s tau, and then runs TAU’s tau_validate.

Release (release.yml)

The release workflow runs when a v* tag is pushed. It builds the sdist and wheel, checks that their version matches the tag, and publishes them, release candidates to TestPyPI and releases to PyPI. Run by hand, it builds and checks the distributions without publishing them. See Packaging and Releasing TAU Commander.

Test results

Each test run writes test-timings.csv to build/test-results/, and JUnit XML files too when unittest-xml-reporting is installed, as it is under tox. CI and the nightly upload that directory as an artifact (taucmdr-unit-test-results-<os>-py<version>-<backend> in CI, taucmdr-unit-test-results-<os>-<backend> in the nightly) and send the JUnit files to Codecov. Download an artifact with gh run download <run ID> -n <artifact name>.