Skip to content

Test --tach in CI#1291

Draft
msimberg wants to merge 6 commits into
C2SM:mainfrom
msimberg:ci-tach
Draft

Test --tach in CI#1291
msimberg wants to merge 6 commits into
C2SM:mainfrom
msimberg:ci-tach

Conversation

@msimberg

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions

Copy link
Copy Markdown

Mandatory Tests

Please make sure you run these tests via comment before you merge!

  • cscs-ci run default
  • cscs-ci run distributed

Optional Tests

To run benchmarks you can use:

  • cscs-ci run benchmark-bencher

To run tests and benchmarks with the DaCe backend you can use:

  • cscs-ci run dace

To run test levels ignored by the default test suite (mostly simple datatest for static fields computations) you can use:

  • cscs-ci run extra

For more detailed information please look at CI in the EXCLAIM universe.

@msimberg msimberg mentioned this pull request Jun 23, 2026
msimberg added a commit that referenced this pull request Jun 25, 2026
This PR unifies the default, extra, distributed, dace pipelines into one
pipeline that can be parameterized to run different subsets of tests.

The test jobs are generated by a new script `generate_ci_pipeline.py`
because we can't use variables to dynamically filter gitlab matrix jobs.
The test jobs are triggered as a gitlab child pipeline
(https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#parent-child-pipelines).

There are now three main CI pipelines (in addition to the benchmark
pipelines which are mostly unchanged, except to adapt to the changes in
`base.yml`):
- `default` still exists, and should be the "default" pipeline to run
when you want to check if the PR is roughly in shape. This runs serial
and MPI tests with one GPU backend. Bikeshedding on what belongs here
welcome, but in my opinion this should be relatively small. `default`
can and should be customized to run a subset of tests that are relevant
for your changes (see below). A future extension would be to
automatically detect which tests actually need to run based on the
changes in the PR (see e.g. #1291). This will not be implemented in this
PR.
- `merge` is new, and will be made gating for PR merges. `default` will
not be required for merges since it's a subset of `merge`. `merge` is
roughly like the current `default` pipeline in that it runs most tests
with all backends. This can be triggered when a PR has been approved and
auto-merge has been enabled. A future extension is to make this pipeline
run using merge queues
(https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue).
- `all` is also new, and runs _all_ tests, including future "extended"
or "validation" tests (#1303). This is meant to be run e.g. once a week
on `main`. I've currently set up a run that runs daily at 2 AM on this
branch (first run here:
https://gitlab.com/cscs-ci/ci-testing/webhook-ci/mirrors/5125340235196978/2255149825504677/-/pipelines/2624464232).
I'll update this to `main` and weekly when this is merged.

As mentioned above, the `default` pipeline is intended to be customized
with CI variables, e.g.

> cscs-ci run default;SESSIONS=model;MODEL_SUBPACKAGES=dycore

All variables can be overwritten. Otherwise they take the default values
from the `default` pipeline definition. The test reminder has been
updated with some hints and reminders about which pipelines to run and
how to customize them.

The `dace`, `extra`, and `distributed` pipelines have been removed since
they're covered by the other pipelines now.

Slightly out of scope, I've changed some of the scripts in `scripts/` to
use `--only-group scripts` to not pull in unnecessary dependencies. The
new `generate_ci_pipeline.py` script is run directly with `python
scripts/python/generate_ci_pipeline.py` instead of through `scripts/run`
because the latter pulls in many unnecessary dependencies. By running it
directly with `--only-group scripts`, `generate_ci_pipeline.py` can be
run in a very slim container which is much faster to pull.

Since the `all` pipeline now ran tests that were previously not run in
CI, it exposed some numpy/cupy mismatches in the RBF tests. I've fixed
those at the same time.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant