Skip to content

refactor: use Renovate's copier manager for template updates - #118

Merged
hasansezertasan merged 1 commit into
mainfrom
chore/use-renovate-copier-manager
Aug 3, 2026
Merged

refactor: use Renovate's copier manager for template updates#118
hasansezertasan merged 1 commit into
mainfrom
chore/use-renovate-copier-manager

Conversation

@hasansezertasan

Copy link
Copy Markdown
Owner

Summary

Replaces the bespoke copier-update.yml workflow from #110 with Renovate's built-in copier manager — the template already depends on Renovate for every other update, so this unifies template updates into the same mechanism instead of shipping a custom workflow + a per-repo update token to every generated project.

Rationale and rejected alternatives are in ADR-015.

Why Renovate over the bespoke workflow

  • Renovate authenticates as a GitHub App, whose token can push .github/workflows/* — a plain GITHUB_TOKEN cannot, which forced the old workflow to require a COPIER_UPDATE_TOKEN PAT for the common case.
  • Zero bespoke YAML / secret per generated project; template-update PRs share the same dashboard, labels, and review as all other Renovate PRs.

Supporting changes (make the hosted App able to run copier update)

  • Remove _tasks: git init from copier.yml. Any task marks the template "unsafe" → forces copier --trust, which the hosted Mend Renovate App disables (allowScripts is self-hosted-only). The template now renders without --trust; scaffold docs tell the user to git init.
  • Keep the template's own release-please as the tag source — the copier manager is tag-based (git-tags datasource), not HEAD-based.

Docs

  • Rewrote ADR-015 (bespoke workflow, fohte/copier-update-action, and HEAD-tracking recorded as considered-and-rejected).
  • Updated CLAUDE.md, README.md (+ a git init scaffold step), and the generated CONTRIBUTING.md "Template updates" note — including the renovate#31600 caveat that Renovate can land copier PRs with unresolved conflict markers, so they need review.

Verification

  • Template regenerates without --trust (proves no unsafe features) — exit 0
  • No copier-update.yml shipped; no auto-git init
  • CONTRIBUTING.md renders items 8/9/10 correctly (minimal + web variants)
  • markdownlint — 0 issues across changed docs

Note

The template's release-please stays; the open release 1.0.0 PR (#117) is the first tag Renovate will key off. (Merge as-is for v1.0.0, or add a release-as override for a 0.x start.)

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@hasansezertasan, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 23 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b73babe-3e87-4e00-974b-80b9fb62b496

📥 Commits

Reviewing files that changed from the base of the PR and between 3f5c88f and 2f7cf01.

📒 Files selected for processing (7)
  • .github/workflows/template-ci.yml
  • CLAUDE.md
  • README.md
  • copier.yml
  • docs/adr/015-template-self-versioning-and-copier-update-automation.md
  • template/.github/CONTRIBUTING.md.jinja
  • template/.github/workflows/copier-update.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hasansezertasan
hasansezertasan force-pushed the chore/use-renovate-copier-manager branch from 37fab8a to fcee502 Compare August 3, 2026 10:57
Replace the bespoke copier-update.yml workflow (from #110) with Renovate's
built-in copier manager, which the template already depends on for every other
update. Renovate's App token can push .github/workflows/* (a plain GITHUB_TOKEN
cannot), so no per-repo COPIER_UPDATE_TOKEN is needed, and template-update PRs
flow through the same dashboard/labels/review as all other updates.

Two supporting changes make the hosted Renovate App able to run copier update:
- Remove `_tasks: git init` from copier.yml. Any task marks the template
  "unsafe" and forces `copier --trust`, which the hosted Mend Renovate App
  disables (allowScripts is self-hosted-only) — so a task-bearing template breaks
  the copier manager. The template now generates without --trust; the scaffold
  docs tell the user to run `git init`.
- Keep the template's own release-please as the tag source: the copier manager is
  tag-based (git-tags datasource), not HEAD-based.

Rewrote ADR-015 for this decision (bespoke workflow, fohte's action, and
HEAD-tracking recorded as considered-and-rejected). Updated CLAUDE.md, README,
and the generated CONTRIBUTING.md "Template updates" note (incl. the
renovate#31600 conflict-marker caveat). Verified: template renders without
--trust; docs pass markdownlint.
@hasansezertasan
hasansezertasan force-pushed the chore/use-renovate-copier-manager branch from fcee502 to 2f7cf01 Compare August 3, 2026 10:58

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 37fab8ac17

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread copier.yml
@hasansezertasan
hasansezertasan merged commit 1eede79 into main Aug 3, 2026
12 checks passed
@hasansezertasan
hasansezertasan deleted the chore/use-renovate-copier-manager branch August 3, 2026 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant