Repository: k0sproject/k0s
Pull request #5862: Introduce renovate bot
Author: login: juanluisvaladas
Created: 2025-05-20T16:30:30Z | Merged: 2025-05-22T10:07:24Z

## Description

Dependabot has limited scope and it cannot update things based on regex or things that we define in Makefiles.

This is a very basic first configuration file for renovate bot which can update etcd and kine as a proof of concept so that we decide if we want to implement this and invest more time updating every component.

After this is merged we need an extra step which is enabling it in developer.mend.io.

## Type of change

<!-- check the related options -->

- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update

## How Has This Been Tested?

- [x] Manual test
- [ ] Auto test added

<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration -->

## Checklist

- [ ] My code follows the style [guidelines](https://github.com/k0sproject/k0s/blob/main/docs/contributors/overview.md) of this project
- [x] My commit messages are [signed-off](https://github.com/k0sproject/k0s/blob/main/docs/contributors/github_workflow.md)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules
- [ ] I have checked my code and corrected any misspellings



Diff:
diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml
new file mode 100644
index 000000000000..c629a897066e
--- /dev/null
+++ b/.github/workflows/renovate.yaml
@@ -0,0 +1,22 @@
+name: Renovate
+
+on:
+  workflow_dispatch: # Allows manual triggering
+  schedule:
+    - cron: '0 0 * * *' # Runs at 00:00 UTC every day
+
+jobs:
+  renovate:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Self-hosted Renovate
+        uses: renovatebot/github-action@v42.0.3
+        with:
+          configurationFile: "renovate.json"
+          token: '${{ github.token }}'
+        env:
+          LOG_LEVEL: debug
+          RENOVATE_AUTODISCOVER: true # Necessary for it to work on forks
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 000000000000..aca23099c69a
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,71 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:recommended",
+    ":configMigration",
+    ":gitSignOff"
+  ],
+  "includeForks": true,
+  "enabledManagers": [
+    "gomod",
+    "custom.regex"
+  ],
+  "packageRules": [
+    {
+      "description": "Ignore all Go dependencies by default",
+      "enabled": false,
+      "matchManagers": [
+        "gomod"
+      ]
+    },
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/**/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": [
+        "custom.regex"
+      ],
+      "matchPackageNames": [
+        "etcd-io/etcd"
+      ],
+      "enabled": true
+    }
+  ],
+  "customManagers": [
+    {
+      "customType": "regex",
+      "description": "Update etcd version in embedded-bins/Makefile.variables",
+      "managerFilePatterns": [
+        "embedded-bins/Makefile.variables"
+      ],
+      "matchStrings": [
+        "etcd_version = (?<currentValue>v?[\\d\\.]+)"
+      ],
+      "depNameTemplate": "etcd-io/etcd",
+      "datasourceTemplate": "github-releases",
+      "versioningTemplate": "semver"
+    },
+    {
+      "customType": "regex",
+      "description": "Update kine versions across the codebase",
+      "managerFilePatterns": [
+        "/(^|/)[Mm]akefile(\\.[^/]+)?$/",
+        "*.go"
+      ],
+      "matchStrings": [
+        "kine_version = (?<currentValue>[\\d\\.]+)",
+        "\\bkine/blob/(v?<currentValue>[\\d\\.]+)\\b"
+      ],
+      "depNameTemplate": "k3s-io/kine",
+      "datasourceTemplate": "github-releases",
+      "versioningTemplate": "semver"
+    }
+  ]
+}
\ No newline at end of file


Reviews:
user: login: twz123
body: :robot: :rocket: 
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-21T13:24:29Z
user: login: juanluisvaladas
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-21T21:36:07Z
user: login: juanluisvaladas
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-21T21:38:21Z
user: login: twz123
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-22T09:04:25Z

Review comments:
path: renovate.json
user: login: twz123
body: What formatter do you use? My IDE disagrees on formatting a bit (it wants to spread all the single-line arrays over several lines).
created_at: 2025-05-21T06:47:22Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
+  ],
+  "regexManagers": [
path: renovate.json
user: login: twz123
body: According to the Renovate docs, the new way of doing this is `customManagers`, along with a `customType` marker. 
```suggestion
  "customManagers": [
```
created_at: 2025-05-21T06:57:48Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
path: renovate.json
user: login: twz123
body: ```suggestion
      "matchManagers": ["custom.regex"],
```
created_at: 2025-05-21T12:58:02Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
+  ],
+  "regexManagers": [
+    {
+      "description": "Update etcd version in embedded-bins/Makefile.variables",
+      "fileMatch": ["^embedded-bins/Makefile\\.variables$"],
+      "matchStrings": [
+        "etcd_version = (?<currentValue>v?[\\d\\.]+)"
+      ],
+      "depNameTemplate": "etcd-io/etcd",
+      "datasourceTemplate": "github-releases",
+      "versioningTemplate": "semver"
+    },
+    {
+      "description": "Update kine version in embedded-bins/Makefile.variables",
+      "fileMatch": ["^embedded-bins/Makefile\\.variables$"],
+      "matchStrings": [
+        "kine_version = (?<currentValue>v?[\\d\\.]+)"
+      ],
path: renovate.json
user: login: twz123
body: We can very well use this to replace all the kine versions:

```suggestion
      "description": "Update kine versions across the codebase",
      "managerFilePatterns": [
        "/(^|/)[Mm]akefile(\\.[^/]+)?$/",
        "*.go"
      ],
      "matchStrings": [
        "kine_version = (?<currentValue>[\\d\\.]+)",
        "\\bkine/blob/(v?<currentValue>[\\d\\.]+)\\b"
      ],
```
created_at: 2025-05-21T13:01:10Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
+  ],
+  "regexManagers": [
+    {
path: renovate.json
user: login: twz123
body: ```suggestion
    {
      "customType": "regex",
```
created_at: 2025-05-21T13:02:09Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
+  ],
+  "regexManagers": [
+    {
+      "description": "Update etcd version in embedded-bins/Makefile.variables",
+      "fileMatch": ["^embedded-bins/Makefile\\.variables$"],
+      "matchStrings": [
+        "etcd_version = (?<currentValue>v?[\\d\\.]+)"
+      ],
+      "depNameTemplate": "etcd-io/etcd",
+      "datasourceTemplate": "github-releases",
+      "versioningTemplate": "semver"
+    },
+    {
path: renovate.json
user: login: twz123
body: ```suggestion
    {
      "customType": "regex",
```
created_at: 2025-05-21T13:02:50Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
+  ],
+  "regexManagers": [
+    {
+      "description": "Update etcd version in embedded-bins/Makefile.variables",
+      "fileMatch": ["^embedded-bins/Makefile\\.variables$"],
path: renovate.json
user: login: twz123
body: New syntax (supports globs):

```suggestion
      "managerFilePatterns": ["embedded-bins/Makefile.variables"],
```
created_at: 2025-05-21T13:04:13Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
path: renovate.json
user: login: twz123
body: Let's add automatic config migration PRs, and also rename base to recommended (that's what Renovate suggests):

```suggestion
    "config:recommended",
    ":configMigration",
```
created_at: 2025-05-21T13:05:21Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
path: renovate.json
user: login: twz123
body: I'd say start small and only enable the managers that we've tested, and only update selected dependencies. That gives us a way to migrate stuff from dependabot to Renovate if we want to, without having both of them doing the same stuff:

```suggestion
  "enabledManagers": [
    "gomod",
    "custom.regex"
  ],
  "packageRules": [
    {
      "description": "Ignore all Go dependencies by default",
      "enabled": false,
      "matchManagers": [
        "gomod"
      ]
    },
```
created_at: 2025-05-21T13:07:26Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
+  ],
+  "regexManagers": [
+    {
+      "description": "Update etcd version in embedded-bins/Makefile.variables",
+      "fileMatch": ["^embedded-bins/Makefile\\.variables$"],
+      "matchStrings": [
+        "etcd_version = (?<currentValue>v?[\\d\\.]+)"
+      ],
+      "depNameTemplate": "etcd-io/etcd",
+      "datasourceTemplate": "github-releases",
+      "versioningTemplate": "semver"
+    },
+    {
+      "description": "Update kine version in embedded-bins/Makefile.variables",
+      "fileMatch": ["^embedded-bins/Makefile\\.variables$"],
+      "matchStrings": [
+        "kine_version = (?<currentValue>v?[\\d\\.]+)"
+      ],
+      "depNameTemplate": "k3s-io/kine",
+      "datasourceTemplate": "github-releases",
+      "versioningTemplate": "semver"
+    }
+  ],
+  "gomod": {
+    "enabled": true
+  }
path: renovate.json
user: login: twz123
body: AFAICT this is enabled by default anyways.

```suggestion
  ]
```
created_at: 2025-05-21T13:08:52Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
path: renovate.json
user: login: twz123
body: What about using globs here?

```suggestion
      "matchPackageNames": [
        "go.etcd.io/etcd/**/v3",
        "etcd-io/etcd"
      ],
```
created_at: 2025-05-21T13:19:03Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
path: renovate.json
user: login: twz123
body: IIUC this package rule is not necessary, as the regex manager will run just fine without it, too, I think ...

```suggestion
    }
```
created_at: 2025-05-21T13:22:35Z
author_association: MEMBER
path: renovate.json
user: login: juanluisvaladas
body: I'm using whatever VS does by default but I don't have it configured it by default so it's not correct according to it. Since I don't have it properly configured I'll set up my editor to whatever you're using and add a step on the linting job to make sure it's properly formatted.
created_at: 2025-05-21T21:36:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,62 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "config:base",
+    ":gitSignOff"
+  ],
+  "packageRules": [
+    {
+      "description": "Group all etcd updates (go.mod and Makefile) into a single PR",
+      "matchPackageNames": [
+        "go.etcd.io/etcd/api/v3",
+        "go.etcd.io/etcd/client/pkg/v3",
+        "go.etcd.io/etcd/client/v3",
+        "go.etcd.io/etcd/pkg/v3",
+        "go.etcd.io/etcd/server/v3",
+        "go.etcd.io/etcd/tests/v3",
+        "go.etcd.io/etcd/tools/benchmark/v3",
+        "go.etcd.io/etcd/etcdutl/v3",
+        "etcd-io/etcd"
+      ],
+      "groupName": "etcd dependencies",
+      "groupSlug": "etcd-all"
+    },
+    {
+      "description": "Ensure etcd in Makefile uses github-releases and is enabled",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["etcd-io/etcd"],
+      "enabled": true
+    },
+    {
+      "description": "Update kine version in Makefile.variables from k3s-io/kine releases",
+      "matchManagers": ["regex"],
+      "matchPackageNames": ["k3s-io/kine"],
+      "enabled": true
+    }
path: renovate.json
user: login: juanluisvaladas
body: Let's remove it, kine needs to be updated so if the PR isn't created automatically we'll add it again.
created_at: 2025-05-21T21:38:21Z
author_association: CONTRIBUTOR

PR comments:
user: login: juanluisvaladas
created_at: 2025-05-20T16:36:27Z
body: To add support for this we'd need to merge this file and enable it in developer.mend.io (doesn't have additional costs)

I tested this on my own repository and I'm extremely happy with the results:
- etcd: https://github.com/juanluisvaladas/k0s/pull/6
- kine: https://github.com/juanluisvaladas/k0s/pull/7

I think this has insane value/effort and we can automate a lot of things in embedded-bins.
author_association: CONTRIBUTOR
user: login: twz123
created_at: 2025-05-21T06:35:02Z
body: I'm _so_ glad that you've put your time into this. Something that we should've done way earlier. Did you consider to use the GitHub Action for running Renovate ourselves, instead of relying on the external integration?
author_association: MEMBER
user: login: juanluisvaladas
created_at: 2025-05-21T08:21:50Z
body: > Did you consider to use the GitHub Action for running Renovate ourselves, instead of relying on the external integration?

I did, and I got it to work (except using a correct bot account and get the DCO properly signed): https://github.com/juanluisvaladas/k0s/pull/11

I like the external integration though and so far I haven't seen any reason not to use it (assuming that it's reliable over time). I think it's much easier to test on our personal forks, we don't have to worry about tokens and permissions and I don't know how the checkbox to trigger rebuilding a PR would work if we're self hosted. But certainly it's something we can look into but so far I prefer the external integration.

Of course the conditions could change, but I don't think migrating to self-hosted in the future would be a big deal because everything is open source.

This is the action I have used:

```
name: Renovate

on:
  workflow_dispatch: # Allows manual triggering
  schedule:
    - cron: '0 0 * * *' # Runs at 00:00 UTC every day

jobs:
  renovate:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Self-hosted Renovate
        uses: renovatebot/github-action@v42.0.3 # Use the latest stable version
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          configurationFile: "renovate.json"
        env:
          LOG_LEVEL: debug
          # RENOVATE_EXTRA_FLAGS: "--dry-run"
```

And also in renovate.json I had to specify:

```
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:base",
    ":gitSignOff"
  ],
  "platform": "github",
  "repositories": [
    "juanluisvaladas/k0s"
  ],
<snip>
```

It even works with act:

`❯ act -s GITHUB_TOKEN=<redacted> -j renovate`


author_association: CONTRIBUTOR
user: login: twz123
created_at: 2025-05-21T12:14:26Z
body: > I like the external integration though and so far I haven't seen any reason not to use it (assuming that it's reliable over time). I think it's much easier to test on our personal forks, we don't have to worry about tokens and permissions and I don't know how the checkbox to trigger rebuilding a PR would work if we're self hosted. But certainly it's something we can look into but so far I prefer the external integration.

