Update Dagger: Not done by Renovate #358

Closed
opened 2026-06-03 11:30:42 +00:00 by guettli · 2 comments
guettli commented 2026-06-03 11:30:42 +00:00 (Migrated from codeberg.org)

do below plan in comment.

do below plan in comment.
guettlibot commented 2026-06-03 15:00:06 +00:00 (Migrated from codeberg.org)

Let me read the key project files to understand the current setup.Now let me read the Dagger-related files to understand the current setup.Now let me check the workflows and Taskfile for all places the Dagger version appears.Let me check the Dockerfile and any existing plan file to see all occurrences of the Dagger version.Let me check for any existing plan for this issue and the Renovate config.Now let me check the memory system for any relevant context.I have a clear picture of the problem. Here's the implementation plan:


Replaces the previous plan.

Problem

The Dagger version is hardcoded in three places, but Renovate only updates one:

File Value Renovate today?
ci/dagger.json "engineVersion": "v0.20.8" built-in dagger manager
.forgejo/Dockerfile DAGGER_VERSION=0.20.8
DAGGER.md (systemd service example) github:dagger/nix/v0.11.4#dagger (also stale)

ci/go.mod has a pre-release Go SDK pin (dagger.io/dagger v0.20.6-...) managed by dagger develop, not Renovate — leave as-is.

Solution

Renovate's customManagers can detect any regex pattern in any file and treat it as a versioned dependency. Pointing both custom managers at the same depName: dagger/dagger + datasource: github-releases as the built-in dagger manager, then grouping with groupName, means a single Renovate PR always updates all three files together. No scripts, no fragility.

Changes

1. renovate.json

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "labels": ["dependencies"],
  "github-actions": { "enabled": false },
  "customManagers": [
    {
      "customType": "regex",
      "fileMatch": ["^\\.forgejo/Dockerfile$"],
      "matchStrings": ["DAGGER_VERSION=(?<currentValue>[0-9.]+)"],
      "depNameTemplate": "dagger/dagger",
      "datasourceTemplate": "github-releases"
    },
    {
      "customType": "regex",
      "fileMatch": ["^DAGGER\\.md$"],
      "matchStrings": ["github:dagger/nix/v(?<currentValue>[0-9.]+)#dagger"],
      "depNameTemplate": "dagger/dagger",
      "datasourceTemplate": "github-releases"
    }
  ],
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch", "pin", "digest", "lockFileMaintenance"],
      "addLabels": ["automerge"]
    },
    {
      "matchPackageNames": ["dagger/dagger"],
      "groupName": "dagger"
    }
  ]
}

2. DAGGER.md

Fix the stale Nix reference in the systemd ExecStart example:

# before
github:dagger/nix/v0.11.4#dagger
# after
github:dagger/nix/v0.20.8#dagger

Result

After this, ci/dagger.json remains the authoritative version. Renovate opens one grouped PR that updates ci/dagger.json, .forgejo/Dockerfile, and the DAGGER.md systemd example in lockstep. No manual cross-file synchronisation required.

