Skip to content

chore: bump Go to 1.26.5 and centralize the Go version in go.mod#295

Merged
lockwobr merged 1 commit into
mainfrom
chore/go-1.26.5
Jul 9, 2026
Merged

chore: bump Go to 1.26.5 and centralize the Go version in go.mod#295
lockwobr merged 1 commit into
mainfrom
chore/go-1.26.5

Conversation

@lockwobr

@lockwobr lockwobr commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Bumps the Go toolchain to 1.26.5 and removes the version duplication that came with it. go.mod is now the single source for the Go version, and operator/versions.sh is refactored into a generic, data-driven reader.

Go version → single source (go.mod)

go.mod must carry the Go version as a literal anyway, so everything reads from it:

  • CI actions/setup-go uses go-version-file: <module>/go.mod (matching the existing merge-gate.yaml / release.yml).
  • The operator Makefile GO_VERSION and the image build-arg read it via awk.
  • Cache keys drop the GO_VERSION- prefix and add operator/go.mod to hashFiles (same invalidation, no value needed).
  • versions.yaml no longer carries go.version; the workflow env: GO_VERSION literals are gone.

versions.sh refactor

operator/versions.yaml now owns only the k8s/kind/envtest versions, and operator/versions.sh reads it generically:

  • --get <yq-path> [yq-args...] prepends the root . and forwards yq flags; a missing key is an error (exit 1) instead of printing null.
  • --print (GitHub Actions output shape) and --export (export NAME=value for eval/source) enumerate the yaml's keys and derive each consumer name from the key path. No hardcoded name mapping.
  • Key nesting shapes the derived name, so envtest.k8s.version yields the ENVTEST_K8S_VERSION the test lib expects.
  • Sourcing in a non-bash shell now points at eval "$(./versions.sh --export)" instead of failing with a misleading error.

CI --print consumers in operator-ci.yaml / agent-ci.yaml were repointed to the derived key names; job-output names and downstream needs.*.outputs.* are unchanged.

Also

Drops the unused gitlint-ci include from .gitlab-ci.yml (unrelated cleanup).

Testing

  • versions.sh --get/--print/--export exercised locally, including against the CI-pinned yq v4.44.3; missing-key exits 1; shellcheck clean.
  • Makefile resolves GO_VERSION=1.26.5 from go.mod; the awk build-arg agrees.
  • Operator module builds (go build ./...).
  • Workflow YAML validated with yq -e and git grep; GitHub Actions logic verified by inspection + parse (not run locally).
  • Docs updated in lockstep (docs/development.md, versions.yaml header, --help).

@lockwobr lockwobr requested a review from a team July 9, 2026 18:34
@github-actions github-actions Bot added doc Documentation change (PR path label; doc issues use the Documentation type) component/operator Skyhook operator (controller-manager) component/agent Skyhook agent (package executor) component/ci CI workflows, GitHub Actions, and repo tooling labels Jul 9, 2026
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

This PR updates Go version references to 1.26.5 in go.mod files and documentation, changes CI and Makefile logic to read the Go toolchain version from go.mod instead of hardcoded values, and rewires Kind-related version outputs in the operator CI workflow. It also refactors operator/versions.sh and operator/versions.yaml to use generic YAML-path lookups, with dependent Makefile and documentation updates for the new keys and shell usage.

Estimated code review effort: 4 (Complex) | ~45 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: bumping Go to 1.26.5 and making go.mod the source of truth.
Description check ✅ Passed The description is clearly related to the changeset and covers the Go version update, CI wiring, and versions.sh refactor.
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/go-1.26.5

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/operator-ci.yaml:
- Around line 76-80: The workflow outputs in the operator CI job expose the same
value twice via kind-version and kind-node-image-version, so keep only one
canonical alias and remove the duplicate from the outputs block. Update the
workflow definition that maps steps.versions.outputs so only the preferred
output name remains, and verify any references to the removed alias are not
needed elsewhere in the repo.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 496e9ae2-e559-4d73-8bc1-f772fbbb028a

📥 Commits

Reviewing files that changed from the base of the PR and between f418275 and a6b66f3.

📒 Files selected for processing (14)
  • .claude/CLAUDE.md
  • .github/workflows/agent-ci.yaml
  • .github/workflows/agent-go-ci.yaml
  • .github/workflows/cli-release.yaml
  • .github/workflows/operator-ci.yaml
  • .gitlab-ci.yml
  • agent/go/go.mod
  • docs/development.md
  • operator/Makefile
  • operator/README.md
  • operator/deps.mk
  • operator/go.mod
  • operator/versions.sh
  • operator/versions.yaml
💤 Files with no reviewable changes (1)
  • .gitlab-ci.yml

