Skip to content

fix(release): version public installer asset names#29

Merged
elibosley merged 2 commits into
mainfrom
codex/version-release-asset-names
May 20, 2026
Merged

fix(release): version public installer asset names#29
elibosley merged 2 commits into
mainfrom
codex/version-release-asset-names

Conversation

@elibosley

@elibosley elibosley commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • rename public online release assets to unraid-installer-<version>-online.iso and unraid-installer-<version>-online.img.zip
  • rename the bundled Unraid OS image to unraid-installer-<version>-bundled.img.zip
  • keep cleanup compatible with legacy install-user.img.zip assets while removing new stale bundled assets from older/non-stable releases
  • document the public naming convention while keeping internal build artifact names unchanged

Validation

  • ruby -e 'require "yaml"; %w[.github/workflows/publish-release.yml .github/workflows/publish-release-seeded.yml .github/workflows/update-unraid-release-lock.yml].each { |f| YAML.load_file(f); puts "ok #{f}" }'\n- git diff --check\n- bash -n on embedded shell from the edited workflows\n

Summary by CodeRabbit

  • Documentation

    • Updated release asset naming conventions and documentation to reflect versioned Unraid installer downloads.
  • Chores

    • Enhanced release workflows to generate versioned release artifacts with standardized naming (online ISO, online IMG archives, and bundled IMG archives).
    • Improved cleanup of legacy seeded assets from older releases.

Review Change Stack

- Purpose: make public GitHub release downloads clearly Unraid-specific, versioned, and differentiated by online versus bundled install path.

- Before: release publishing uploaded generic install-user filenames, which made website links and larger bundled assets ambiguous.

- Problem: the public asset names did not communicate the Unraid installer version or whether the asset includes the bundled Unraid OS payload.

- Change: publish online ISO/IMG assets as unraid-installer-<version>-online.* and seeded IMG assets as unraid-installer-<version>-bundled.img.zip.

- Cleanup: stale bundled release cleanup now recognizes both legacy install-user.img.zip assets and the new bundled asset names.

- Docs: document the public release naming convention while keeping internal build artifact names unchanged.
@coderabbitai

coderabbitai Bot commented May 20, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@elibosley has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 2 minutes and 56 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro (Legacy)

Run ID: 72a86635-f1f3-4a2f-8a4e-15d2f00383bc

📥 Commits

Reviewing files that changed from the base of the PR and between b62ca67 and e6a61fa.

📒 Files selected for processing (2)
  • .github/workflows/publish-release-seeded.yml
  • .github/workflows/publish-release.yml
📝 Walkthrough

Walkthrough

Both seeded and online release workflows now extract a sanitized version from Installer-* release tags and apply it to asset filenames. Assets are renamed to unraid-installer-<version>-bundled.img.zip (seeded) and unraid-installer-<version>-online.iso/img.zip (online), with per-file MD5 checksums generated via wildcard globbing. Release cleanup logic and user documentation are updated to handle the new naming patterns.

Changes

Release Asset Versioning and Publishing

Layer / File(s) Summary
Release version extraction and output
.github/workflows/publish-release-seeded.yml, .github/workflows/publish-release.yml
Both workflows extract a sanitized release_version from Installer-* tags (prefix stripping, character filtering, trimming), export it as a workflow output, and update input descriptions to match the new tag format.
Seeded bundled asset versioning and checksums
.github/workflows/publish-release-seeded.yml
The seeded release workflow packages the build image into a versioned unraid-installer-${RELEASE_VERSION}-bundled.img.zip, generates MD5 checksums for all matching versioned ZIPs via globbing, and updates GitHub release uploads to use glob patterns for versioned files.
Online ISO/ZIP asset versioning and checksums
.github/workflows/publish-release.yml
The online release workflow renames the ISO to include the version, compresses the minimal image into a versioned ZIP, generates checksums via globbing, and updates GitHub release uploads to use versioned file patterns and their .md5 sidecars.
Stale asset cleanup for new naming patterns
.github/workflows/update-unraid-release-lock.yml
The release-lock cleanup logic is refactored to match and delete both legacy install-user.img.zip/.md5 pairs and new unraid-installer-*-bundled.img.zip/.md5 patterns from stale Installer-* releases via case statement globbing.
Asset naming and publish-time renaming documentation
docs/USER_COMMANDS.md, docs/user-build.md
Documentation describes the new versioned public asset filenames, the updated release-lock cleanup behavior, and the publish-time renaming process from build artifacts to versioned Unraid installer downloads, with a concrete example for Installer-7.3.0.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

  • unraid/unraid-installer#26: Both PRs modify the update-unraid-release-lock.yml cleanup logic to remove bundled seeded assets from older Installer-* releases, with PR #26 targeting the legacy install-user.img.zip naming while this PR extends cleanup to the new unraid-installer-*-bundled.img.zip versioned pattern.

Poem

🐰 A rabbit hops through versioned release notes,
Tagging assets with installer coats—
From Installer- tags, versions flow,
Bundled zips and ISOs all aglow,
Stale cleanup dances with patterns new,
Documentation guides what users brew!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title follows the conventional commits format with 'fix:' prefix and clearly describes the main change of versioning public installer asset names.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/publish-release-seeded.yml:
- Around line 118-124: The current logic resets release_version to the raw
release_tag if sanitization yields an empty string; instead, change the behavior
in the release_version sanitization block (variables release_version and
release_tag) to fail fast: after running the sanitization command, detect if
release_version is empty and, if so, emit a clear error message to stderr and
exit with a non-zero status (e.g., echo "Error: sanitized release_version is
empty" >&2; exit 1) rather than falling back to release_tag; only write
release_version to GITHUB_OUTPUT when it is the valid sanitized value.

In @.github/workflows/publish-release.yml:
- Around line 120-126: The sanitized release_version may be empty and falling
back to raw release_tag undoes sanitization; instead, after computing
release_version in the workflow (the release_version and release_tag variables),
check if release_version is empty and if so emit a clear error to the runner
(e.g. via echo to stderr or process log) and exit non‑zero to reject the
dispatch input; only write release_tag, release_name and release_version to
GITHUB_OUTPUT after confirming release_version is non‑empty so malformed tags
are rejected rather than producing unsanitized filenames.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro (Legacy)

Run ID: 8cf9a0ef-f414-4c48-92a4-755ba475377c

📥 Commits

Reviewing files that changed from the base of the PR and between 28316a2 and b62ca67.

📒 Files selected for processing (5)
  • .github/workflows/publish-release-seeded.yml
  • .github/workflows/publish-release.yml
  • .github/workflows/update-unraid-release-lock.yml
  • docs/USER_COMMANDS.md
  • docs/user-build.md

Comment thread .github/workflows/publish-release-seeded.yml
Comment thread .github/workflows/publish-release.yml
- Purpose: harden manual release publishing against malformed release tags.

- Before: an empty sanitized release version fell back to the raw release tag.

- Problem: that fallback could bypass the filename sanitization used for public assets.

- Change: both publish workflows now fail fast with a clear error when sanitization produces an empty version.

- Validation: parsed workflow YAML, ran git diff --check, and parsed embedded bash with bash -n.
@elibosley elibosley merged commit bca1396 into main May 20, 2026
2 checks passed
@elibosley elibosley deleted the codex/version-release-asset-names branch May 20, 2026 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant