Repository navigation
Improve CI - #226
Open
clairemerker wants to merge 65 commits into
Open
Improve CI#226clairemerker wants to merge 65 commits into
clairemerker wants to merge 65 commits into
Conversation
Contributor
|
cscs-ci run |
Contributor
|
cscs-ci run |
Co-authored-by: Mary McGlohon <Mary.McGlohon@meteoswiss.ch>
Adds an integration test that runs the full evalml experiment pipeline and asserts that key verification metrics match reference values from a known-good run. --------- Co-authored-by: Luca Lanzilao <llanzila@balfrin-ln004.cscs.ch> Co-authored-by: Luca Lanzilao <llanzila@balfrin-ln003.cscs.ch>
This PR implements minor changes to the existing meteogram integration test. ### Summary of changes * rename test and config to meteogram_small * change date to 2024-08-01 (official start of ICON archive) * additional parameters to cover all use cases (derived, aggregated and instantaneous)
Contributor
|
cscs-ci run |
Contributor
|
cscs-ci run |
2 similar comments
Contributor
|
cscs-ci run |
Contributor
|
cscs-ci run |
Under the service account, uv needs to be installed for every CI run since there is no global installation. --------- Co-authored-by: Mary McGlohon <Mary.McGlohon@meteoswiss.ch> Co-authored-by: clairemerker <34312518+clairemerker@users.noreply.github.com>
Two different pipelines: - longtest: intergration tests - heavytest: heavy integration tests (full end to end) The idea is to trigger heavytest weekly or nighly using the CI cron, and longtest in PRs using the comment call.
Fix truth in config test move configs to test folder --------- Co-authored-by: Luca Lanzilao <llanzila@balfrin-ln004.cscs.ch>
Contributor
|
cscs-ci run heavytest |
… testing-hackathon
Contributor
|
cscs-ci run heavytest |
Contributor
|
cscs-ci run heavytest |
Collaborator
|
cscs-ci run heavytest |
Collaborator
|
cscs-ci run longtest |
Resolve conflict in workflow/rules/inference.smk by keeping the unset ECCODES_ECKIT_GEO fix from main.
- Restore lead_time to 120h in sgm-multidataset ich1-oper config - Pin uv version to 0.11.32 in CI install - Add 'cancel' to summarize_logs error keywords
- Fix snakefmt indentation of account_flag params block in inference.smk - Apply ruff formatting to summarize_logs error keyword set
Apply trailing-whitespace, end-of-file, and ruff-format fixes to existing files flagged by pre-commit run --all-files.
Contributor
Author
|
cscs-ci run longtest |
Contributor
Author
|
cscs-ci run heavytest |
CI runners resolve a system Python 3.12 built without the sqlite3 extension, which crashes pytest-cov (coverage imports sqlite3 at startup). Pin python-preference = only-managed so uv always uses a python-build-standalone interpreter, which bundles sqlite3.
Contributor
Author
|
cscs-ci run longtest |
The spatial-interpolation tolerance fix (#271) merged from main slightly changes the matched-cell set: N_total drops 2295960 -> 2284728 (-0.49%) and stat means shift ~1-2%, while min/max extremes are unchanged and all field invariants (RMSE>=MAE, RMSE**2==STDE**2+BIAS**2) and the not-grey PNG checks still pass. Recorded with EVALML_UPDATE_REFERENCE=1 on linard.
The TOT_PREC units fix merged from main changed the forecaster config, so its run_id hash moved (864a->f361) and the frozen fixture no longer matches. Re-capturing needs a real inference run with servicedepl mlflow access; skip the test until then so longtest is green.
Contributor
Author
|
cscs-ci run longtest |
The file is written by the evalml CLI before launching snakemake, but is absent when the workflow is invoked directly (e.g. snakemake -n in the replay dry-run tests), which crashed DAG building at parse time. It only feeds the startup banner, so fall back to an empty string when missing.
Contributor
Author
|
cscs-ci run longtest |
The script is CI-only; co-locate it with the other CI assets and update the longtest/heavytest job references. Removes the now-empty tools/ dir.
Co-locate run-integration-coverage.sh and coverage-integration.cfg with the test suite they drive; update the longtest/heavytest job invocations, the CI README, and the scripts' internal config path.
Replace the local runner and setup fragments (.baremetal-runner-balfrin, .sh_preamble, .install_uv, .install_evalml) with the reusable blocks from varda-cscs-ci-workflows, included remotely. cscs.yml now defines a single .evalml-job base (shared runner config, .mch-* setup before_script, and the log-summary artifact); longtest/heavytest only set their marker and Slurm time limit. Cluster selection is delegated to the shared cluster.yml (currently linard).
Contributor
Author
|
cscs-ci run longtest |
The PR moved the production configs into tests/integration/configs/, which breaks existing workflows that reference config/. Restore config/ from main so those keep working; the test suite continues to use its own copies under tests/integration/configs/. Intentionally duplicated until the team decides on a single location.
Move the contents of tests/integration/README.md (inference fixtures, MEC caveats, fixture versioning, regenerating expected metrics) into the Testing documentation section of the top-level README, and repoint the test/config references at it. Removes the separate tests/integration/README.md.
Move the CI/CD admin/setup and trigger docs into a CI/CD setup subsection of the main README (images repathed to ci/images/), and remove ci/README.md so all documentation lives in one place.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Testing documentation and CI/CD setup.
Disentangle inference testing from core-functionality testing (reports, meteograms, animations). Core logic is checked fast on every push; expensive inference is replayed from frozen reference data where possible, with full end-to-end runs kept separate.
Tiers
0. Unit — GitHub Actions on every push; locally
pytest.1. longtest (per-PR;
cscs-ci run longtestorci/run-integration-coverage.sh longtest tests/integration)Baseline or frozen inference fixtures only — no GPU/MLflow, so it stays quick.
test_scoremaps_small— ICON-CH2-CTRL, 2025-04-01, KENDA-CH1 truth, T_2M/TOT_PREC6, Switzerlandtest_replay_dryrun— fixture-replay DAG wiring + missing/checksum guardstest_meteogram_small— Varda + ICON-CH1/2-CTRL, 2024-08-01, SwissMetNet, GVE/SAE (skipped: fixture stale after the TOT_PREC fix, needs re-capture withservicedeplMLflow access)test_dashboard_small— ICON-CH1-CTRL + INCA (WIP, disabled)test_mec_small— Varda forecaster, 2025-08-01, MEC (no ffv2) (needssarus)2. heavytest (weekly cron;
cscs-ci run heavytestor.../heavytest tests/integration)Full workflow incl. real inference (
test_configs.py).forecasters-ich1.yaml— forecaster eval, 2025-03-01→02, ICON-CH2-EPS, KENDA-CH1varda-single-1.0.yaml— forecaster + downscaler, 4 seasons, INCA/ICON-CH2-CTRL/ICON-CH1-CTRL, SwissMetNet, scorecardsMechanisms
evalml capture-fixture,src/evalml/fixtures.py) with per-GRIB checksums inMANIFEST.yaml.EVALML_UPDATE_REFERENCE=1).Todo / missing tests
config/lives alongsidetests/integration/configs/currently (duplicated): team to decide final locationtest_animation_small.py(ICON-CH2-CTRL, 2 lead times)aifs-single.yaml,forecasters-ich1-oper.yaml,forecasters-ich1-oper-fixed.yaml,forecasters-ich1_mec_ffv2.yamlservicedeplMLflow) and un-skip