- Dockerfile: fix glibc 2.41 patch path (cuda-12.9 -> cuda-12.8 to match
installed packages); remove SAGE_ATTENTION_AVAILABLE env var
- sync-build-release.yml: add always() to publish job condition so it runs
even when build-self is skipped (the primary GitHub runner path succeeds),
fixing releases never being created on normal builds
- entrypoint.sh: remove SageAttention compilation and GPU detection logic;
simplify to permissions setup, ComfyUI-Manager sync, custom node install,
and launch
- README: update CUDA version references from 12.9/cu129 to 12.8/cu128;
remove SageAttention documentation; fix docker-compose GPU syntax
https://claude.ai/code/session_01WQc56fWdK329K11kRGnb5g
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.