Skip to content

Apiforge v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 23:40
· 2 commits to main since this release
f1c109b

[0.3.0] - 2026-06-10

Added

  • apiforge rollback auto-detects the rollback target when --to is omitted: newest version older than the currently deployed image tag, sourced from successful audit-history releases with semver git tags as fallback.
  • rollback now verifies the configured health check after the rollout and supports --yes to skip the confirmation prompt.
  • Live terminal spinners for pipeline steps with streaming progress from Docker build/push, Kubernetes rollout (replica counts), and health-check attempts. Renders only on interactive terminals; CI/piped output keeps the plain line format, and JSON output on stdout stays clean.
  • apiforge init adds .apiforge/ to .gitignore.

Fixed

  • Apiforge's own .apiforge/ state directory no longer trips the require_clean preflight check (first release's audit write used to block every subsequent release).
  • release --output json now emits only the JSON document on stdout; the release plan and step progress go to stderr, so output can be piped straight into jq/CI parsers.
  • ${VAR} environment variable references in apiforge.toml (GitHub token/repository, Slack/webhook notification fields, health-check URL) are now resolved at config load; missing variables fail fast naming the variable.
  • Notifications now use the Slack and generic webhook notification steps, fire on both success and failure (honoring notify_on), and sanitize error text. Previously only an inline Slack-only success path existed.
  • Audit records now capture the real outcome: per-step name/status/duration, total duration, and success/failed/rolled_back status. Failed releases are recorded, so history --filter failed works (and includes rolled-back releases).
  • --dry-run no longer writes audit records or creates .apiforge/ (dry-runs are side-effect free).
  • Removed double Kubernetes rollback: only k8s-update reverts the deployment revision; k8s-rollout rollback is a no-op, preventing an over-rollback to two revisions back.
  • k8s-rollout no longer divides by zero when a deployment is scaled to 0 replicas.
  • git-commit only stages CHANGELOG.md when the changelog step actually ran, fixing failures with --no-changelog or missing changelog files.
  • Changelog generation inserts new sections before existing release sections (header/description stay on top) and includes full history on the first release instead of an empty section.
  • history applies status filters before the --limit, and no longer creates the audit directory just to read it.
  • release --output json now includes step names, textual statuses, rolled_back, and error fields.
  • [github].create_release = false is now honored (release step is skipped).
  • Fixed potential panic when truncating multi-byte webhook URLs in config validate output.
  • Release workflow action versions aligned with CI (checkout@v6, upload-artifact@v7, download-artifact@v8).
  • CONTRIBUTING.md MSRV corrected to Rust 1.91.1.