Skip to content

title: phpboyscout/cicd v0.11.4 — bump default Renovate image to 43 description: renovate-self defaults image_version: "38", but the bundled preset (default.json5) uses managerFilePatterns in its custom managers — a field Renovate only added in 39 (replacing fileMatch). On the default image, Renovate rejects the config ("Custom Manager contains disallowed fields: managerFilePatterns") and STOPS opening MRs. Bump the default to the current major, 43. status: approved date: 2026-06-22 authors: [Matt Cockayne] tags: [spec, cicd, components, renovate]


Spec: phpboyscout/cicd v0.11.4 — default Renovate image → 43

  • Repository: gitlab.com/phpboyscout/cicd
  • Released as: v0.11.4 (patch — a fix: the default image no longer parses the preset this same repo ships).
  • Driver: surfaced on rust-tool-base, which uses the component default (no image_version override). Renovate authenticated fine (after the v0.10.7 token fix) but raised a GitLab "Action Required: Fix Renovate Configuration" issue and stopped creating MRs: Custom Manager contains disallowed fields: managerFilePatterns, Invalid configuration option: customManagers[0].managerFilePatterns.

Problem

The bundled preset default.json5 declares its cicd-pin tracker as a regex custom manager keyed on managerFilePatterns. That field was introduced in Renovate 39 as the rename of fileMatch (which is removed entirely in Renovate 40). The renovate-self component, however, defaults image_version: "38". So a consumer on the defaults runs Renovate 38 against a preset written in 39+ syntax — Renovate fails config validation and, per its own safety behaviour, stops opening MRs until the config is "fixed". This is an internal inconsistency in this repo: the preset assumes >= 39, the component ships 38. It affects every consumer on the default image.

Decision

D1 — Bump the renovate-self image_version default "38""43"

43 is the current Renovate major (43.234.1, released 2026-06-22). It parses managerFilePatterns natively, so the bundled preset and any consumer customManagers using the modern field validate cleanly and MR creation resumes.

Picking the current major (not just the minimum 39) avoids shipping a default that is already five majors stale and keeps consumers on a supported Renovate line; the convention remains "track Renovate's release line via a bare major", and consumers may still override image_version (e.g. to pin 43.234 or float latest).

D2 — Document the floor in the input description

The image_version description now states the >= 39 requirement and why (preset uses managerFilePatterns), so a consumer who overrides downward gets a documented reason not to drop below 39.

D3 — Self-test unaffected

tests/renovate-self/.gitlab-ci.yml exercises the failure path with a dummy token against a non-existent project and tolerates Renovate exit codes 1 (config/fatal) and 78. It does not override image_version, so it now runs Renovate 43; the dummy token still yields a 401 → exit 1. No self-test change required.

D4 — Versioning

A non-breaking default change → v0.11.4 (patch). releaser-pleaser owns the exact number and the CHANGELOG; this spec proposes the bump and the conventional commit (fix(renovate-self): …) drives it.

Follow-up

  • Re-pin rust-tool-base to @v0.11.4 (the seven cicd component pins in its .gitlab-ci.yml) so its scheduled Renovate run picks up the new default and clears the "Action Required" issue. No image_version override needed on the consumer side once the default is 43.
  • Audit other consumers on the default image (gtb, etc.) — they get the fix on the same pin bump.
  • The image_version default will drift as Renovate releases majors; Renovate itself bumps the pin via the preset's own manager once the floor (>= 39) is satisfied, so this should self-maintain afterwards.