Skip to content

Latest commit

 

History

58 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

relman

A changeset-driven release manager for zingolabs repositories: it derives versions and changelogs from committed changesets, plans tags and crates.io publication, and drives the gated release pipeline. It is a hexagonal (ports and adapters) Rust CLI: relman-core holds the types and ports, relman-domain the services, relman-config the relman.toml loader, relman-adapters the git, cargo, and filesystem adapters, relman-cli the clap surface, and relman the binary.

Consuming relman

A consumer repository keeps its own release data (relman.toml, .changesets/, the consumed ledger, and its changelogs) and obtains the tool at a pinned version through the composite action in this repository:

- uses: zingolabs/release_manager/.github/actions/setup-relman@v0.1.0
  with:
    version: v0.1.0

version is a tag of this repository, or a commit SHA. A tag resolves to the static binary attached to that tag's GitHub Release; a SHA, or a tag with no matching binary, falls back to cargo install --git at that revision.

The pipeline these commands serve is described in the zaino repository's docs/release/pipeline.md until the generic part of that document moves here.

Developing

cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo nextest run --workspace

Releasing relman

Push a tag of the form vX.Y.Z. The release workflow builds the x86_64-unknown-linux-musl binary and attaches it to a GitHub Release for that tag as relman-x86_64-unknown-linux-musl.

Origin

The code was extracted from zingolabs/zaino, where it was introduced in pull request #1462, with its commit history intact. The extraction plan and its open questions are tracked in issue #1 of this repository.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages