[Enhancement]: Update build and release processes for canonical artifacts #62

Closed
opened 2026-06-12 17:32:49 +00:00 by ValleyGeek · 1 comment
Owner

Affected area

Linux packaging (nuitka-smoke), Windows release workflow, CI jobs, Forgejo distribution, build scripts, versioning helpers

Current behavior

The project produces multiple package formats including tar.gz Nuitka standalones, with platform-specific variations that are not strictly limited to .exe (Windows) and .AppImage (Linux x86_64). CI builds target broader configurations, some of which do not result in the final user-facing deliverables. Distribution includes non-essential artifacts, and documentation mixes internal UI guidance with distribution details.

Desired improvement

Update all build and release processes to produce exactly one canonical artifact per supported platform per version: BulkImageOrganizer_{version}.exe for Windows 10+ (x86_64) and BulkImageOrganizer_{version}.AppImage for Linux (Ubuntu 24.04+ and compatible modern distributions, x86_64 only). Remove all other package builds that do not directly support these deliverables.

Refactor CI (ci.yml, linux-appimage.yml, windows-release.yml) so that lint and tests run first; on success, parallel linux-appimage and windows-release jobs execute with concurrency groups that cancel in-progress builds on new pushes to the same branch. Use change detection to skip builds for docs-only changes. Extend build scripts to support AppImage creation via Nuitka standalone wrapped with appimagetool (including desktop file and icon), and update smoke tests and versioning helpers accordingly.

For main branch pushes: create dedicated Forgejo releases per version (e.g. tag v0.1.29) attaching both .exe and .AppImage, with the newest marked as Latest. For dev branches: maintain one dev artifact per branch (BulkImageOrganizer_dev-{branch-slug}.exe and .AppImage) that updates on qualifying pushes and is pruned on merge/delete.

Keep VERSION as the single source of truth (bumped via existing ./scripts/bump-version.sh).

References

docs/VERSIONING.md, AGENTS.md, DESIGN.md, .github/workflows/ci.yml, windows-release.yml, scripts/build-*.sh

Other Notes

  • Only support x86 and modern OSs (Windows 10+ Ubuntu 24.04+)
  • Review and update agents so they aren't fighting or working around this workflow.
  • Remove mentions and instructions related to bio-latest in the repository
### Affected area Linux packaging (nuitka-smoke), Windows release workflow, CI jobs, Forgejo distribution, build scripts, versioning helpers ### Current behavior The project produces multiple package formats including tar.gz Nuitka standalones, with platform-specific variations that are not strictly limited to .exe (Windows) and .AppImage (Linux x86_64). CI builds target broader configurations, some of which do not result in the final user-facing deliverables. Distribution includes non-essential artifacts, and documentation mixes internal UI guidance with distribution details. ### Desired improvement Update all build and release processes to produce exactly one canonical artifact per supported platform per version: `BulkImageOrganizer_{version}.exe` for Windows 10+ (x86_64) and `BulkImageOrganizer_{version}.AppImage` for Linux (Ubuntu 24.04+ and compatible modern distributions, x86_64 only). Remove all other package builds that do not directly support these deliverables. Refactor CI (ci.yml, linux-appimage.yml, windows-release.yml) so that lint and tests run first; on success, parallel linux-appimage and windows-release jobs execute with concurrency groups that cancel in-progress builds on new pushes to the same branch. Use change detection to skip builds for docs-only changes. Extend build scripts to support AppImage creation via Nuitka standalone wrapped with appimagetool (including desktop file and icon), and update smoke tests and versioning helpers accordingly. For main branch pushes: create dedicated Forgejo releases per version (e.g. tag v0.1.29) attaching both .exe and .AppImage, with the newest marked as Latest. For dev branches: maintain one dev artifact per branch (`BulkImageOrganizer_dev-{branch-slug}.exe` and `.AppImage`) that updates on qualifying pushes and is pruned on merge/delete. Keep VERSION as the single source of truth (bumped via existing `./scripts/bump-version.sh`). ### References docs/VERSIONING.md, AGENTS.md, DESIGN.md, .github/workflows/ci.yml, windows-release.yml, scripts/build-*.sh ### Other Notes - Only support x86 and modern OSs (Windows 10+ Ubuntu 24.04+) - Review and update agents so they aren't fighting or working around this workflow. - Remove mentions and instructions related to bio-latest in the repository
ValleyGeek changed title from [Enhancement]: Convert Linux Package to AppImage to [Enhancement]: Update build and release processes for canonical artifacts 2026-06-13 06:02:22 +00:00
Member

Implementation pushed to branch 0.1.28/issue-62-canonical-artifacts (4 commits).

Canonical artifacts

  • Main: BulkImageOrganizer_{version}.exe + BulkImageOrganizer_{version}.AppImage on Forgejo release tag v{version} (marked Latest)
  • Dev branches: BulkImageOrganizer_dev-{branch-slug}.{exe|AppImage} on tag dev-{branch-slug}; pruned on branch delete

CI

  • ci.yml: lint + test 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
  • Removed Nuitka tar.gz generic-package smoke uploads and windows-latest / dev-latest-* tags

Scripts

  • Added scripts/build-linux-appimage.sh, scripts/publish-forgejo-release.py, scripts/prune-dev-release.py
  • Removed bio-latest deployment from build-linux.sh; dropped legacy Windows-only publish/prune scripts
  • Version helpers + get-version.py flags for AppImage/dev artifact names and release tags

Verification: ruff + pytest (296 passed) locally. Awaiting CI/release runner validation on push.

Implementation pushed to branch `0.1.28/issue-62-canonical-artifacts` (4 commits). **Canonical artifacts** - Main: `BulkImageOrganizer_{version}.exe` + `BulkImageOrganizer_{version}.AppImage` on Forgejo release tag `v{version}` (marked Latest) - Dev branches: `BulkImageOrganizer_dev-{branch-slug}.{exe|AppImage}` on tag `dev-{branch-slug}`; pruned on branch delete **CI** - `ci.yml`: lint + test 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 - Removed Nuitka tar.gz generic-package smoke uploads and `windows-latest` / `dev-latest-*` tags **Scripts** - Added `scripts/build-linux-appimage.sh`, `scripts/publish-forgejo-release.py`, `scripts/prune-dev-release.py` - Removed `bio-latest` deployment from `build-linux.sh`; dropped legacy Windows-only publish/prune scripts - Version helpers + `get-version.py` flags for AppImage/dev artifact names and release tags **Verification**: ruff + pytest (296 passed) locally. Awaiting CI/release runner validation on push.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#62
No description provided.