Skip to content

feat(release): publish verifiable release artifacts from a version tag - #58

Merged
kanushka merged 4 commits into
wso2:mainfrom
kanushka:feat/release-artifacts-issue-53
Aug 14, 2026
Merged

feat(release): publish verifiable release artifacts from a version tag#58
kanushka merged 4 commits into
wso2:mainfrom
kanushka:feat/release-artifacts-issue-53

Conversation

@kanushka

Copy link
Copy Markdown
Contributor

Closes #53. First of five stacked changes for #52.

Adds .goreleaser.yaml, a tag-triggered release workflow that runs the acceptance gate before publishing and verifies the published assets afterwards, and docs/reference/release-artifacts.md as the naming and checksum contract that #54 and #55 read. Extends the pull-request cross-build check from three targets to all eight the release ships.

Verified locally with make release-snapshot: eight archives with the documented names, all checksums verify, and the extracted binary reports the injected version rather than 0.0.0-dev. No tag has been pushed, so the publish path itself is unexercised.

Two incidental findings: adding the 32-bit targets exposed a test constant that could not compile on linux/386 or linux/arm (the fake issuer's DeviceInterval is now int64, matching what the production code already takes), and GoReleaser builds ARMv6 where Go defaults to ARMv7, so the check now pins GOARM=6 to compile what actually ships.

@kanushka
kanushka requested a review from hevayo as a code owner August 10, 2026 17:44
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 280c5d5c-1d68-4624-aa9e-b583e3b91b26

📥 Commits

Reviewing files that changed from the base of the PR and between 9e8eb07 and 04b0b3b.

📒 Files selected for processing (1)
  • docs/reference/release-artifacts.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/reference/release-artifacts.md

📝 Walkthrough

Summary

  • Added version-tagged release publishing with GoReleaser.
  • Added archives and SHA-256 checksums for eight Linux, macOS, and Windows targets.
  • Added release and protocol version injection through linker flags.
  • Added tag-triggered workflow with acceptance checks and post-publish asset verification.
  • Added release artifact documentation and local snapshot validation targets.
  • Expanded pull-request cross-build checks to all release targets.
  • Fixed 32-bit compilation and enabled explicit GOARM=6 support.
  • Updated device authorization interval handling to use int64.

Validation

  • Local snapshot verification passed.
  • The tag-triggered publish path has not yet been tested with a pushed tag.

Walkthrough

The release workflow publishes eight platform archives from version tags. GoReleaser creates platform-specific archives, checksums, and version metadata. Post-release checks validate archive coverage, checksum integrity, shell version, and protocol version. Pull-request builds cover the release target matrix. Make targets and documentation describe local snapshots and artifact contracts. Device authorization intervals now use int64.

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant AcceptanceGate
  participant GoReleaser
  participant GitHubRelease
  participant ReleaseVerifier
  GitHubActions->>AcceptanceGate: Run acceptance checks
  AcceptanceGate-->>GitHubActions: Return result
  GitHubActions->>GoReleaser: Build and publish release
  GoReleaser->>GitHubRelease: Upload archives and checksums
  GitHubActions->>ReleaseVerifier: Download published assets
  ReleaseVerifier->>GitHubRelease: Read archives and checksum asset
  ReleaseVerifier-->>GitHubActions: Return checksum and version results
Loading

Suggested reviewers: hevayo

Merge Risk: ⚪ Minimal · up to 04b0b

The PR adds tag-based release packaging and verification with documented local snapshot validation; no actionable merge-blocking risk remains after normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: publishing verifiable release artifacts from version tags.
Description check ✅ Passed The description directly explains the release workflow, artifacts, verification, cross-build checks, and related fixes.
Linked Issues check ✅ Passed The changes address issue #53 by defining all release targets, archive formats, checksums, version validation, acceptance gating, and required permissions.
Out of Scope Changes check ✅ Passed All changes support release publishing, verification, target coverage, documentation, or required 32-bit and ARM build fixes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@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/release.yml:
- Around line 117-122: Update the archive verification block in the release
workflow to compare the sorted basenames of all generated .tar.gz and .zip
archives against the sorted filenames recorded in checksums.txt, rather than
comparing only counts. Fail with an error when the name sets differ, including
missing or duplicate coverage, while preserving the existing successful path and
failure exit behavior.

In `@docs/reference/release-artifacts.md`:
- Around line 40-43: Update the archive-name construction guidance in the
release-artifacts documentation to require normalizing the operating-system
value from uname -s to the lowercase archive tokens, such as linux and darwin,
before building the URL or filename. Keep the existing tag and architecture
handling unchanged.
🪄 Autofix

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 Plus

Run ID: 74b04281-099e-4b00-b039-005fc551182e

📥 Commits

Reviewing files that changed from the base of the PR and between 686e3d7 and a85fb33.

📒 Files selected for processing (8)
  • .github/workflows/pr-checks.yml
  • .github/workflows/release.yml
  • .goreleaser.yaml
  • Makefile
  • docs/README.md
  • docs/reference/release-artifacts.md
  • internal/auth/fakeissuer/fakeissuer.go
  • test/acceptance/login_device_test.go

Comment thread .github/workflows/release.yml Outdated
Comment thread docs/reference/release-artifacts.md Outdated

@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: 1

🤖 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 `@docs/reference/release-artifacts.md`:
- Around line 43-48: Update the platform normalization paragraph to document the
Windows detection path and map supported Windows environments to the `windows`
token. State that unsupported or unrecognized Windows platform values follow the
same refusal rule rather than being guessed, and identify the separate detection
mechanism if Windows does not use `uname`.
🪄 Autofix

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 Plus

Run ID: 241f0f7d-2d13-4133-8eb6-12aebd243d27

📥 Commits

Reviewing files that changed from the base of the PR and between a85fb33 and 9e8eb07.

📒 Files selected for processing (2)
  • .github/workflows/release.yml
  • docs/reference/release-artifacts.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/release.yml

Comment thread docs/reference/release-artifacts.md Outdated
@kanushka
kanushka merged commit 5d2f13e into wso2:main Aug 14, 2026
5 checks passed
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.

Publish verifiable release artifacts from a version tag

2 participants