Context
We've implemented an automated release pipeline in Helix that works really well. We should adopt the same pattern for Argus.
Reference implementation: https://github.com/SAIB-Inc/Helix/blob/main/.github/workflows/release.yml
What Helix does
-
Release workflow (.github/workflows/release.yml):
- Triggered on pushing
v*.*.* tags
- Builds self-contained, single-file, trimmed .NET binaries for multiple platforms (linux-x64, linux-arm64, osx-x64, osx-arm64)
- Packages each as a
.tar.gz
- Creates a GitHub Release with all assets attached via
softprops/action-gh-release@v2
- Auto-generates changelog from conventional commit messages between tags
-
One-line installer (install.sh):
curl -fsSL https://raw.githubusercontent.com/SAIB-Inc/Helix/main/install.sh | bash
- Detects platform (OS + arch) and downloads the correct binary
- Installs to
~/.helix/bin/ (no sudo required)
- Configures PATH for zsh, bash, and fish shells
- Supports
HELIX_VERSION env var to pin a specific version
-
Publish configuration (.csproj):
AssemblyName set to the CLI name
- Self-contained + trimmed + compressed single-file publish (conditional on
PublishSingleFile=true so dev builds are unaffected)
TrimmerRootAssembly for reflection-discovered assemblies
--version flag support
Tasks
Context
We've implemented an automated release pipeline in Helix that works really well. We should adopt the same pattern for Argus.
Reference implementation: https://github.com/SAIB-Inc/Helix/blob/main/.github/workflows/release.yml
What Helix does
Release workflow (
.github/workflows/release.yml):v*.*.*tags.tar.gzsoftprops/action-gh-release@v2One-line installer (
install.sh):curl -fsSL https://raw.githubusercontent.com/SAIB-Inc/Helix/main/install.sh | bash~/.helix/bin/(no sudo required)HELIX_VERSIONenv var to pin a specific versionPublish configuration (
.csproj):AssemblyNameset to the CLI namePublishSingleFile=trueso dev builds are unaffected)TrimmerRootAssemblyfor reflection-discovered assemblies--versionflag supportTasks
install.shfor Argus.csproj--versionflag