Split CI into nightly + release + PR-check, mirror darktable's branching#26
Merged
Merged
Conversation
31b8bdc to
51321b4
Compare
Collaborator
Author
|
Tested on a brand new test repository. Made some small improvements. |
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.
Replaces the single
build-models.ymlwith three focused workflows and adopts darktable's own release/branching pattern so the model set can be maintained the same way the host app is.What's changing
nightly.ymlpush: master(paths-filtered), manual dispatchnightly-X.Y.Zpre-releaserelease.ymlrelease-X.Y.Z[.N]tag push, manual dispatchcheck-pr.ymlmasterormodels-*.x, manual dispatchReplaces
build-models.ymland renamescheck-models.yml→check-pr.yml.Tag convention – even = release, odd = dev anchor
This PR adopts a parity-based split for
release-*tags:release-5.6.0.1,release-5.6.0.2,release-5.8.0.1, …) – real model releases. The 4th component is a per-darktable-line revision counter:release-5.6.0.1is the first model set for darktable 5.6.0,release-5.6.0.2is the next revision for the same darktable line, etc. Tag pushes triggerrelease.yml→ matrix build → draft upload.release-5.5.0,release-5.7.0, …) – development anchors.release.yml's tag filter excludes these, so pushing them creates the tag silently with no workflow side effects. They exist solely to givegit describean anchor for the nightly version label.tools/get_git_version_string.shmatches the wholerelease-*namespace, so both kinds contribute to the version computation. The nightly title reads "X.Y.Z+N~gXXX" relative to the closest reachable tag, whether that's a real release or a dev anchor.Add a seed dev anchor
The repo has no
release-*tag at all yet.git describefalls back to a bare commit hash, so the nightly title would read "nightly models 81b7b63" instead of a version. Push a dev anchor from current master:git checkout master git pull git tag -a release-5.5.0 -m "dev anchor for the 5.6.0 development cycle" git push origin release-5.5.0Order doesn't matter (before or after merging this PR) –
release-5.5.0has an odd minor, sorelease.yml's tag filter ignores it either way. The label flips to "5.6.0.1" the moment the realrelease-5.6.0.1is tagged.Future dev anchors (
release-5.7.0,release-5.9.0, …) can be added the same way during their respective dev cycles, also without workflow side effects.Behavior contracts
needs.build.result == 'success')RELEASE_NOTES.mdcontent, then clicks Publish. Removes the "released by accident" failure mode.nightly.ymlagainst a tag ref (rare, but possible from the Actions UI), the upload becomes a draft instead of clobbering the public rolling nightly.concurrency: { group: nightly, cancel-in-progress: true }so 3 PRs merged in 2 minutes produce 1 nightly run with the latest commit, not 3 racing runs. Same per-PR forcheck-pr.yml.uv.lock– first run after a lockfile change pays the full download cost, every run after that is a fast restore. Saves meaningful CI time across the matrix.What a maintainer no longer does
Old flow (
build-models.yml): the workflow triggered onrelease: types: [published]. So every time anything new should reach users, the maintainer had to manually create a release in the GitHub UI to fire the build. This conflated "I just merged a PR" with "I want to ship a release", and meant master commits without a manual release attached produced no artifacts at all.New flow:
nightly.yml. The rollingnightlypre-release is updated in place – no maintainer action needed. Users tracking nightly always have the latest builds.release-X.Y.Ztag when they decide to ship, andrelease.ymlbuilds + uploads a draft. The maintainer reviews the draft and publishes from the UI.The two concerns are now decoupled. Merging a PR no longer requires any release-creation step; tagging a release no longer requires anything except
git tag+git push.What a maintainer does
Cutting the first model release for darktable 5.6.0:
For the next revision (
release-5.6.0.2):models-5.6.x(check-pr.yml validates).git tag release-5.6.0.2from the merge commit onmodels-5.6.x, push.What's not changing
discover→build→publish).dtai setup→convert→validate→package/demo)..dtmodelartifact format or upload location.data/ai_models.jsonregistry – it continues to point at GitHub release assets by name.Open items (not in this PR)
git describeagainst this repo's ownrelease-*tags. Before the first release tag exists it shows a bare commit hash; flips to a proper "X.Y.Z+N~gXXX" form once tags appear.