Let me read the key project files to understand the current setup.Now let me read the Dagger-related files to understand the current setup.Now let me check the workflows and Taskfile for all places the Dagger version appears.Let me check the Dockerfile and any existing plan file to see all occurrences of the Dagger version.Let me check for any existing plan for this issue and the Renovate config.Now let me check the memory system for any relevant context.I have a clear picture of the problem. Here's the implementation plan: --- **Replaces the previous plan.** ## Problem The Dagger version is hardcoded in three places, but Renovate only updates one: | File | Value | Renovate today? | |---|---|---| | `ci/dagger.json` | `"engineVersion": "v0.20.8"` | ✅ built-in `dagger` manager | | `.forgejo/Dockerfile` | `DAGGER_VERSION=0.20.8` | ❌ | | `DAGGER.md` (systemd service example) | `github:dagger/nix/v0.11.4#dagger` | ❌ (also stale) | `ci/go.mod` has a pre-release Go SDK pin (`dagger.io/dagger v0.20.6-...`) managed by `dagger develop`, not Renovate — leave as-is. ## Solution Renovate's [`customManagers`](https://docs.renovatebot.com/configuration-options/#custommanagers) can detect any regex pattern in any file and treat it as a versioned dependency. Pointing both custom managers at the same `depName: dagger/dagger` + `datasource: github-releases` as the built-in `dagger` manager, then grouping with `groupName`, means a single Renovate PR always updates all three files together. No scripts, no fragility. ## Changes ### 1. `renovate.json` ```json { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["config:recommended"], "labels": ["dependencies"], "github-actions": { "enabled": false }, "customManagers": [ { "customType": "regex", "fileMatch": ["^\\.forgejo/Dockerfile$"], "matchStrings": ["DAGGER_VERSION=(?<currentValue>[0-9.]+)"], "depNameTemplate": "dagger/dagger", "datasourceTemplate": "github-releases" }, { "customType": "regex", "fileMatch": ["^DAGGER\\.md$"], "matchStrings": ["github:dagger/nix/v(?<currentValue>[0-9.]+)#dagger"], "depNameTemplate": "dagger/dagger", "datasourceTemplate": "github-releases" } ], "packageRules": [ { "matchUpdateTypes": ["minor", "patch", "pin", "digest", "lockFileMaintenance"], "addLabels": ["automerge"] }, { "matchPackageNames": ["dagger/dagger"], "groupName": "dagger" } ] } ``` ### 2. `DAGGER.md` Fix the stale Nix reference in the systemd `ExecStart` example: ``` # before github:dagger/nix/v0.11.4#dagger # after github:dagger/nix/v0.20.8#dagger ``` ## Result After this, `ci/dagger.json` remains the authoritative version. Renovate opens one grouped PR that updates `ci/dagger.json`, `.forgejo/Dockerfile`, and the `DAGGER.md` systemd example in lockstep. No manual cross-file synchronisation required.
guettlibot commented 2026-06-03 17:10:02 +00:00 (Migrated from codeberg.org)

Let me fetch the issue comments to find the plan referenced in the issue body.Now let me read the relevant files to understand the current state.Now I have everything I need. The plan is:

  1. Add customManagers to renovate.json for .forgejo/Dockerfile and DAGGER.md
  2. Update the stale v0.11.4 in DAGGER.md to v0.20.8Now let me run task check to verify the changes pass CI.task isn't installed in this environment. Let me validate the JSON at least.Good. Now commit on a new branch and open a PR.Codeberg is blocking scraper access. Let me use the Gitea API directly to create the PR.The PR is open at https://codeberg.org/guettli/sharedinbox/pulls/365.

Here's what I did for issue #358:

Problem: Renovate only managed the Dagger version in ci/dagger.json (engineVersion). Two other locations were left untracked:

  • .forgejo/DockerfileDAGGER_VERSION=0.20.8 (inline in the curl | sh install command)
  • DAGGER.mdgithub:dagger/nix/v0.11.4#dagger (stale nix flake reference in the systemd ExecStart)

Changes:

  1. renovate.json — Added two customManagers with regex patterns:

    • One targeting .forgejo/Dockerfile matching DAGGER_VERSION=<version>
    • One targeting DAGGER.md matching github:dagger/nix/v<version>#dagger
    • Both use datasourceTemplate: "github-releases" with depNameTemplate: "dagger/dagger" and strip the v prefix via extractVersionTemplate so the file values (no v) compare correctly against release tags (v0.x.y)
  2. DAGGER.md — Updated the stale nix reference from v0.11.4 to v0.20.8 to match the current engine version.

Going forward, Renovate will issue a single grouped PR when a new Dagger version is released, updating all three locations atomically.

Let me fetch the issue comments to find the plan referenced in the issue body.Now let me read the relevant files to understand the current state.Now I have everything I need. The plan is: 1. Add `customManagers` to `renovate.json` for `.forgejo/Dockerfile` and `DAGGER.md` 2. Update the stale `v0.11.4` in `DAGGER.md` to `v0.20.8`Now let me run `task check` to verify the changes pass CI.`task` isn't installed in this environment. Let me validate the JSON at least.Good. Now commit on a new branch and open a PR.Codeberg is blocking scraper access. Let me use the Gitea API directly to create the PR.The PR is open at https://codeberg.org/guettli/sharedinbox/pulls/365. --- Here's what I did for issue #358: **Problem:** Renovate only managed the Dagger version in `ci/dagger.json` (`engineVersion`). Two other locations were left untracked: - `.forgejo/Dockerfile` — `DAGGER_VERSION=0.20.8` (inline in the `curl | sh` install command) - `DAGGER.md` — `github:dagger/nix/v0.11.4#dagger` (stale nix flake reference in the systemd `ExecStart`) **Changes:** 1. **`renovate.json`** — Added two `customManagers` with regex patterns: - One targeting `.forgejo/Dockerfile` matching `DAGGER_VERSION=<version>` - One targeting `DAGGER.md` matching `github:dagger/nix/v<version>#dagger` - Both use `datasourceTemplate: "github-releases"` with `depNameTemplate: "dagger/dagger"` and strip the `v` prefix via `extractVersionTemplate` so the file values (no `v`) compare correctly against release tags (`v0.x.y`) 2. **`DAGGER.md`** — Updated the stale nix reference from `v0.11.4` to `v0.20.8` to match the current engine version. Going forward, Renovate will issue a single grouped PR when a new Dagger version is released, updating all three locations atomically.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: guettli/sharedinbox#358