{"id":23705834,"url":"https://github.com/liblaf/copier-release","last_synced_at":"2026-04-05T07:03:32.689Z","repository":{"id":270220150,"uuid":"909611498","full_name":"liblaf/copier-release","owner":"liblaf","description":"🚀 Automated release management with Copier and Release Please","archived":false,"fork":false,"pushed_at":"2026-03-29T02:40:56.000Z","size":138,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T05:28:42.565Z","etag":null,"topics":["automation","changelog-generation","ci-cd","code-release","continuous-integration","copier-template","dependency-management","github-api","release-management","versioning","workflow-automation"],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liblaf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://afdian.com/a/liblaf"]}},"created_at":"2024-12-29T08:45:47.000Z","updated_at":"2026-03-01T03:58:13.000Z","dependencies_parsed_at":"2024-12-29T14:18:46.011Z","dependency_job_id":"d687c3ff-80a3-4e32-bf70-ed97b38718bd","html_url":"https://github.com/liblaf/copier-release","commit_stats":null,"previous_names":["liblaf/copier-release"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/liblaf/copier-release","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liblaf%2Fcopier-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liblaf%2Fcopier-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liblaf%2Fcopier-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liblaf%2Fcopier-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liblaf","download_url":"https://codeload.github.com/liblaf/copier-release/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liblaf%2Fcopier-release/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31427387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","changelog-generation","ci-cd","code-release","continuous-integration","copier-template","dependency-management","github-api","release-management","versioning","workflow-automation"],"created_at":"2024-12-30T14:57:50.993Z","updated_at":"2026-04-05T07:03:32.669Z","avatar_url":"https://github.com/liblaf.png","language":"Jinja","funding_links":["https://afdian.com/a/liblaf"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\" markdown\u003e\n\n![copier-release](https://socialify.git.ci/liblaf/copier-release/image?description=1\u0026forks=1\u0026issues=1\u0026logo=https%3A%2F%2Fraw.githubusercontent.com%2Fcopier-org%2Fcopier%2Frefs%2Fheads%2Fmaster%2Fimg%2Flogo.svg\u0026name=1\u0026owner=1\u0026pattern=Transparent\u0026pulls=1\u0026stargazers=1\u0026theme=Auto)\n\n[![Made with Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-black.json)](https://github.com/copier-org/copier)\n[![Release PR](https://github.com/liblaf/copier-release/actions/workflows/release-pr.yaml/badge.svg)](https://github.com/liblaf/copier-release/actions/workflows/release-pr.yaml)\n[![Release Draft](https://github.com/liblaf/copier-release/actions/workflows/release-draft.yaml/badge.svg)](https://github.com/liblaf/copier-release/actions/workflows/release-draft.yaml)\n[![Release Publish](https://github.com/liblaf/copier-release/actions/workflows/release-publish.yaml/badge.svg)](https://github.com/liblaf/copier-release/actions/workflows/release-publish.yaml)\n\n[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)\n\n![Rule](https://cdn.jsdelivr.net/gh/andreasbm/readme/assets/lines/rainbow.png)\n\n\u003c/div\u003e\n\n## 🚀 Overview\n\n`copier-release` is a Copier template for repositories that want a clean, mostly hands-off GitHub release flow.\n\n- ✨ Opens a release PR from conventional commits pushed to `main`\n- 📝 Generates and updates `CHANGELOG.md` with `git-cliff`\n- 🏷️ Tags the merged release commit and creates a draft GitHub release\n- ⏰ Publishes draft releases automatically after 6 hours\n- 📦 Bumps `package.json` automatically when the file exists\n- 🧩 Leaves package publishing and asset uploads to your own project workflows\n\n## 📦 Apply The Template\n\n\u003e [!IMPORTANT]\n\u003e Use `--trust` when applying or updating this template. It runs Copier tasks during generation.\n\n```bash\ncopier copy --trust gh:liblaf/copier-release .\n```\n\n## 🔄 Update The Template\n\n```bash\ncopier recopy --trust --answers-file '.config/copier/.copier-answers.release.yaml'\n```\n\n## 🧱 What You Get\n\n| File | Purpose |\n| --- | --- |\n| `.github/workflows/release-pr.yaml` | Calculates the next version, updates the changelog, and opens a release PR on pushes to `main`. |\n| `.github/workflows/release-draft.yaml` | Runs after a merged release PR, creates the Git tag, and creates a draft GitHub release. |\n| `.github/workflows/release-publish.yaml` | Runs hourly or on demand and publishes draft releases older than 6 hours. |\n| `.config/copier/.copier-answers.release.yaml` | Stores Copier answers so future `copier recopy` runs stay reproducible. |\n\n\u003e [!NOTE]\n\u003e 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`.\n\n## 🔐 Required GitHub Setup\n\nCreate a GitHub Actions environment named `Release Please`, then provide:\n\n- `vars.APP_ID`\n- `secrets.PRIVATE_KEY`\n\nThese credentials are used by the workflows to open release PRs, push tags, create draft releases, and publish them later.\n\n## 🔁 Release Flow\n\n1. Push commits using the Conventional Commits format such as `feat:`, `fix:`, `docs:`, or `ci:`.\n2. `release-pr.yaml` runs on pushes to `main` and opens a release PR with changelog updates and version bumps where applicable.\n3. 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.\n4. `release-draft.yaml` tags the merge commit and creates a draft GitHub release.\n5. Your own workflows can publish packages, build artifacts, and upload release assets. Those jobs are intentionally not included in this template.\n6. `release-publish.yaml` publishes the draft release after it has been sitting for 6 hours, which gives your publish jobs time to finish.\n\n## 🧭 Commit Guidance\n\nStick to Conventional Commits if you want predictable version bumps and a well-structured changelog.\n\n```text\nfeat: add OAuth login\nfix(ci): retry flaky upload step\ndocs: clarify release setup\n```\n\n## 🤝 Contributing\n\nIdeas, 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.\n\n[![PR WELCOME](https://img.shields.io/badge/%F0%9F%A4%AF%20PR%20WELCOME-%E2%86%92-ffcb47?labelColor=black\u0026style=for-the-badge)](https://github.com/liblaf/copier-release/pulls)\n[![Contributors](https://gh-contributors-gamma.vercel.app/api?repo=liblaf/copier-release)](https://github.com/liblaf/copier-release/graphs/contributors)\n\n## 🔗 More Copier Templates\n\n- **[Shared](https://github.com/liblaf/copier-shared)** - ✨ Shared automation for code quality, maintenance, and repository hygiene\n- **[Python](https://github.com/liblaf/copier-python)** - 🐍 A modern Python project template with tooling, docs, and CI ready to go\n- **[Rust](https://github.com/liblaf/copier-rust)** - 🦀 A Rust template with cross-compilation, CI, and release automation\n- **[TypeScript](https://github.com/liblaf/copier-typescript)** - 🚀 A TypeScript template built around modern tooling and GitHub automation\n\n---\n\n#### 📝 License\n\nCopyright © 2024 [liblaf](https://github.com/liblaf). \u003cbr /\u003e\nThis project is [MIT](./LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliblaf%2Fcopier-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliblaf%2Fcopier-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliblaf%2Fcopier-release/lists"}