ComfyUI/.github/workflows
Kosinkadink 8626a290c4 refactor: move release gating into cut-release.yml; bump from last stable tag
The workflow now does its own gating rather than trusting the operator
to pre-stage a clean candidate, and creates the version-bump commit
itself so the candidate branch can be a pure cherry-pick chain.

Operator flow (changed):
  - Locally cherry-pick the backport commits onto the previous stable
    tag. NO version-bump commit.
  - Push the candidate branch and open a PR against `master`.
  - Wait for CI green; get an APPROVED review from a user listed in the
    repo variable `STABLE_RELEASE_APPROVERS`.
  - Run the workflow with `source_branch` = candidate branch.

Workflow now verifies, in order:
  1. `source_branch` matches a safe ref-name regex.
  2. `STABLE_RELEASE_APPROVERS` repo variable is configured.
  3. Latest stable tag = highest semver `vX.Y.Z`; next version is
     `last_tag_patch + 1` (computed; no longer a workflow input).
  4. Source branch exists on origin; target release branch and tag
     do NOT exist (refuse to overwrite).
  5. Branch is rooted at the latest stable tag:
       * tag is an ancestor of source HEAD,
       * `merge-base(source, master) == tag commit` (no master commits
         sneaked in via merge/rebase),
       * no merge commits in `tag..source` (linear cherry-picks only).
  6. Version files on the candidate still equal the previous tag's
     version (operator must NOT include a version bump). Read via
     `git show | python3 -c '...'` so candidate code is never executed,
     and `comfyui_version.py` is statically AST-parsed for `__version__`.
  7. PR for the source branch exists, targets master, head SHA matches
     the candidate, has an APPROVED review on that exact SHA from an
     allow-listed user (stale approvals on older commits don't count),
     and all check-runs / commit-statuses on the SHA are success /
     neutral / skipped. `mergeable_state` is intentionally not used —
     backport branches by definition aren't "up-to-date with master".

After all gates pass, the workflow creates the version-bump commit
itself (edits `pyproject.toml` + `comfyui_version.py` via stdlib regex,
commits as `github-actions[bot]`), then atomically pushes
`release/v<version>` + `v<version>` annotated tag using
`RELEASE_BOT_TOKEN`.

Kept from the previous revision: atomic ref push, `persist-credentials:
false` checkout, AST-based version-file parse (never `exec()`), all
inputs flow through `env:` vars (no command injection), `dry_run`
short-circuits the push step, pre-flight existence checks, step summary
linking to `release-stable-all.yml`.

Verified end-to-end against Kosinkadink/ComfyUI with sentinel `v0.99.99`
→ `v0.99.100`: dry-run passed all 11 steps; real run created
`release/v0.99.100` + `v0.99.100` atomically. Negative cases for the
approval gate and version-file gate also exercised.
2026-05-15 22:44:10 -07:00
..
api-node-template.yml chore(api-nodes): adjusted PR template; set min python version for pylint to 3.10 (#10787) 2025-11-18 03:59:27 -08:00
check-ai-co-authors.yml ci: add check to block AI agent Co-authored-by trailers in PRs (#12799) 2026-03-16 15:53:13 -04:00
check-line-endings.yml Fix issue with line endings github workflow. (#9053) 2025-07-25 17:25:08 -04:00
cut-release.yml refactor: move release gating into cut-release.yml; bump from last stable tag 2026-05-15 22:44:10 -07:00
openapi-lint.yml Add Spectral lint CI gate for openapi.yaml (#13410) 2026-05-05 13:21:36 -07:00
pullrequest-ci-run.yml Change runner label for the new runners (#5197) 2024-10-09 20:08:57 -04:00
release-stable-all.yml Add portable release for intel XPU. (#13272) 2026-04-03 15:29:06 -04:00
release-webhook.yml Dispatch desktop auto-bump when a ComfyUI release is published (#12398) 2026-02-11 11:15:13 -08:00
ruff.yml feat(linter, api-nodes): add pylint for comfy_api_nodes folder (#10157) 2025-10-02 19:14:28 -04:00
stable-release.yml Add .comfy_environment to portable. (#13746) 2026-05-06 22:51:01 -04:00
stale-issues.yml fix typo in stale-issues (#4735) 2024-09-01 17:44:49 -04:00
tag-dispatch-cloud.yml ci: dispatch tag push to Comfy-Org/cloud (#13541) 2026-04-27 19:51:33 -07:00
test-build.yml Initial ops changes to use comfy_kitchen: Initial nvfp4 checkpoint support. (#11635) 2026-01-05 21:48:58 -05:00
test-ci.yml Revert "Force sequential execution in CI test jobs (#11687)" (#11725) 2026-01-07 21:41:57 -08:00
test-execution.yml Update workflows for new release process (#11064) 2025-12-15 23:24:18 -08:00
test-launch.yml fix: update ComfyUI repo reference to Comfy-Org/ComfyUI (#11858) 2026-01-13 21:03:16 -05:00
test-unit.yml Update workflows for new release process (#11064) 2025-12-15 23:24:18 -08:00
update-api-stubs.yml More API Nodes (#7956) 2025-05-06 04:23:00 -04:00
update-ci-container.yml feat: add CI container version bump automation (#11692) 2026-01-13 22:39:22 -05:00
update-version.yml Update workflows for new release process (#11064) 2025-12-15 23:24:18 -08:00
windows_release_dependencies_manual.yml Add action to create cached deps with manually specified torch. (#10102) 2025-09-29 17:27:52 -04:00
windows_release_dependencies.yml Update python patch version in dep workflow. (#12184) 2026-01-30 20:20:06 -05:00
windows_release_nightly_pytorch.yml Different base files for nvidia and amd portables. (#10105) 2025-09-29 19:54:37 -04:00
windows_release_package.yml Different base files for nvidia and amd portables. (#10105) 2025-09-29 19:54:37 -04:00