UNPKG

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
<!doctype 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>