Files
Aleksei Sviridkin 8b4d31866e ci: add Go-scoped Renovate configuration (#2850)
## What this PR does

Raises the OpenSSF Scorecard **Dependency-Update-Tool** check (was
**0/10**) by adding a Renovate configuration at `.github/renovate.json`.
Scorecard scores this check on the presence of a recognized config file,
so the check turns green as soon as this merges.

### Why Renovate (not Dependabot)

Renovate is already the cozystack org standard — it actively raises and
merges PRs on `cozystack/ansible-cozystack`, and `cozystack/talm` +
`cozystack/boot-to-talos` already ship `renovate.json`. The Renovate
GitHub App is authorized on the org, so this config is picked up
**without creating a new credential**. There is no Dependabot usage
anywhere in the org.

> If the app installation is scoped to "selected repositories",
`cozystack/cozystack` needs to be toggled into the existing installation
by an org admin — a one-click change, not a new auth artifact. The
Scorecard check does not depend on that toggle.

### Scoped to Go dependencies only (per the 2026-05-27 decision)

- **`enabledManagers: ["gomod"]`** — Renovate only ever touches Go
modules. It will **not** open PRs for Dockerfiles, Helm charts, shipped
component/operator versions, or GitHub Actions. Components and images
stay hand-managed.
- **`gomodTidy` + `gomodUpdateImportPaths`** run after each bump. The
`gomod` manager auto-discovers both the root module and the
`api/apps/v1alpha1` submodule.
- **Kubernetes libraries grouped** (`sigs.k8s.io/controller-runtime` +
`k8s.io/**`) so `client-go`/`apimachinery` never bump out of lockstep
with controller-runtime (a split bump fails to compile).
- **Go toolchain directive pinned** (`matchDepTypes: ["golang"]`
disabled) — `go.mod` is generated and a toolchain bump needs a matching
`setup-go` + codegen run, out of scope for an automated PR.

### "do not merge" on every bot PR (requirement)

- `automerge` and `platformAutomerge` are **off**.
- Every Renovate PR is labeled **`do-not-merge/hold`** + **`automated`**
on creation. Both labels already exist in `.github/labels.yml`;
`stale.yaml` already exempts `do-not-merge/hold` PRs from auto-close, so
held bumps won't rot.
- Bumps therefore stay parked until tests pass and a maintainer removes
the label after a hands-on check.

> Note: `do-not-merge/hold` is a **signal/marker** (cozystack uses
native GitHub, not Prow Tide). Combined with automerge being off,
nothing can auto-merge a held PR. Hard merge-blocking would need a
status check tied to the label, which would require branch-protection
changes that were explicitly excluded.

### Verification

- `renovate-config-validator` (Renovate v42): **Config validated
successfully.**
- Valid JSON.

### Release note

```release-note
ci: add a Go-scoped Renovate configuration (gomod only, no automerge, bot PRs held with do-not-merge/hold) to automate Go dependency updates
```


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Configured automated dependency management for Go modules, including
synchronized updates for Kubernetes-related dependencies, rate limiting
on concurrent updates, and manual approval requirements to ensure
controlled rollouts.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-09 23:51:51 +03:00
..