Skip to content

CNF-23398: Upgrade golangci-lint from v1.54.2 to v2.11.4#692

Open
sebrandon1 wants to merge 1 commit intoopenshift:masterfrom
sebrandon1:golangci-lint-v2-upgrade
Open

CNF-23398: Upgrade golangci-lint from v1.54.2 to v2.11.4#692
sebrandon1 wants to merge 1 commit intoopenshift:masterfrom
sebrandon1:golangci-lint-v2-upgrade

Conversation

@sebrandon1
Copy link
Copy Markdown
Member

@sebrandon1 sebrandon1 commented Jan 16, 2026

Summary

  • Update golangci-lint from v1.54.2 to v2.0.2
  • Update module path to use /v2/ prefix
  • Add .golangci.yml with v2 version declaration

Changes Made

  • Makefile: Updated version variable and module path
  • .golangci.yml: Created with v2 version declaration

Test plan

  • CI linting passes with golangci-lint v2
  • No new linting errors introduced

Tracking: redhat-best-practices-for-k8s/telco-bot#49

Summary by CodeRabbit

  • Chores
    • Updated linting configuration to the newer linter configuration format and increased linting timeout.
    • Bumped golangci-lint to v2.11.4 and adjusted installation path to match the v2 tool.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 16, 2026

Walkthrough

Adds a new GolangCI-Lint configuration file (.golangci.yml) and updates the Makefile to install and reference golangci-lint v2 (version bumped to v2.11.4 and module path updated to the v2 import path).

Changes

Cohort / File(s) Summary
New Linter Configuration
./.golangci.yml
Added GolangCI-Lint config with version: "2" and run.timeout: 5m.
Build Tooling
Makefile
Bumped GOLANGCI_LINT_VERSION from v1.54.2v2.11.4; updated go install module path to github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${GOLANGCI_LINT_VERSION} in the prereqs recipe.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Microshift Test Compatibility ❓ Inconclusive Cannot verify new Ginkgo e2e tests without access to the actual PR changes in the repository. Provide the git diff output, list of modified/added files, or direct access to the PR changes to analyze for new Ginkgo test declarations and MicroShift-incompatible APIs.
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
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.
Stable And Deterministic Test Names ✅ Passed PR contains only configuration changes (.golangci.yml and Makefile); no Ginkgo test files were modified.
Test Structure And Quality ✅ Passed PR exclusively upgrades golangci-lint from v1 to v2 with configuration changes; no test code modifications are included, making the Ginkgo test quality check inapplicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The custom check for Single Node OpenShift (SNO) test compatibility is not applicable to this pull request. This PR exclusively upgrades golangci-lint from v1 to v2 and modifies only configuration files (.golangci.yml and Makefile). No new Ginkgo e2e tests are being added.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only build and linting configuration files (.golangci.yml and Makefile) to upgrade golangci-lint from v1 to v2. No deployment manifests, operator code, controllers, or scheduling resources are modified.
Ote Binary Stdout Contract ✅ Passed Pull request modifies only build configuration files (.golangci.yml and Makefile) with no changes to process-level Go code that could write to stdout.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR does not add any new Ginkgo e2e tests. Changes are limited to configuration files (.golangci.yml and Makefile updates).
Title check ✅ Passed The title accurately summarizes the primary change: upgrading golangci-lint from v1.54.2 to v2.11.4, matching both the Makefile and .golangci.yml updates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Jan 16, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: sebrandon1
Once this PR has been reviewed and has the lgtm label, please assign knobunc for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@Makefile`:
- Line 423: The Makefile pins GOLANGCI_LINT_VERSION = v2.0.2 but hack/lint.sh
still sets VERSION=v1.54.2, causing inconsistent lint runs; update the VERSION
variable in hack/lint.sh from v1.54.2 to v2.0.2 so the script pulls the same
golangci-lint image as the Makefile (look for the VERSION= assignment near the
top of hack/lint.sh and change it to VERSION=v2.0.2).
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 1223118 and a18219c.

📒 Files selected for processing (2)
  • .golangci.yml
  • Makefile
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • Makefile
🔇 Additional comments (2)
Makefile (1)

432-432: Verify prereqs still finds the v2 binary in your environments.

Line 432 still checks $(shell go env GOPATH)/bin; if CI or local dev uses GOBIN, confirm the guard and PATH align so the v2 binary is discovered and not reinstalled unnecessarily.

.golangci.yml (1)

1-3: Config is minimal and aligned with v2; ensure CI runs golangci-lint ≥ 2.0.

Line 1 introduces version: "2", which v1 will reject; please verify all lint invocations use the v2 binary.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment thread Makefile Outdated

CILIUM_EBPF_VERSION := v0.18.0
GOLANGCI_LINT_VERSION = v1.54.2
GOLANGCI_LINT_VERSION = v2.0.2
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for remaining v1 references and v1.54.2 version pins
echo "=== Searching for v1.54.2 references ==="
rg -n 'v1\.54\.2'

echo "=== Searching for v1 binary path references ==="
rg -n 'golangci-lint/cmd/golangci-lint'

echo "=== Checking Makefile for golangci-lint references ==="
rg -n -A2 -B2 'GOLANGCI_LINT' Makefile

echo "=== Looking for CI scripts that may reference golangci-lint ==="
fd -t f '(lint|ci|github)' hack/ | head -20

Repository: openshift/ingress-node-firewall

Length of output: 1056


🏁 Script executed:

#!/bin/bash
# Check hack/lint.sh to understand the version impact
echo "=== Content of hack/lint.sh ==="
cat -n hack/lint.sh

echo ""
echo "=== Search for references to hack/lint.sh in CI workflows ==="
fd -t f '\.(yml|yaml)' .github/workflows/ 2>/dev/null | while read f; do
  if rg -l 'hack/lint' "$f" 2>/dev/null; then
    echo "Found in: $f"
    rg -n 'hack/lint' "$f"
  fi
done

echo ""
echo "=== Check if hack/lint.sh is referenced elsewhere ==="
rg -l 'hack/lint'

Repository: openshift/ingress-node-firewall

Length of output: 813


🏁 Script executed:

#!/bin/bash
# Check if hack/lint.sh is actively maintained/referenced in Makefile targets
echo "=== Check Makefile for hack/lint.sh usage ==="
rg -n 'hack/lint' Makefile

echo ""
echo "=== Check for any documentation/comments about hack/lint.sh usage ==="
rg -B2 -A2 'hack/lint' README* 2>/dev/null || echo "No README references found"

echo ""
echo "=== Check if hack/lint.sh target exists in Makefile ==="
rg -n '^lint:' Makefile

Repository: openshift/ingress-node-firewall

Length of output: 379


Update hack/lint.sh to use golangci-lint v2.0.2 to match Makefile pin.

The v1.54.2 container image reference at hack/lint.sh:6 conflicts with the v2.0.2 version pinned in Makefile:423. Since the make lint target calls hack/lint.sh, developers using that command get inconsistent linting behavior. Update VERSION=v1.54.2 to VERSION=v2.0.2 in hack/lint.sh.

🤖 Prompt for AI Agents
In `@Makefile` at line 423, The Makefile pins GOLANGCI_LINT_VERSION = v2.0.2 but
hack/lint.sh still sets VERSION=v1.54.2, causing inconsistent lint runs; update
the VERSION variable in hack/lint.sh from v1.54.2 to v2.0.2 so the script pulls
the same golangci-lint image as the Makefile (look for the VERSION= assignment
near the top of hack/lint.sh and change it to VERSION=v2.0.2).

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
Makefile (1)

423-432: ⚠️ Potential issue | 🟠 Major

Align lint execution with the v2.11.4 upgrade.

Makefile now pins/install-paths golangci-lint v2, but make lint still calls hack/lint.sh, which remains pinned to v1.54.2 (Line 6 in hack/lint.sh). This keeps lint behavior inconsistent with the upgrade objective.

#!/bin/bash
# Verify golangci-lint version consistency between Makefile and lint script
rg -n 'GOLANGCI_LINT_VERSION|golangci-lint/v2/cmd/golangci-lint|^\s*lint:' Makefile
rg -n 'VERSION=|golangci/golangci-lint:' hack/lint.sh

Expected: hack/lint.sh and Makefile should both reference the same golangci-lint v2 version.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` around lines 423 - 432, Makefile now installs golangci-lint using
GOLANGCI_LINT_VERSION (v2.11.4) but hack/lint.sh still pins v1.54.2; update
hack/lint.sh to reference the same v2 version or read GOLANGCI_LINT_VERSION
(e.g., set VERSION to v2.11.4 or switch install lines from
github.com/golangci/golangci-lint@v1.54.2 to
github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${GOLANGCI_LINT_VERSION}),
and ensure the Makefile lint target invokes the prereqs or otherwise uses the
same variable so both the Makefile (GOLANGCI_LINT_VERSION) and hack/lint.sh are
consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@Makefile`:
- Around line 423-432: Makefile now installs golangci-lint using
GOLANGCI_LINT_VERSION (v2.11.4) but hack/lint.sh still pins v1.54.2; update
hack/lint.sh to reference the same v2 version or read GOLANGCI_LINT_VERSION
(e.g., set VERSION to v2.11.4 or switch install lines from
github.com/golangci/golangci-lint@v1.54.2 to
github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${GOLANGCI_LINT_VERSION}),
and ensure the Makefile lint target invokes the prereqs or otherwise uses the
same variable so both the Makefile (GOLANGCI_LINT_VERSION) and hack/lint.sh are
consistent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f4d9e5ee-02ca-4d8e-9f40-2d89fef88127

📥 Commits

Reviewing files that changed from the base of the PR and between a18219c and baf78b8.

📒 Files selected for processing (1)
  • Makefile

- Update GOLANGCI_LINT_VERSION from v1.54.2 to v2.0.2
- Update module path to use /v2/ prefix
- Add .golangci.yml with version: "2" declaration for v2 compatibility

Tracking: redhat-best-practices-for-k8s/telco-bot#49
@sebrandon1 sebrandon1 force-pushed the golangci-lint-v2-upgrade branch from baf78b8 to 3d1c1a6 Compare April 30, 2026 19:28
@sebrandon1 sebrandon1 changed the title Upgrade golangci-lint from v1 to v2 Upgrade golangci-lint from v1.54.2 to v2.11.4 Apr 30, 2026
@sebrandon1 sebrandon1 changed the title Upgrade golangci-lint from v1.54.2 to v2.11.4 CNF-23398: Upgrade golangci-lint from v1.54.2 to v2.11.4 Apr 30, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 30, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 30, 2026

@sebrandon1: This pull request references CNF-23398 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Update golangci-lint from v1.54.2 to v2.0.2
  • Update module path to use /v2/ prefix
  • Add .golangci.yml with v2 version declaration

Changes Made

  • Makefile: Updated version variable and module path
  • .golangci.yml: Created with v2 version declaration

Test plan

  • CI linting passes with golangci-lint v2
  • No new linting errors introduced

Tracking: redhat-best-practices-for-k8s/telco-bot#49

Summary by CodeRabbit

  • Chores
  • Updated linting configuration to the newer linter configuration format and increased linting timeout.
  • Bumped golangci-lint to v2.11.4 and adjusted installation path to match the v2 tool.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 30, 2026

@sebrandon1: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/unit-test 3d1c1a6 link true /test unit-test

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants