Update Golang CI Lint to the latest version (#113)

This change updates Golang CI Lint to the latest version and fixes new
linter errors that came along with the update.

These changes were split out of #112 and are required to update the Go
version.
This commit is contained in:
Philip Laine
2026-02-27 19:07:58 +01:00
committed by GitHub
parent de74776007
commit 8ec7c8ded8
8 changed files with 61 additions and 50 deletions
+3 -5
View File
@@ -10,14 +10,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Clone the code - name: Clone the code
uses: actions/checkout@v4 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0
with: with:
go-version-file: go.mod go-version-file: go.mod
- name: Run linter - name: Run linter
uses: golangci/golangci-lint-action@v6 uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 #v9.2.0
with:
version: v1.63.4
+30 -24
View File
@@ -1,33 +1,15 @@
version: "2"
run: run:
timeout: 5m
allow-parallel-runners: true allow-parallel-runners: true
issues:
# don't skip warning about doc comments
# don't exclude the default set of lint
exclude-use-default: false
# restore some of the defaults
# (fill in the rest as needed)
exclude-rules:
- path: "api/*"
linters:
- lll
- path: "internal/*"
linters:
- dupl
- lll
linters: linters:
disable-all: true default: none
enable: enable:
- copyloopvar
- dupl - dupl
- errcheck - errcheck
- copyloopvar
- ginkgolinter - ginkgolinter
- goconst - goconst
- gocyclo - gocyclo
- gofmt
- goimports
- gosimple
- govet - govet
- ineffassign - ineffassign
- lll - lll
@@ -36,12 +18,36 @@ linters:
- prealloc - prealloc
- revive - revive
- staticcheck - staticcheck
- typecheck
- unconvert - unconvert
- unparam - unparam
- unused - unused
settings:
linters-settings:
revive: revive:
rules: rules:
- name: comment-spacings - name: comment-spacings
staticcheck:
checks: ["all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022", "-QF1008"]
exclusions:
generated: lax
rules:
- linters:
- lll
path: api/*
- linters:
- dupl
- lll
path: internal/*
paths:
- third_party$
- builtin$
- examples$
formatters:
enable:
- gofmt
- goimports
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
+1 -2
View File
@@ -42,7 +42,6 @@ import (
netbirdiov1 "github.com/netbirdio/kubernetes-operator/api/v1" netbirdiov1 "github.com/netbirdio/kubernetes-operator/api/v1"
"github.com/netbirdio/kubernetes-operator/internal/controller" "github.com/netbirdio/kubernetes-operator/internal/controller"
webhookk8siov1 "github.com/netbirdio/kubernetes-operator/internal/webhook/v1"
webhooknetbirdiov1 "github.com/netbirdio/kubernetes-operator/internal/webhook/v1" webhooknetbirdiov1 "github.com/netbirdio/kubernetes-operator/internal/webhook/v1"
// +kubebuilder:scaffold:imports // +kubebuilder:scaffold:imports
) )
@@ -215,7 +214,7 @@ func main() {
} }
if enableWebhooks { if enableWebhooks {
if err = webhookk8siov1.SetupPodWebhookWithManager(mgr, managementURL, clientImage); err != nil { if err = webhooknetbirdiov1.SetupPodWebhookWithManager(mgr, managementURL, clientImage); err != nil {
setupLog.Error(err, "unable to create webhook", "webhook", "Pod") setupLog.Error(err, "unable to create webhook", "webhook", "Pod")
os.Exit(1) os.Exit(1)
} }
+1 -1
View File
@@ -31,7 +31,7 @@ type NBPolicyReconciler struct {
} }
var ( var (
errUnknownProtocol = fmt.Errorf("Unknown protocol") errUnknownProtocol = fmt.Errorf("unknown protocol")
errKubernetesAPI = fmt.Errorf("kubernetes API error") errKubernetesAPI = fmt.Errorf("kubernetes API error")
errNetBirdAPI = fmt.Errorf("netbird API error") errNetBirdAPI = fmt.Errorf("netbird API error")
errInvalidValue = fmt.Errorf("invalid value") errInvalidValue = fmt.Errorf("invalid value")
@@ -222,7 +222,8 @@ var _ = Describe("NBResource Controller", func() {
resourceUpdated := false resourceUpdated := false
mux.HandleFunc("/api/networks/test/resources/test", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/networks/test/resources/test", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodGet { switch r.Method {
case http.MethodGet:
resp := api.NetworkResource{ resp := api.NetworkResource{
Address: nbresource.Spec.Address, Address: nbresource.Spec.Address,
Description: &networkDescription, Description: &networkDescription,
@@ -245,7 +246,7 @@ var _ = Describe("NBResource Controller", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = w.Write(bs) _, err = w.Write(bs)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodPut { case http.MethodPut:
resourceUpdated = true resourceUpdated = true
bs, err := io.ReadAll(r.Body) bs, err := io.ReadAll(r.Body)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -172,7 +172,8 @@ var _ = Describe("NBRoutingPeer Controller", func() {
networkCreated := false networkCreated := false
mux.HandleFunc("/api/networks", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/networks", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodPost { switch r.Method {
case http.MethodPost:
networkCreated = true networkCreated = true
var req api.PostApiNetworksJSONRequestBody var req api.PostApiNetworksJSONRequestBody
bs, err := io.ReadAll(r.Body) bs, err := io.ReadAll(r.Body)
@@ -190,7 +191,7 @@ var _ = Describe("NBRoutingPeer Controller", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = w.Write(bs) _, err = w.Write(bs)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodGet { case http.MethodGet:
_, err := w.Write([]byte("[]")) _, err := w.Write([]byte("[]"))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
@@ -276,7 +277,8 @@ var _ = Describe("NBRoutingPeer Controller", func() {
routerCreated := false routerCreated := false
mux.HandleFunc("/api/networks/test/routers", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/networks/test/routers", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodPost { switch r.Method {
case http.MethodPost:
routerCreated = true routerCreated = true
var req api.PostApiNetworksNetworkIdRoutersJSONRequestBody var req api.PostApiNetworksNetworkIdRoutersJSONRequestBody
bs, err := io.ReadAll(r.Body) bs, err := io.ReadAll(r.Body)
@@ -299,7 +301,7 @@ var _ = Describe("NBRoutingPeer Controller", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = w.Write(bs) _, err = w.Write(bs)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodGet { case http.MethodGet:
resp := []api.NetworkRouter{} resp := []api.NetworkRouter{}
bs, err := json.Marshal(resp) bs, err := json.Marshal(resp)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -555,7 +557,8 @@ var _ = Describe("NBRoutingPeer Controller", func() {
setupKeyDeleted := false setupKeyDeleted := false
mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodGet { switch r.Method {
case http.MethodGet:
resp := api.SetupKey{ resp := api.SetupKey{
Id: "skid", Id: "skid",
Revoked: false, Revoked: false,
@@ -564,7 +567,7 @@ var _ = Describe("NBRoutingPeer Controller", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = w.Write(bs) _, err = w.Write(bs)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodDelete { case http.MethodDelete:
setupKeyDeleted = true setupKeyDeleted = true
_, err := w.Write([]byte(`{}`)) _, err := w.Write([]byte(`{}`))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -628,7 +631,8 @@ var _ = Describe("NBRoutingPeer Controller", func() {
setupKeyDeleted := false setupKeyDeleted := false
mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodGet { switch r.Method {
case http.MethodGet:
resp := api.SetupKey{ resp := api.SetupKey{
Id: "skid", Id: "skid",
Revoked: true, Revoked: true,
@@ -637,7 +641,7 @@ var _ = Describe("NBRoutingPeer Controller", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = w.Write(bs) _, err = w.Write(bs)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodDelete { case http.MethodDelete:
setupKeyDeleted = true setupKeyDeleted = true
_, err := w.Write([]byte(`{}`)) _, err := w.Write([]byte(`{}`))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -712,11 +716,12 @@ var _ = Describe("NBRoutingPeer Controller", func() {
setupKeyDeleted := false setupKeyDeleted := false
mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodGet { switch r.Method {
case http.MethodGet:
w.WriteHeader(404) w.WriteHeader(404)
_, err := w.Write([]byte(`{"message": "setup-key skid not found", "code": 404}`)) _, err := w.Write([]byte(`{"message": "setup-key skid not found", "code": 404}`))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodDelete { case http.MethodDelete:
setupKeyDeleted = true setupKeyDeleted = true
_, err := w.Write([]byte(`{}`)) _, err := w.Write([]byte(`{}`))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -761,7 +766,8 @@ var _ = Describe("NBRoutingPeer Controller", func() {
setupKeyDeleted := false setupKeyDeleted := false
mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover() defer GinkgoRecover()
if r.Method == http.MethodGet { switch r.Method {
case http.MethodGet:
resp := api.SetupKey{ resp := api.SetupKey{
Id: "skid", Id: "skid",
Revoked: false, Revoked: false,
@@ -770,7 +776,7 @@ var _ = Describe("NBRoutingPeer Controller", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = w.Write(bs) _, err = w.Write(bs)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} else if r.Method == http.MethodDelete { case http.MethodDelete:
setupKeyDeleted = true setupKeyDeleted = true
_, err := w.Write([]byte(`{}`)) _, err := w.Write([]byte(`{}`))
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -194,6 +194,7 @@ func (r *ServiceReconciler) exposeService(ctx context.Context, req ctrl.Request,
func (r *ServiceReconciler) reconcileNBResource(nbResource *netbirdiov1.NBResource, req ctrl.Request, svc corev1.Service, routingPeer netbirdiov1.NBRoutingPeer, logger logr.Logger) error { func (r *ServiceReconciler) reconcileNBResource(nbResource *netbirdiov1.NBResource, req ctrl.Request, svc corev1.Service, routingPeer netbirdiov1.NBRoutingPeer, logger logr.Logger) error {
groups := []string{fmt.Sprintf("%s-%s-%s", r.ClusterName, req.Namespace, req.Name)} groups := []string{fmt.Sprintf("%s-%s-%s", r.ClusterName, req.Namespace, req.Name)}
if v, ok := svc.Annotations[serviceGroupsAnnotation]; ok { if v, ok := svc.Annotations[serviceGroupsAnnotation]; ok {
//nolint:prealloc
groups = nil groups = nil
for _, g := range strings.Split(v, ",") { for _, g := range strings.Split(v, ",") {
groups = append(groups, strings.TrimSpace(g)) groups = append(groups, strings.TrimSpace(g))
+2 -2
View File
@@ -22,7 +22,7 @@ import (
"os/exec" "os/exec"
"strings" "strings"
. "github.com/onsi/ginkgo/v2" //nolint:golint,revive . "github.com/onsi/ginkgo/v2" //nolint:staticcheck
) )
const ( const (
@@ -169,6 +169,6 @@ func GetProjectDir() (string, error) {
if err != nil { if err != nil {
return wd, err return wd, err
} }
wd = strings.Replace(wd, "/test/e2e", "", -1) wd = strings.ReplaceAll(wd, "/test/e2e", "")
return wd, nil return wd, nil
} }