অপারেশনস ও রিলিজ
রিলিজ অটোমেশন
Release Please কীভাবে versioning, changelog, tag, release হ্যান্ডেল করে।
৪ মিনিট পড়া
Release Automation
Purpose
This project uses **Release Please** to automate:
- version bumping
- changelog updates
- release PR creation
- Git tag and GitHub release publishing
End-to-End Flow
- You merge conventional-commit PRs into `main`.
- `release-please.yml` runs on push to `main`.
- A release PR is created/updated.
- You merge the release PR.
- Release Please creates tag + GitHub release.
Commit Types and Bumps
| Type | Release effect |
|---|---|
| `feat` | minor bump |
| `fix` | patch bump |
| `perf` / `refactor` / `docs` / `build` / `ci` / `test` | patch section entries (as configured) |
| `chore` / `style` | hidden/no bump (default config behavior) |
Current Workflow Hardening
This boilerplate includes several release reliability protections:
- **Retry on transient release-please action failure**.
- **Auto override for non-releasable merge titles** to keep release PR generation consistent.
- **Release PR required-check synthetic pass** so release PR does not deadlock with `Expected` checks.
- **Release PR discovery with retries** to reduce eventual-consistency race conditions.
- **Contributor card rendering with wrapping layout** to avoid odd-count table misalignment in release notes.
- **Idempotent release-note enhancement** with managed markers so Credits, Contributors, and Release Metadata are replaced instead of duplicated on workflow reruns.
File reference:
- `.github/workflows/release-please.yml`
Maintainer Runbook
A) Normal release cycle
- Merge feature/fix/docs PRs to `main`.
- Wait for `Release Please` workflow.
- Open release PR and review changelog/version.
- Merge release PR.
B) If release PR is not created
- Go to Actions -> `Release Please`.
- Open latest run logs and inspect Release Please step output.
- Re-run workflow once.
- Verify merged commit messages are conventional.
C) If release PR exists but checks are `Expected`
- In Actions logs, confirm message: `Marked ... required checks as success on ...`
- If present and PR still expected: - fix ruleset mapping (remove and re-add required checks from dropdown)
- If absent: - re-run `Release Please`
Rules for Maintainers
Do:
- keep PR titles conventional
- keep required check names aligned with job names
- keep `main` protected with PR-only merge
Avoid:
- manual tag creation
- manual editing of generated release PR body
- forcing workflow rename without updating docs/ruleset checks
- editing generated contributor HTML manually in published release notes; the managed enhancement block is replaced on reruns
Troubleshooting Matrix
| Symptom | Likely cause | Fix |
|---|---|---|
| release PR not opening | no releasable unit, workflow failed, permissions | re-run workflow, verify commit types, check Actions permissions |
| release PR all `Expected` | stale required checks or check-source drift | remove/re-add required checks from dropdown |
| duplicate releases/tags | manual tags or duplicate runs | remove duplicate tag/release and rerun once |
| release notes missing entries | non-conventional merge title or hidden commit type | use conventional PR titles and releasable commit types |
Verification Checklist
After every major CI/release workflow change:
- merge a small docs PR to `main`
- confirm release PR creation
- confirm release PR mergeability (no stuck required checks)
- merge release PR and confirm tag/release generated
Related Docs
- [GitHub Setup Checklist](github-setup-checklist.md)
- [Workflows](../workflows.md)
- [Contributing Guide](contributing.md)