https://github.com/liblaf/copier-release
๐ Automated release management with Copier and Release Please
https://github.com/liblaf/copier-release
automation changelog-generation ci-cd code-release continuous-integration copier-template dependency-management github-api release-management versioning workflow-automation
Last synced: about 1 month ago
JSON representation
๐ Automated release management with Copier and Release Please
- Host: GitHub
- URL: https://github.com/liblaf/copier-release
- Owner: liblaf
- License: mit
- Created: 2024-12-29T08:45:47.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-29T02:40:56.000Z (about 2 months ago)
- Last Synced: 2026-03-29T05:28:42.565Z (about 2 months ago)
- Topics: automation, changelog-generation, ci-cd, code-release, continuous-integration, copier-template, dependency-management, github-api, release-management, versioning, workflow-automation
- Language: Jinja
- Size: 135 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://github.com/copier-org/copier)
[](https://github.com/liblaf/copier-release/actions/workflows/release-pr.yaml)
[](https://github.com/liblaf/copier-release/actions/workflows/release-draft.yaml)
[](https://github.com/liblaf/copier-release/actions/workflows/release-publish.yaml)
[Copier Docs](https://copier.readthedocs.io/) ยท [Changelog](https://github.com/liblaf/copier-release/blob/main/CHANGELOG.md) ยท [Report Bug](https://github.com/liblaf/copier-release/issues) ยท [Request Feature](https://github.com/liblaf/copier-release/issues)

## ๐ Overview
`copier-release` is a Copier template for repositories that want a clean, mostly hands-off GitHub release flow.
- โจ Opens a release PR from conventional commits pushed to `main`
- ๐ Generates and updates `CHANGELOG.md` with `git-cliff`
- ๐ท๏ธ Tags the merged release commit and creates a draft GitHub release
- โฐ Publishes draft releases automatically after 6 hours
- ๐ฆ Bumps `package.json` automatically when the file exists
- ๐งฉ Leaves package publishing and asset uploads to your own project workflows
## ๐ฆ Apply The Template
> [!IMPORTANT]
> Use `--trust` when applying or updating this template. It runs Copier tasks during generation.
```bash
copier copy --trust gh:liblaf/copier-release .
```
## ๐ Update The Template
```bash
copier recopy --trust --answers-file '.config/copier/.copier-answers.release.yaml'
```
## ๐งฑ What You Get
| File | Purpose |
| --- | --- |
| `.github/workflows/release-pr.yaml` | Calculates the next version, updates the changelog, and opens a release PR on pushes to `main`. |
| `.github/workflows/release-draft.yaml` | Runs after a merged release PR, creates the Git tag, and creates a draft GitHub release. |
| `.github/workflows/release-publish.yaml` | Runs hourly or on demand and publishes draft releases older than 6 hours. |
| `.config/copier/.copier-answers.release.yaml` | Stores Copier answers so future `copier recopy` runs stay reproducible. |
> [!NOTE]
> The changelog format is maintained centrally in this repository through a shared `git-cliff` config. Generated repositories do not need to copy a local `cliff.toml`.
## ๐ Required GitHub Setup
Create a GitHub Actions environment named `Release Please`, then provide:
- `vars.APP_ID`
- `secrets.PRIVATE_KEY`
These credentials are used by the workflows to open release PRs, push tags, create draft releases, and publish them later.
## ๐ Release Flow
1. Push commits using the Conventional Commits format such as `feat:`, `fix:`, `docs:`, or `ci:`.
2. `release-pr.yaml` runs on pushes to `main` and opens a release PR with changelog updates and version bumps where applicable.
3. Merge the release PR yourself, or approve it and let [`mergery[bot]`](https://github.com/apps/mergery) merge it once the merge button is green.
4. `release-draft.yaml` tags the merge commit and creates a draft GitHub release.
5. Your own workflows can publish packages, build artifacts, and upload release assets. Those jobs are intentionally not included in this template.
6. `release-publish.yaml` publishes the draft release after it has been sitting for 6 hours, which gives your publish jobs time to finish.
## ๐งญ Commit Guidance
Stick to Conventional Commits if you want predictable version bumps and a well-structured changelog.
```text
feat: add OAuth login
fix(ci): retry flaky upload step
docs: clarify release setup
```
## ๐ค Contributing
Ideas, fixes, and improvements are all welcome. If you want to help refine the template or extend the release flow, open an issue or send a pull request.
[](https://github.com/liblaf/copier-release/pulls)
[](https://github.com/liblaf/copier-release/graphs/contributors)
## ๐ More Copier Templates
- **[Shared](https://github.com/liblaf/copier-shared)** - โจ Shared automation for code quality, maintenance, and repository hygiene
- **[Python](https://github.com/liblaf/copier-python)** - ๐ A modern Python project template with tooling, docs, and CI ready to go
- **[Rust](https://github.com/liblaf/copier-rust)** - ๐ฆ A Rust template with cross-compilation, CI, and release automation
- **[TypeScript](https://github.com/liblaf/copier-typescript)** - ๐ A TypeScript template built around modern tooling and GitHub automation
---
#### ๐ License
Copyright ยฉ 2024 [liblaf](https://github.com/liblaf).
This project is [MIT](./LICENSE) licensed.