Canonical cross-platform release artifacts and CI refactor (fixes #62) #75

Merged
ValleyGeek merged 8 commits from 0.1.28/issue-62-canonical-artifacts into main 2026-06-13 06:21:32 +00:00
Member

Summary

Fixes #62 — standardizes build and release automation around one canonical artifact per platform per version, refactors CI gating, and adds squash-merge-aware branch pruning.

Canonical artifacts

Context Windows Linux
main BulkImageOrganizer_{version}.exe BulkImageOrganizer_{version}.AppImage
dev branch BulkImageOrganizer_dev-{branch-slug}.exe BulkImageOrganizer_dev-{branch-slug}.AppImage
  • Main releases: Forgejo tag v{version} (Latest), both platform artifacts attached as jobs complete
  • Dev releases: tag dev-{branch-slug}; pruned on branch delete

CI changes

  • ci.yml: lint + tests only (all branches; docs-only paths ignored)
  • linux-appimage.yml + windows-release.yml: run after CI succeeds (workflow_run), parallel with per-branch concurrency cancellation
  • Release jobs skip when compiled application inputs are unchanged (same rules as compiled-inputs-changed.sh)
  • Removed Nuitka tar.gz generic-package uploads and windows-latest / dev-latest-* tags

Scripts

  • build-linux-appimage.sh — Nuitka standalone + appimagetool + desktop metadata
  • publish-forgejo-release.py — unified release publisher
  • prune-dev-release.py — dev release cleanup
  • prune-merged-branches.sh — squash-merge-aware branch cleanup
  • compiled-inputs-changed.sh — shared gate for VERSION bumps and release builds

Versioning

Release bump to 0.1.29 applies because this branch changes compiled inputs (src/). Docs/CI-only merges to main do not advance VERSION (documented in AGENTS.md / VERSIONING.md).

Testing

  • ruff check / ruff format --check
  • pytest (301 passed, 1 skipped)
  • ./scripts/check-version-bump.sh
  • ./scripts/compiled-inputs-changed.sh origin/main
## Summary Fixes #62 — standardizes build and release automation around one canonical artifact per platform per version, refactors CI gating, and adds squash-merge-aware branch pruning. ## Canonical artifacts | Context | Windows | Linux | |---------|---------|-------| | **main** | `BulkImageOrganizer_{version}.exe` | `BulkImageOrganizer_{version}.AppImage` | | **dev branch** | `BulkImageOrganizer_dev-{branch-slug}.exe` | `BulkImageOrganizer_dev-{branch-slug}.AppImage` | - Main releases: Forgejo tag `v{version}` (Latest), both platform artifacts attached as jobs complete - Dev releases: tag `dev-{branch-slug}`; pruned on branch delete ## CI changes - `ci.yml`: lint + tests only (all branches; docs-only paths ignored) - `linux-appimage.yml` + `windows-release.yml`: run after CI succeeds (`workflow_run`), parallel with per-branch concurrency cancellation - Release jobs skip when compiled application inputs are unchanged (same rules as `compiled-inputs-changed.sh`) - Removed Nuitka tar.gz generic-package uploads and `windows-latest` / `dev-latest-*` tags ## Scripts - `build-linux-appimage.sh` — Nuitka standalone + appimagetool + desktop metadata - `publish-forgejo-release.py` — unified release publisher - `prune-dev-release.py` — dev release cleanup - `prune-merged-branches.sh` — squash-merge-aware branch cleanup - `compiled-inputs-changed.sh` — shared gate for VERSION bumps and release builds ## Versioning Release bump to **0.1.29** applies because this branch changes compiled inputs (`src/`). Docs/CI-only merges to `main` do not advance `VERSION` (documented in AGENTS.md / VERSIONING.md). ## Testing - `ruff check` / `ruff format --check` - `pytest` (301 passed, 1 skipped) - `./scripts/check-version-bump.sh` - `./scripts/compiled-inputs-changed.sh origin/main`
Add Linux AppImage and unified Forgejo release tag helpers. Dev-branch
artifacts use BulkImageOrganizer_dev-{branch-slug} names; main releases
use v{version} tags. Set development VERSION to 0.1.28-enhancement.62.
Add build-linux-appimage.sh with desktop metadata and appimagetool
wrapping. Remove bio-latest deployment from build-linux.sh and keep
build-linux-nuitka-smoke.sh as a local standalone verifier.
CI runs lint and tests only. Linux AppImage and Windows release workflows
run in parallel after CI succeeds with branch concurrency cancellation.
Replace tar.gz smoke uploads and windows-latest tags with versioned Forgejo
releases via publish-forgejo-release.py.
chore: squash-merge-aware branch pruning helper and AGENTS rules
Some checks failed
CI / lint (push) Successful in 6s
CI / test (push) Successful in 1m26s
CI / test (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
e509d26433
Add prune-merged-branches.sh/.py to delete stale locals with gone
upstreams and branches from closed merged forge PRs (using head.label
when refs/pull/N/head remains after remote deletion). Update AGENTS.md
cleanup guidance and timing. Prune 12 stale local and 2 stale remote
branches.
docs: PR-prep for issue 62 — canonical artifacts release 0.1.29
Some checks failed
CI / lint (push) Successful in 7s
CI / lint (pull_request) Successful in 7s
CI / test (push) Has been cancelled
CI / test (pull_request) Successful in 1m36s
9f2182d419
docs: gate release VERSION bump on compiled-input changes only
Some checks failed
CI / test (pull_request) Has been cancelled
CI / lint (push) Failing after 6s
CI / test (push) Has been skipped
CI / lint (pull_request) Has been cancelled
6c7d82f960
Close PR #74 prep. Revert premature 0.1.29 VERSION bump; keep CHANGELOG
notes under Unreleased. Add compiled-inputs-changed.sh (aligned with CI
release job rules) and document PR-prep/main-merge version policy in
AGENTS.md and VERSIONING.md.
docs: PR-prep for issue 62 — canonical artifacts release 0.1.29
Some checks failed
CI / lint (pull_request) Successful in 6s
CI / lint (push) Successful in 7s
CI / test (pull_request) Failing after 1m35s
CI / test (push) Failing after 1m36s
a6d4215547
ValleyGeek deleted branch 0.1.28/issue-62-canonical-artifacts 2026-06-13 06:21:32 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-collab/bulk-image-organizer!75
No description provided.