Skip to content

chore(api): bump the default runner image to v19.2.2 - #73

Merged
alekc merged 1 commit into
mainfrom
chore/issue-61-bump-runner-v19.2.2
Aug 19, 2026
Merged

chore(api): bump the default runner image to v19.2.2#73
alekc merged 1 commit into
mainfrom
chore/issue-61-bump-runner-v19.2.2

Conversation

@alekc

@alekc alekc commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Bumps DefaultRunnerImage to gitlab-runner v19.2.2, released 2026-08-13. The direct reason to take it is security content: CVE-2026-34986 (go-jose), CVE-2026-33186 (grpc in runner_wrapper) and several golang.org/x/net CVEs.

Two consequences reach every user who does not set spec.image. The helper image moves with the runner, since the runner derives the helper tag from its own version, so build pods now pull gitlab-runner-helper:<arch>-v19.2.2; mirrored or air-gapped registries need the new tag or a pinned helper_image, and the symptom otherwise is ImagePullBackOff on the helper container while the runner pod reports Ready. And Kubernetes config plus secret-resolution failures now report configuration_error where upstream reported runner_system_failure, so retry: when: [runner_system_failure] stops retrying those. Both are in the commit body, which is the release note.

No CRD change needed: nothing was added to or removed from the Kubernetes executor subtree between v19.1.0 and v19.2.2. Upstream did add 23 (struct, key) pairs outside it under experimental.boot_verify and experimental.usage_logger, which the release watcher cannot see because it walks only Kubernetes* roots; checked by hand, all opt-in, none changes a default. The new /health/ready endpoint is not adopted as the probe, because boot-verify is opt-in and never enabled here, so it returns 200 as soon as the listener binds.

Verified: make test, make lint and hack/runner-release-watch_test.sh all match main, make manifests is a no-op, and the watcher flips from "already tracked in #61" to "up to date", proving its parse regex still matches. e2e exercises the new image directly, since no spec in it sets an image.

Refs: #61

Summary by CodeRabbit

  • New Features

    • Updated the default GitLab Runner image to version 19.2.2.
  • Documentation

    • Clarified configuration synchronization details, including duration handling and autoscaler subtree exclusions.

Upstream released v19.2.2 on 2026-08-13. It carries fixes for CVE-2026-34986 (go-jose),
CVE-2026-33186 (grpc in runner_wrapper) and several golang.org/x/net CVEs, which is the main
reason to take it.

Two consequences land on every user who does not set spec.image.

The helper image moves too. The runner derives the helper tag from its own version, so build pods
now pull gitlab-runner-helper:<arch>-v19.2.2. Anyone mirroring registries, running air-gapped, or
allowlisting helper tags in admission must mirror the new tag or pin helper_image; the symptom
otherwise is ImagePullBackOff on the helper container while the runner pod itself reports Ready.

Kubernetes config and secret-resolution failures are reclassified. Paths in the executor's
Prepare() that previously returned bare errors now return ConfigurationError, and secret failures
map to ConfigurationError or RunnerExternalDependencyFailure where upstream reported
RunnerSystemFailure before. A job with `retry: when: [runner_system_failure]` stops retrying those.

Reviewed for CRD impact and found none needed. No key was added to or removed from the Kubernetes
executor subtree between v19.1.0 and v19.2.2, and the exposure gap is unchanged: 13 autoscaler
pairs deliberately unexposed, one stale key, all fourteen already suppressed. Upstream did add 23
(struct, key) pairs outside that subtree, under experimental.boot_verify and
experimental.usage_logger. The release watcher cannot see those because it walks only structs
reachable from a Kubernetes* root, so they were checked by hand: every one is opt-in and none
changes a default.

v19.2.0 also added a /health/ready endpoint. Not adopting it as the readiness probe: it is gated on
boot-verify, which is opt-in and never enabled by this operator, so it returns 200 as soon as the
listener binds and carries no more information than the current TCP check on 9090.

The stale comment in gitlab_types.go described a two-step sync against the old pin. Reworded to
name the version the field set corresponds to, and trimmed to the comment budget by pointing at
runner-release-watch.suppress, which already carries the autoscaler rationale verbatim.

Refs: #61
Signed-off-by: Alexander Chernov <alexander@chernov.it>
@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e335b960-14ed-446c-a15d-7dab8dd6105b

📥 Commits

Reviewing files that changed from the base of the PR and between b028511 and c3d9a05.

📒 Files selected for processing (2)
  • api/v1beta2/gitlab_types.go
  • api/v1beta2/runner_types.go

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The default GitLab Runner image now uses version v19.2.2. The KubernetesConfig synchronization comments identify the new source version and clarify duration decoding and autoscaler suppression metadata.

Changes

Runner version synchronization

Layer / File(s) Summary
Update runner version and synchronization metadata
api/v1beta2/runner_types.go, api/v1beta2/gitlab_types.go
The default runner image changed to alpine-v19.2.2. Synchronization comments now reference GitLab Runner v19.2.2, string-based TOML duration decoding, and runner-release-watch.suppress.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Merge Risk: ⚪ Minimal · up to c3d9a

The default runner image moves to v19.2.2, which also updates the derived helper-image tag and related failure reporting; the supplied checks pass and no actionable merge-blocking risk remains.

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the primary change: updating the default runner image to v19.2.2.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/issue-61-bump-runner-v19.2.2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@alekc
alekc merged commit 01c1a4c into main Aug 19, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant