Harden cross-platform release pipeline - #16
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The PowerShell installer/tests use -UseBasicParsing while workflows run under pwsh, and the maintained VERSION conflicts with updated docs/examples, risking CI failures and stale installation guidance.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR hardens the cross-platform CI/release pipeline by adding a checksum-validating Windows PowerShell installer, expanding CI/release test execution across Linux/macOS/Windows, and making VERSION the single maintained source of truth for releases (with tag validation).
Changes:
- Added a Windows
install-release.ps1installer plus a PowerShell-based installer test harness, and expanded installer test coverage (Unix + Windows). - Updated version resolution to embed
VERSIONin the Go binary and removed build/version fallbacks that duplicated the “current” version. - Reworked CI and release workflows to validate tags against
VERSIONand run cross-platform checks while reducing duplicate runs.
File summaries
| File | Description |
|---|---|
VERSION |
Introduces maintained source-of-truth version file embedded into the binary. |
termcourse.go |
Embeds VERSION via go:embed and uses it as the fallback version source. |
termcourse_test.go |
Updates version tests to avoid coupling to a specific maintained version constant. |
Makefile |
Removes hard-coded version fallback and only injects build version when git describe succeeds. |
install-release.sh |
Adds strict SemVer tag validation and stages executable replacement more safely. |
install-release.ps1 |
Adds a checksum-validating Windows installer with version and archive validation. |
test/install-release.bats |
Updates Unix installer fixtures and adds tests for SemVer rejection + directory-target handling. |
test/install-release.ps1 |
Adds Windows installer integration-style tests using a local fixture HTTP server. |
README.md |
Documents Windows installation and updates release/versioning guidance. |
meta-topic.md |
Updates the meta topic with Windows installer instructions and release notes. |
internal/ui/ui_test.go |
Decouples UI tests from the maintained version value by using a non-current version literal. |
internal/theme/theme_test.go |
Makes config-path tests OS-aware (darwin/windows/xdg). |
.github/workflows/ci.yml |
Expands CI to a Linux/macOS/Windows matrix and adds installer checks. |
.github/workflows/release.yml |
Separates tag validation from testing, enforces tag==VERSION, and runs cross-platform tests before publish. |
Review details
- Files reviewed: 14/14 changed files
- Comments generated: 4
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification