The publish job was skipped because the build jobs never set their `built` output. A failed earlier step combined with job-level `continue-on-error` caused `success()` to evaluate false, so the “Mark build success” step did not run and outputs were empty. Removed job-level `continue-on-error` and replaced the marker step with an `always()`-gated step that derives `built` from `docker/build-push-action`’s `digest` output. Mirrored this in the self-hosted fallback. Kept `permissions: contents: write` for release creation. No functional changes elsewhere.
- Add pre-build cleanup on GitHub-hosted runner using jlumbroso/free-disk-space plus Docker builder/system prune to maximize available disk for Docker builds.
- Add pre-build Docker cache pruning and disk checks on self-hosted runner to keep it minimal and appropriate for ephemeral runners.
- Change fallback logic to run self-hosted only if the GitHub-hosted build fails, using needs.<job>.result with always() to ensure the fallback job triggers after a primary failure.
- Keep GHCR login via docker/login-action@v3 and Buildx via docker/setup-buildx-action@v3; build with docker/build-push-action@v6.
- Publish release only if either build path succeeds; fail workflow if both builds or release publish fail.
- Remove post-build cleanup steps (BuildKit image removal and general pruning) to align with instruction not to worry about post cleanup on ephemeral runners.
- Gate on new upstream release whose tag matches comfyui_version.py; skip if already released locally.
- Sync master from upstream (keep local README.md), then build and push image on GH runner with pre-clean; fallback to ephemeral self-hosted if GH build fails; publish release if either path succeeds.
- Remove unnecessary post-job cleanup since runners are ephemeral; rely on setup-buildx cleanup.
- Keep pre-build cleanup on GH runners (free-disk-space action and Docker builder/system prune) to prevent ENOSPC during builds.
- Remove post-job prune steps for both GH and ephemeral self-hosted runners since runners are discarded after the job and setup-buildx uses cleanup=true to remove builders automatically.
- Retain fallback: self-hosted build runs only if the GH build fails; publish succeeds if either path succeeds; final job fails only if both builds fail.
- Add “Free Disk Space (Ubuntu)” and Docker prune steps before/after the GitHub-hosted build to recover tens of GB and avoid “no space left on device” failures on ubuntu-latest.
- Remove continue-on-error and gate the self-hosted job with `always() && needs.build-gh.result != 'success'` so it runs only if the GH build fails, while publish proceeds if either path succeeds.
- Enable buildx GHA cache (cache-from/cache-to) to minimize runner disk pressure and rebuild times without loading images locally.
Replace job‑level continue‑on‑error with a step‑level setting and export build_succeeded from the docker/build‑push step to drive the fallback condition, guaranteeing the self‑hosted job runs whenever the GitHub runner fails (e.g., disk space) instead of being masked by a successful job conclusion. Update publish/finalize gating to rely on the explicit output flag (or self‑hosted success) so releases proceed only when at least one build path publishes successfully.
* Fix showing progress from other sessions
Because `client_id` was missing from ths `progress_state` message, it
was being sent to all connected sessions. This technically meant that if
someone had a graph with the same nodes, they would see the progress
updates for others.
Also added a test to prevent reoccurance and moved the tests around to
make CI easier to hook up.
* Fix CI issues related to timing-sensitive tests