Comment thread .github/workflows/operator-ci.yaml Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/operator-ci.yaml:
- Line 372: The GO_VERSION build-arg is inlining a GitHub expression in the run
script, which breaks the step’s existing injection-safe pattern used for
GIT_SHA, VERSION, and PLATFORM. Update the workflow step that builds the
operator image so the GO_VERSION value is passed through env and referenced as a
shell variable in the run command, matching the same hardening approach already
used in this step.

In `@operator/versions.sh`:
- Around line 166-171: The sourcing branch in versions.sh applies whatever
`_versions_export` emits even if that helper fails partway, so update the `else`
path to check the export command’s exit status before running `eval`. Use the
existing `_versions_export` and `eval` flow, but capture the command output and
abort with an error message if `_versions_export` returns nonzero, so the caller
shell doesn’t end up with a partial `VERSIONS_*` environment.
- Around line 95-102: _versions_export is emitting single-quoted shell
assignments without escaping embedded quotes, which can break the generated
output and make the later eval unsafe. Update _versions_export to shell-escape
both the env name/value correctly before printing, using the existing
_versions_export/_versions_env_name/_versions_value flow so any quote characters
in versions.yaml values are handled safely.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 8b1eeef8-185d-4642-be1e-7d12f200fcd3

📥 Commits

Reviewing files that changed from the base of the PR and between a6b66f3 and f85948b.

📒 Files selected for processing (14)
  • .claude/CLAUDE.md
  • .github/workflows/agent-ci.yaml
  • .github/workflows/agent-go-ci.yaml
  • .github/workflows/cli-release.yaml
  • .github/workflows/operator-ci.yaml
  • .gitlab-ci.yml
  • agent/go/go.mod
  • docs/development.md
  • operator/Makefile
  • operator/README.md
  • operator/deps.mk
  • operator/go.mod
  • operator/versions.sh
  • operator/versions.yaml
💤 Files with no reviewable changes (1)
  • .gitlab-ci.yml

Comment thread .github/workflows/operator-ci.yaml Outdated
Comment thread operator/versions.sh
Comment thread operator/versions.sh Outdated
@coveralls

coveralls commented Jul 9, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 29047186718

Warning

No base build found for commit f418275 on main.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 82.243%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 10238
Covered Lines: 8420
Line Coverage: 82.24%
Coverage Strength: 9.23 hits per line

💛 - Coveralls

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/operator-ci.yaml:
- Line 349: The GO_VERSION derivation in the workflow currently reads only the
go directive, so update the shell logic used in the operator-ci job to prefer a
toolchain entry from go.mod when present and fall back to the go version
otherwise. Make the same change in both places where GO_VERSION is computed so
the container build and CI stay aligned with the version selected by
actions/setup-go.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 0ce7304e-0424-47c8-9a1f-ad24e4c4e695

📥 Commits

Reviewing files that changed from the base of the PR and between f85948b and 0a87c5a.

📒 Files selected for processing (14)
  • .claude/CLAUDE.md
  • .github/workflows/agent-ci.yaml
  • .github/workflows/agent-go-ci.yaml
  • .github/workflows/cli-release.yaml
  • .github/workflows/operator-ci.yaml
  • .gitlab-ci.yml
  • agent/go/go.mod
  • docs/development.md
  • operator/Makefile
  • operator/README.md
  • operator/deps.mk
  • operator/go.mod
  • operator/versions.sh
  • operator/versions.yaml
💤 Files with no reviewable changes (1)
  • .gitlab-ci.yml

Comment thread .github/workflows/operator-ci.yaml Outdated
Bump the Go toolchain to 1.26.5 in both modules. go.mod is now the single source for the Go version: CI setup-go uses go-version-file, the operator Makefile and image build-arg read it via awk, and versions.yaml no longer carries go.version.

Refactor operator/versions.sh into a generic reader. --get takes a yq path and forwards yq flags; --print and --export enumerate the keys in versions.yaml and derive each consumer name from the key path, so there is no hardcoded name table. envtest.k8s.version is nested so it derives to the ENVTEST_K8S_VERSION the test lib expects. --get now fails on a missing key, and sourcing in a non-bash shell points at eval "$(versions.sh --export)".

Also drop the unused gitlint-ci include from .gitlab-ci.yml.

Signed-off-by: Brian Lockwood <lockwobr@gmail.com>
@lockwobr lockwobr enabled auto-merge (squash) July 9, 2026 22:27
@lockwobr lockwobr merged commit 5eeb582 into main Jul 9, 2026
46 checks passed
@lockwobr lockwobr deleted the chore/go-1.26.5 branch July 9, 2026 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/agent Skyhook agent (package executor) component/ci CI workflows, GitHub Actions, and repo tooling component/operator Skyhook operator (controller-manager) doc Documentation change (PR path label; doc issues use the Documentation type)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants