fix(ci): refactor release pipeline triggers, naming, and cleanup (#103) #104
No reviewers
Labels
No labels
Kind/Bug
Kind/Feature
Priority/High
Priority/Medium
Reviewed/Confirmed
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ai-collab/bulk-image-organizer!104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "0.1.35-enhancement.103"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
linux-appimage.yml/windows-release.ymlno longer carry their own independentpushtrigger;ci.ymlis now the sole entry point for release builds (needs: test, never onpull_request), eliminating the ungated/duplicate dev-branch build race and the deadworkflow_runbranch-resolution code that produced PR#-numbered release titles (e.g.Bulk Image Organizer Dev (102)).build-appimage,build-windows-exe);ci.ymlgained its ownconcurrencygroup so superseded pushes to the same branch are cancelled.CHANGELOG.mdsection (scripts/build-release-notes.py) instead of a boilerplate "Automated build for X at Y" repeat of the title.scripts/prune-orphaned-dev-releases.pyreconciles dev releases against currently-existing branches; wired intoscripts/prune-merged-branches.py(agent-run per AGENTS.md step 8) and a new best-effort daily cron workflow (prune-orphaned-releases.yml), as a backstop to the existing per-branchdelete-triggered prune.docs/DECISIONS.mdDR-022 records the redesign;docs/DESIGN.md/docs/TECHNICAL_OUTLINE.mdupdated to match.v0.1.3xmain releases and the one release for the still-live0.1.34-adhoc.windows-release-skip-fixbranch remain.No application code changed (
src/,resources/,pyproject.tomluntouched), soVERSIONstays0.1.35per the compiled-input bump rule.Fixes #103
Test plan
ruff check . && ruff format --check .pytest(363 passed, 1 skipped) including newtests/test_build_release_notes.pyandtests/test_prune_orphaned_dev_releases.pyscripts/prune-orphaned-dev-releases.pyandscripts/build-release-notes.pylocally against live repo state before applyinglint→test→build-appimage/build-windows-exefire correctly, are skipped onpull_request, and concurrency cancellation works on a follow-up pushrelease-linux/release-windows/build-releaseas a required status check, update it to the new names (build-appimage/build-windows-exe)prune-dev-release.yml only fires on a single branch's delete webhook and has no way to recover a missed event or clear backlog. A live audit found 12 of 19 releases on the real instance were orphaned (branch gone, or a PR#-numbered duplicate of a correctly-named dev release). scripts/prune-orphaned-dev-releases.py lists releases and branches via the Forgejo API, keeps every v{version} tag plus any dev-* tag whose slug matches a live branch, and deletes the rest. It's wired into scripts/prune-merged-branches.py (run by agents per AGENTS.md step 8, with a --skip-release-prune escape hatch) and into a new best-effort daily schedule workflow, prune-orphaned-releases.yml, as a second safety net.