Automate releases on GitHub, GitLab, or Azure DevOps from your conventional commits.
With yeet, you can calculate the next semver or calver version, generate a changelog, open a release PR/MR, and publish the release after it merges. yeet ships as a single static binary with no runtime dependencies.
yeet is designed to run from CI on every push to a release branch. The local CLI is the setup and preview tool. Your CI workflow performs the recurring release work.
For a GitHub repository, install yeet, export a token, generate the default config, and preview the release:
brew install monkescience/tap/yeet
export GITHUB_TOKEN=github_pat_xxx
yeet init
yeet release --dry-runUse GITLAB_TOKEN or AZURE_DEVOPS_EXT_PAT for another provider. See Authentication for token permissions and CI variables.
yeet init creates only .yeet.yaml. The generated config is provider-neutral and auto-detects the public provider from the Git remote.
Add the matching release pipeline from CI setup. GitHub repositories normally use the GitHub Actions workflow. GitLab and Azure DevOps use the equivalent examples on that page.
Commit .yeet.yaml and the workflow. From then on, CI runs yeet release on pushes to the configured release branch.
Merge a feat, fix, or perf conventional commit into the release branch. CI opens the release PR/MR. Merge that release, then the next CI run creates the tag and provider release.
Other installation options:
go install github.com/monkescience/yeet/cmd/yeet@v0.14.3 # x-yeet-version
docker run --rm ghcr.io/monkescience/yeet:v0.14.3 --help # x-yeet-versionOn Windows, install with Scoop:
scoop bucket add monkescience https://github.com/monkescience/scoop-bucket
scoop install yeetShell completions are available through yeet completion bash|zsh|fish|powershell.
- One release workflow across GitHub, GitLab, and Azure DevOps
- Monorepo targets with combined or independent release PRs/MRs
- Semver, calver, changelog, reviewer, and prerelease configuration
- GitHub Enterprise, self-managed GitLab, and Azure DevOps Server support
- One YAML file backed by a JSON schema
| Command | Purpose |
|---|---|
yeet init | Create a .yeet.yaml configuration file |
yeet release | Preview or perform the release workflow |
yeet version | Print build and version information |
yeet completion | Generate shell completion scripts |
Run yeet --help or yeet <command> --help for generated CLI help. The configuration guide covers common tasks, and yeet.schema.json is the complete field reference.
- Plan: yeet analyzes conventional commits and opens a labelled release PR/MR.
- Refresh: later runs update that open release instead of creating another one.
- Finalize: after merge, the next run creates the tag and provider release, then marks the PR/MR as tagged.
See Release PRs and MRs for lifecycle, labels, auto-merge, reviewers, release notes, and prerelease channels.
Archives and container images are signed with Sigstore and carry GitHub build provenance. Follow Artifact verification for the expected identities and copyable verification commands.
| Task | Guide |
|---|---|
| Add provider CI | CI setup |
| Configure a repository or monorepo | Configuration |
| Customize versions and changelogs | Versioning and Changelog generation |
| Review or disable anonymous analytics | Telemetry |
| Recover from a failed release | Troubleshooting |
| Migrate from release-please | Migration guide |
Open the complete documentation index to find every task and advanced guide.