Skip to content

fslabs/fslabscli

Repository files navigation

FSLABSCLI

License

fslabscli is free and open source! All code in this repository is dual-licensed under either:

at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Installation

To install, run the following command: cargo install --git https://github.com/fslabs/fslabscli

Release Process

Version source of truth: Cargo.toml Tag format: v{version} (e.g., v2.43.0) — configurable via --tag-format

Steps

  1. Bump version — Update version in Cargo.toml, open a PR with appropriate labels, merge to main. PRs with skip-changelog are excluded from release notes. Changelog categories are controlled by .github/release.yml.

  2. Draft release auto-created — On push to main, a Prow postsubmit runs fslabscli draft-release, which:

    • Creates or updates a draft GitHub Release tagged v{version}
    • Generates changelog from merged PRs (GitHub native release notes)
    • Builds and uploads binary artifacts to the draft
    • Pushes the Nix build to the cache
  3. Publish the draft — Review the draft release on GitHub, verify all assets are present, click "Publish release". This creates the git tag and locks the release assets.

  4. Post-publish automation — The new tag triggers Prow to:

    • Publish the crate to the fsl Cargo registry
    • Build and push the Docker image
    • Mark the release as "latest"
    • Kargo detects the new tag and starts canary promotion

Flow

sequenceDiagram
    actor Dev as Developer
    participant GH as GitHub (main)
    participant Prow as Prow (draft-release)
    participant Rel as GitHub Release
    participant Prow2 as Prow (post-publish)
    participant Kargo as Kargo

    Dev->>GH: Merge PR (version bump in Cargo.toml)
    GH->>Prow: Postsubmit on push to main
    Prow->>Prow: Build Nix binary, push to cache
    Prow->>Rel: Create/update draft release<br/>tag: v{version}, changelog from PR labels
    Prow->>Rel: Upload binary artifacts

    Dev->>Rel: Review draft, verify assets, click "Publish release"
    Note over Rel: Git tag created, assets locked

    Rel->>Prow2: Webhook (tag created)
    Prow2->>Prow2: Publish crate to fsl registry
    Prow2->>Prow2: Build & push Docker image
    Prow2->>Rel: Mark as "latest"

    Rel->>Kargo: Tag detected
    Kargo->>Kargo: Start canary promotion
Loading

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages