Integrate renovate bot for all dependency updates#37050
Integrate renovate bot for all dependency updates#37050silverwind merged 39 commits intogo-gitea:mainfrom
Conversation
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
|
Alternatively we can run it in our CI directly, though it's also via app just not the mend one. |
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
This comment was marked as outdated.
This comment was marked as outdated.
Signed-off-by: silverwind <me@silverwind.io>
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
|
Once this is merged, I think we could go ahead with #36971, renovate understand and can update the SHA format, so no manual updates needed. |
There was a problem hiding this comment.
Pull request overview
This PR migrates GitHub Actions dependency update automation from Dependabot to Renovate by adding a Renovate configuration and a scheduled workflow, and removing the existing Dependabot configuration.
Changes:
- Add
renovate.jsonto configure Renovate forgithub-actionsupdates with matching labels and a 5-day minimum release age. - Add a scheduled GitHub Actions workflow to run Renovate using a GitHub App installation token.
- Remove
.github/dependabot.ymlto disable Dependabot updates.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
renovate.json |
Introduces Renovate configuration to manage GitHub Actions updates with repo labels and release age delay. |
.github/workflows/cron-renovate.yml |
Adds a scheduled/manual workflow to run Renovate using a GitHub App token. |
.github/dependabot.yml |
Removes Dependabot configuration now superseded by Renovate. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
|
Let's merge #37225 first and then we can use this PR to install a comprehensive renovate config that covers actions,go,npm,python deps. Also I will then decided on which auth mechanism to use and after merge, a admin will need to install that auth. |
Renovate has two config files: global and local. Prior to this change, it read the config as global and local at the same time. This fixes the issue removing the repo scoped config and giving the renovate global only without requirement for in repository one. This also enables migration of the config - which I assume will also work on global configuration. Without this, renovate will compain about the config having warnings during runs and on dashboard.
|
Done from my side, unless we want to enable the dashboard. I find it useful as a general overview of what dependencies there are, but unpinned isn't very useful in the first place so... I'd like to see some others voice their opinions on it. |
|
I still think dashboard is mostly useless noise. |
|
Let's start with the dashboard and if it bothers us we remove... |
enable dashboard
|
@TheFox0x7 can you approve |
Ok with me if we won't pin it, at least initially. |
TheFox0x7
left a comment
There was a problem hiding this comment.
I don't get why you're so against the dashboard. It's a single issue which is more informative than looking at the job logs as to why the bot fails, groups items or misbehaves.
Especially since no one is making you looked at the pinned issues anyway and scrolling slightly down already happens if there's a release pending.
|
I'm not against if it's helpful. I'm just annoyed when seeing a "Dependency dashboard" pinned issue on the issues list, I find it distracting when pinned. But I guess it's a minor issue, Gitea already has "Release" issues pinned regularily so at least it's not extra scroll distance. I think I generally dislike any pinned issues unless they give substantial value for every reader. |
|
Dashboard is here: #37438 |
|
Follow-up on the dashboard warning in #37438:
This comes from the Mend.io hosted Renovate also seeing the repo (note the "Mend.io Web Portal" link in the dashboard body). Its global Suggestion: an admin should uninstall the Mend Renovate GitHub App from Comment written by Claude Opus 4.7. |
|
@lunny please do the above |
|
I don't get how this happened... what token was even added? |
|
Certainly odd, but at least I don't see duplicate dashboards: I think app needs to be removed and then the self-hosted action will run tomorrow and do the onboarding issue as well as open a new dashboard issue. |
|
this has yet to run, that's the reason why https://github.com/go-gitea/gitea/actions/workflows/cron-renovate.yml |
|
Yeah, app just needs to be removed and the wrong dashboard needs to be closed. then run the action manually once to get the onboarding which should then make the dashboard and start opening PRs for updates. |
* origin/main: (176 commits) Refactor pull request view (3) (go-gitea#37439) Update 1.26.1 changelog in main (go-gitea#37442) Make GetPossibleUserByID can handle deleted user (go-gitea#37430) Fix fetch action redirect (go-gitea#37437) Refactor integration test DecodeJSON calls to use generic return value (go-gitea#37432) Integrate renovate bot for all dependency updates (go-gitea#37050) Refactor pull request view (2) (go-gitea#37428) Use MarkLongPolling instead of hard-coded route path (go-gitea#37427) Optimize CI caches (go-gitea#37387) Update AGENTS.md (go-gitea#37420) Update Nix flake (go-gitea#37425) [skip ci] Updated translations via Crowdin remove excessive quote from terraform instructions (go-gitea#37424) Improve testing init, clean up webhook tests (go-gitea#37412) Fix color regressions, add `priority` color (go-gitea#37417) [skip ci] Updated translations via Crowdin Stabilize e2e logout propagation test (go-gitea#37403) refactor: serve site manifest via `/assets/site-manifest.json` endpoint (go-gitea#37405) feat(security): set X-Content-Type-Options: nosniff by default (go-gitea#37354) Refactor pull request view (1) (go-gitea#37380) ... # Conflicts: # templates/repo/diff/box.tmpl
* main: (33 commits) refactor: use named `Permission` field in `Repository` struct instead of anonymous embedding (go-gitea#37441) Refactor pull request view (3) (go-gitea#37439) Update 1.26.1 changelog in main (go-gitea#37442) Make GetPossibleUserByID can handle deleted user (go-gitea#37430) Fix fetch action redirect (go-gitea#37437) Refactor integration test DecodeJSON calls to use generic return value (go-gitea#37432) Integrate renovate bot for all dependency updates (go-gitea#37050) Refactor pull request view (2) (go-gitea#37428) Use MarkLongPolling instead of hard-coded route path (go-gitea#37427) Optimize CI caches (go-gitea#37387) Update AGENTS.md (go-gitea#37420) Update Nix flake (go-gitea#37425) [skip ci] Updated translations via Crowdin remove excessive quote from terraform instructions (go-gitea#37424) Improve testing init, clean up webhook tests (go-gitea#37412) Fix color regressions, add `priority` color (go-gitea#37417) [skip ci] Updated translations via Crowdin Stabilize e2e logout propagation test (go-gitea#37403) refactor: serve site manifest via `/assets/site-manifest.json` endpoint (go-gitea#37405) feat(security): set X-Content-Type-Options: nosniff by default (go-gitea#37354) ...
…-review-feedback * origin/main: (144 commits) Add API endpoint to reply to pull request review comments (go-gitea#36683) Add CurrentURL template variable back (go-gitea#37444) refactor: use named `Permission` field in `Repository` struct instead of anonymous embedding (go-gitea#37441) Refactor pull request view (3) (go-gitea#37439) Update 1.26.1 changelog in main (go-gitea#37442) Make GetPossibleUserByID can handle deleted user (go-gitea#37430) Fix fetch action redirect (go-gitea#37437) Refactor integration test DecodeJSON calls to use generic return value (go-gitea#37432) Integrate renovate bot for all dependency updates (go-gitea#37050) Refactor pull request view (2) (go-gitea#37428) Use MarkLongPolling instead of hard-coded route path (go-gitea#37427) Optimize CI caches (go-gitea#37387) Update AGENTS.md (go-gitea#37420) Update Nix flake (go-gitea#37425) [skip ci] Updated translations via Crowdin remove excessive quote from terraform instructions (go-gitea#37424) Improve testing init, clean up webhook tests (go-gitea#37412) Fix color regressions, add `priority` color (go-gitea#37417) [skip ci] Updated translations via Crowdin Stabilize e2e logout propagation test (go-gitea#37403) ... # Conflicts: # models/project/column.go # routers/web/repo/issue_page_meta.go
Replaces Dependabot with Renovate. The new setup:
vulnerabilityAlertsschedule bypass.uses:action refs SHA-pinned with patch-level version comments (same format as Pin all GitHub Actions to commit SHAs #36971, which this supersedes);helpers:pinGitHubActionDigestskeeps future bumps in that format.renovatebot/github-actionruntime image pinned via the upstream-recommendedRENOVATE_VERSIONenv + magic comment +customManagers:githubActionsVersionspreset, so Renovate keeps the pin updated.*_PACKAGE ?= <import-path>@<version>lines inMakefile(golangci-lint, swagger, actionlint, etc.) and groups them into the same Go PR viamatchDatasources: ["go"].assets/go-licenses.json(make tidy) and the SVG sprite (make svg), gated by an env-level command allowlist.cron-flake-updaterworkflow — Renovate's nix manager tracksflake.nixinputs and produces the sameflake.lockbump PRs on the regular weekly schedule.renovate.json5only;updates@17.16.3reads them from there too, so the standaloneupdates.config.tsis gone and one source of truth covers both tools.Fixes: #33386
Admin steps before/after merge
Two prerequisites in the
go-gitea/gitearepo:1. Create the
RENOVATE_TOKENsecretGiteaBotand mint a fine-grained PAT scoped togo-gitea/giteaonly:Workflowspermission is required so Renovate can update.github/workflows/*.ymlvia thegithub-actionsmanager — without it, action-bump PRs fail.repoANDworkflowscopes; fine-grained is preferred.GiteaBothas write access ongo-gitea/gitea(needed to push therenovate/*branches); add it as a collaborator if not already.RENOVATE_TOKEN, value = the PAT.2. (Recommended) Branch protection for
renovate/**renovate/**.GiteaBot.GiteaBotfrom creating spoofedrenovate/*branches. Do not enable "Restrict pushes": maintainers still need to be able to push fixups to existing Renovate PRs (conflict resolution, small tweaks before merge).3. Verify
cron-renovate→ "Run workflow" to trigger manually instead of waiting for the next daily run.No GitHub App registration, no private key handling — a single PAT secret is the only credential.
This PR was written with the help of Claude Opus 4.7