Skip to content

Unify CI to use lockfile-based env#634

Merged
marcpaterno merged 7 commits into
masterfrom
alter-macos-ci
Apr 30, 2026
Merged

Unify CI to use lockfile-based env#634
marcpaterno merged 7 commits into
masterfrom
alter-macos-ci

Conversation

@marcpaterno
Copy link
Copy Markdown
Collaborator

@marcpaterno marcpaterno commented Apr 28, 2026

Description

The current CI system encounters too-frequent failures in which the
conda solver takes too long to solve an environment. This PR moves
to the use of developer-generated lockfiles that present the build
with a stable environment.

It also includes additional diagnostic jobs intended to identify when
the lockfiles should be updated. A failure of one of these jobs does
not cause a failure of the CI pipeline. It merely indicates that the
developers should consider updating the lockfiles.

Type of change

Bug fix (non-breaking change which fixes an issue)

Checklist:

The following checklist will make sure that you are following the code style and
guidelines of the project as described in the
contributing page.

  • I have run bash pre-commit-check and fixed any issues
  • I have added tests that prove my fix is effective or that my feature works
  • I have made corresponding changes to the documentation
  • I have 100% test coverage for my changes (please check this after the CI system has verified the coverage)

Add a nightly-only CI mode that installs from committed explicit
lockfiles on cache misses while keeping pull-request jobs on the
existing environment.yml flow.

Switch nightly cache keys from date-based values to lockfile-hash
keys for stable reuse and deterministic invalidation.

Add lockfile generation tooling with a pinned conda-lock version and
Makefile targets to regenerate and verify the full OS/Python lock
matrix.

Remove the top-level environment name from environment.yml and add
non-blocking Linux and macOS nightly drift-rebuild checks to surface
solver drift without failing nightly status.
This is a temporary addition to allow testing of the new CI
configuration.
Update nightly conda cache keys with a pip dependency version suffix
so cache entries are invalidated when those pip requirements change.
Install cobaya, isitgr, and pygobject-stubs in the lockfile-based
environment setup so nightly jobs consistently include required
packages for linting, matrix runs, and external dependencies.
No new tests were added because this change only updates CI
environment
Added a new section explaining the nightly workflow's use of lockfile-based
environments and rebuild-drift advisory jobs. This documents how conda solve
caching works in nightly mode and how drift detection jobs diagnose
environment resolution issues. Also updated the CI System Architecture link
reference to point to CONTRIBUTING_ADVANCED.md, where this documentation
now resides.
Consolidated nightly and pull request CI modes to always use lockfile-based
environment creation with lock-hash cache keys. This eliminates separate
date-based caching logic for PR mode and simplifies conditional branching
throughout the reusable workflow.

Added a new non-blocking rebuild-drift canary job in pull request CI that
triggers only on dependency-impacting file changes and performs a fresh
environment rebuild to detect conda resolution drift without blocking
merges.

Added debug output throughout environment setup steps and updated
CONTRIBUTING_ADVANCED.md to document the new PR drift detection behavior
and clarify the unified lockfile-based approach.
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.0%. Comparing base (b2129da) to head (d16b573).

Additional details and impacted files
@@            Coverage Diff            @@
##           master     #634     +/-   ##
=========================================
  Coverage    99.9%   100.0%             
=========================================
  Files         178      151     -27     
  Lines       13272     9057   -4215     
  Branches     1576     1035    -541     
=========================================
- Hits        13269     9057   -4212     
+ Misses          2        0      -2     
+ Partials        1        0      -1     

see 44 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@marcpaterno marcpaterno requested a review from vitenti April 28, 2026 19:17
@marcpaterno marcpaterno marked this pull request as ready for review April 28, 2026 19:18
Copilot AI review requested due to automatic review settings April 28, 2026 19:18
This adjusts the build so that it tests the `master` branch when merged into `master`.
@marcpaterno marcpaterno merged commit ef3534e into master Apr 30, 2026
3 of 12 checks passed
@marcpaterno marcpaterno deleted the alter-macos-ci branch April 30, 2026 19:17
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.

2 participants