Skip to content

Add web-ffsh firmware release role with publish/promote workflow script - #51

Merged
Grotax merged 4 commits into
mainfrom
copilot/add-script-for-release-publishing
Aug 16, 2026
Merged

Add web-ffsh firmware release role with publish/promote workflow script#51
Grotax merged 4 commits into
mainfrom
copilot/add-script-for-release-publishing

Conversation

Copilot AI commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

This adds an Ansible-managed release helper for firmware publishing on web-ffsh, covering staged release deployment (testing/rc) and explicit promotion to stable with version-change guardrails.

  • Scope and deployment target

    • Introduces a new firmware_release role and wires it into the services play.
    • Role self-skips unless inventory_hostname == web-ffsh, so the helper is only installed on the intended host.
  • Release publish workflow (/root/firmware-release.sh publish [tag])

    • Defaults to latest GitHub release; supports explicit tag input.
    • Fetches release metadata and downloads archive assets.
    • Merges split archive parts, extracts content into safe space, and removes archive artifacts immediately after use.
    • Rebuilds stage links as requested:
      • testing -> extracted safe-space content
      • rc -> testing
    • Enforces safety cleanup for testing, rc, and stable paths when they are not valid symlinks into safe space.
  • Stable promotion workflow (/root/firmware-release.sh promote)

    • Promotes testing content to stable by replacing previous stable and moving staged content.
    • Preserves requested link topology after promotion (testing and rc aligned to promoted stable state).
    • Always prompts for confirmation.
    • Adds extra confirmation when major/minor version changes are detected (patch/extra digit ignored), using persisted .release-version metadata from publish.
  • Role defaults and operability

    • Adds configurable defaults for repo owner/name, firmware root, safe space, target host, and script path.
    • Installs required runtime tools (curl, jq, archive utilities) for deterministic script execution.

Example usage:

# publish latest
/root/firmware-release.sh publish

# publish specific tag
/root/firmware-release.sh publish v2025.1.2.0

# promote testing to stable (interactive confirmations)
/root/firmware-release.sh promote

Copilot AI and others added 2 commits August 15, 2026 17:23
Co-authored-by: Grotax <5429298+Grotax@users.noreply.github.com>
Co-authored-by: Grotax <5429298+Grotax@users.noreply.github.com>
Copilot AI changed the title [WIP] Add script that automates the release publishing process Add web-ffsh firmware release role with publish/promote workflow script Aug 15, 2026
Copilot AI requested a review from Grotax August 15, 2026 17:25
@Grotax
Grotax marked this pull request as ready for review August 16, 2026 06:43
@Grotax
Grotax merged commit 8ac4b6d into main Aug 16, 2026
1 check passed
@Grotax
Grotax deleted the copilot/add-script-for-release-publishing branch August 16, 2026 06:46
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.

add script that automates the release publishing process

2 participants