What I don't like that much is that I need to sign up with another external service. So from my PoV, testing on forks is even easier using the GitHub Action, as it will "just work" out of the box, just as any other CI build, including retries (just retrigger the Action run) and logs and so on. The action is self-contained, i.e. it can just use the GITHUB_TOKEN and request the right set of permissions using the "permissions" directive in the actions file. It's "debuggable" too, in a way, as the action itself is open source, and running the bot just boils down to run the Renovate Docker image once on the repo.
author_association: MEMBER
user: login: juanluisvaladas
created_at: 2025-05-21T23:20:40Z
body: I added a basic github action, I'm struggling with the permissions for the pull requests.

There are two ways of doing this, through a github app or through a github user which is a bot account. I believe github apps are the prefered way soI made an app and I'm testing it on my local branch. Currently I'm struggling with acquiring the token for said app...
author_association: CONTRIBUTOR
user: login: juanluisvaladas
created_at: 2025-05-22T09:03:02Z
body: Instead of using a separate github account/app we moved it to the github token as @twz123 suggested. 
author_association: CONTRIBUTOR
user: login: twz123
created_at: 2025-05-22T10:07:21Z
body: Eager to test this out!
author_association: MEMBER
user: login: twz123
created_at: 2025-06-11T15:52:43Z
body: /cc #5957
author_association: MEMBER