Skip to content

ci: add release pipeline with GitHub Actions and one-line installer #172

Description

@Mercurial

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

  1. 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
  2. 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
  3. 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

  • Adapt the release workflow for Argus (adjust RIDs, project path, binary name)
  • Create install.sh for Argus
  • Add publish configuration to the appropriate .csproj
  • Add --version flag
  • Test the full flow: tag → build → release → install

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions