yaba-release-cli
Version:
Yaba is a simple CLI tool that helps you manage releases of your Github projects.
238 lines (228 loc) • 11 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Yaba | GitHub Release CLI</title>
<meta
name="description"
content="Yaba is a CLI for reliable GitHub release workflows: preview changelogs, create releases, run diagnostics, and automate release operations in CI."
>
<meta property="og:title" content="Yaba | GitHub Release CLI">
<meta
property="og:description"
content="Release preview, release creation, diagnostics, and config-driven automation for GitHub repositories."
>
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&family=Sora:wght@400;600;700;800&display=swap"
rel="stylesheet"
>
<link rel="stylesheet" href="./styles.css">
<script defer src="./app.js"></script>
</head>
<body>
<div class="bg-orb bg-orb-a" aria-hidden="true"></div>
<div class="bg-orb bg-orb-b" aria-hidden="true"></div>
<header class="site-header">
<a class="brand" href="#top">
<span class="brand-mark">Y</span>
<span>Yaba</span>
</a>
<button class="menu-toggle" type="button" aria-label="Toggle menu" aria-expanded="false">Menu</button>
<nav class="site-nav" id="site-nav">
<a href="#commands">Commands</a>
<a href="#capabilities">Capabilities</a>
<a href="#updates">Updates</a>
<a href="#quickstart">Quickstart</a>
<a href="#automation">Automation</a>
<a href="#install">Install</a>
</nav>
</header>
<main id="top">
<section class="hero section reveal">
<p class="eyebrow">GitHub Release Operations • Since v2.0.2</p>
<h1>Ship consistent GitHub releases with one CLI.</h1>
<p class="hero-copy">
Yaba helps teams prepare changelogs, preview release payloads, create GitHub releases, and wire Slack notifications
into repeatable release workflows. Recent upgrades add target-based release generation, release safety controls,
config validation, configurable release notes grouping, strategy-based tag generation, resilient Slack retries,
dedicated hotfix release support, GitHub status check gating before release creation, and an improved Slack
newsletter format for release notes.
</p>
<div class="hero-actions">
<a class="btn btn-primary" href="https://www.npmjs.com/package/yaba-release-cli" target="_blank" rel="noopener noreferrer">Install from npm</a>
<a class="btn btn-ghost" href="https://github.com/volkanto/yaba" target="_blank" rel="noopener noreferrer">View on GitHub</a>
</div>
<div class="terminal-card">
<p><span class="prompt">$</span> npm i -g yaba-release-cli</p>
<p><span class="prompt">$</span> yaba doctor</p>
<p><span class="prompt">$</span> yaba release preview --repo my-repo --target release/2.1 --format json</p>
<p><span class="prompt">$</span> yaba release create --repo my-repo --tag-strategy semver --publish --no-prompt</p>
</div>
</section>
<section class="section reveal" id="commands">
<div class="section-heading">
<p class="eyebrow">Core Commands</p>
<h2>Everything starts from seven explicit commands</h2>
</div>
<div class="card-grid">
<article class="card">
<h3><code>release preview</code></h3>
<p>Generates release name, tag, and changelog without mutating GitHub state.</p>
<p class="meta">Best for pull-request checks and CI policy gates.</p>
</article>
<article class="card">
<h3><code>release create</code></h3>
<p>Creates a GitHub release using generated or explicit changelog content.</p>
<p class="meta">Supports <code>--draft</code>, <code>--publish</code>, and <code>--no-prompt</code>.</p>
</article>
<article class="card">
<h3><code>doctor</code></h3>
<p>Verifies token/config/network prerequisites before release operations.</p>
<p class="meta">Use <code>--format json</code> for machine-readable diagnostics.</p>
</article>
<article class="card">
<h3><code>config init</code></h3>
<p>Creates a project config template (<code>yaba.config.json</code>) for shared defaults.</p>
<p class="meta">Use <code>--force</code> to overwrite existing config.</p>
</article>
<article class="card">
<h3><code>config validate</code></h3>
<p>Validates resolved configuration schema before release operations.</p>
<p class="meta">Great for CI guardrails with <code>--format json</code>.</p>
</article>
<article class="card">
<h3><code>release list</code></h3>
<p>Browses the latest GitHub releases for a repository interactively or as JSON output.</p>
<p class="meta">Use <code>--limit</code> to control how many releases are fetched (default 5, 0 = all).</p>
</article>
<article class="card">
<h3><code>release hotfix</code></h3>
<p>Creates a hotfix release using the dedicated <code>hotfix_prod_global_YYYYMMDD.HHmm</code> tag format.</p>
<p class="meta">Inherits all <code>release create</code> options with the tag pattern enforced automatically.</p>
</article>
</div>
</section>
<section class="section reveal" id="capabilities">
<div class="section-heading">
<p class="eyebrow">Capabilities</p>
<h2>Designed for maintainers and CI pipelines</h2>
</div>
<div class="capability-grid">
<div>
<h3>Target-based releases</h3>
<p>Generate and create releases from an explicit branch, tag, or commit SHA via <code>--target</code>.</p>
</div>
<div>
<h3>Release safety controls</h3>
<p>Use <code>--allow-empty</code>, <code>--fail-on-empty</code>, and <code>--max-commits</code> to enforce policy.</p>
</div>
<div>
<h3>Customizable release notes</h3>
<p>GitHub notes grouped by PR labels with customizable label-to-section mappings via <code>labelBuckets</code> config. Slack uses a human-readable newsletter format.</p>
</div>
<div>
<h3>Tag strategy engine</h3>
<p>Choose <code>pattern</code>, <code>semver</code>, or <code>sha</code>, plus conflict policy and max attempts.</p>
</div>
<div>
<h3>Resilient Slack delivery</h3>
<p>Publish retries transient webhook failures with exponential backoff (default 3 attempts).</p>
</div>
<div>
<h3>Config + diagnostics tooling</h3>
<p>Includes <code>config validate</code> and token-aware <code>doctor</code> output for fast issue triage.</p>
</div>
</div>
</section>
<section class="section reveal" id="updates">
<div class="section-heading">
<p class="eyebrow">Recent Updates</p>
<h2>What changed after v2.3.0</h2>
</div>
<div class="card-grid">
<article class="card">
<h3>GitHub status check gating</h3>
<p>Before creating a release, yaba now verifies that the target commit has all required GitHub status checks passing. Prevents releasing from a broken or in-progress CI state.</p>
</article>
<article class="card">
<h3>Improved release notes grouping and Slack newsletter</h3>
<p>Release notes grouping logic and the Slack newsletter format have been improved for clearer, more readable announcements across both GitHub releases and Slack notifications.</p>
</article>
</div>
</section>
<section class="section reveal" id="quickstart">
<div class="section-heading">
<p class="eyebrow">Quickstart</p>
<h2>Get from install to release preview in minutes</h2>
</div>
<ol class="steps">
<li>
<h3>Install</h3>
<p><code>npm i -g yaba-release-cli</code></p>
</li>
<li>
<h3>Set credentials</h3>
<p><code>export YABA_GITHUB_ACCESS_TOKEN=your_token</code></p>
</li>
<li>
<h3>Validate environment</h3>
<p><code>yaba doctor</code> (includes token type + repo access diagnostics)</p>
</li>
<li>
<h3>Validate config</h3>
<p><code>yaba config validate --format json</code></p>
</li>
<li>
<h3>Preview release</h3>
<p><code>yaba release preview --repo your-repo --target main</code></p>
</li>
</ol>
</section>
<section class="section reveal" id="automation">
<div class="section-heading">
<p class="eyebrow">Automation Ready</p>
<h2>Built for release pipelines, not just manual runs</h2>
</div>
<div class="automation-grid">
<div class="code-panel">
<h3>Example CI-safe invocation</h3>
<pre><code>yaba release preview \
--repo my-repo \
--owner my-org \
--format json</code></pre>
</div>
<div class="code-panel">
<h3>Release pipeline contract</h3>
<pre><code>- run npm ci and npm test
- run yaba config validate --format json
- enforce release safety policy
- use semver/sha/pattern tag strategy intentionally
- fail early on validation mismatch</code></pre>
</div>
<div class="code-panel">
<h3>Environment variables</h3>
<pre><code>YABA_GITHUB_ACCESS_TOKEN # required
YABA_GITHUB_REPO_OWNER # optional
YABA_SLACK_HOOK_URL # optional</code></pre>
</div>
</div>
</section>
<section class="section reveal install" id="install">
<p class="eyebrow">Start Releasing</p>
<h2>Use Yaba when release quality and consistency matter.</h2>
<div class="hero-actions">
<a class="btn btn-primary" href="https://www.npmjs.com/package/yaba-release-cli" target="_blank" rel="noopener noreferrer">Install Yaba</a>
<a class="btn btn-ghost" href="https://github.com/volkanto/yaba/issues" target="_blank" rel="noopener noreferrer">Request Feature</a>
</div>
</section>
</main>
<footer class="site-footer">
<p>© <span id="year"></span> Yaba • GitHub Release CLI</p>
</footer>
</body>
</html>