diff --git a/.github/actions/mkdocs/Dockerfile b/.github/actions/mkdocs/Dockerfile index 378128978f..f00584d321 100644 --- a/.github/actions/mkdocs/Dockerfile +++ b/.github/actions/mkdocs/Dockerfile @@ -1,4 +1,4 @@ -FROM squidfunk/mkdocs-material:9.4.5 +FROM squidfunk/mkdocs-material:9.4.5 COPY action.sh /action.sh diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5ad21ca954..69d1ba1615 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,6 +9,10 @@ updates: - "area/dependency" - "release-note-none" - "ok-to-test" + groups: + all: + update-types: + - "patch" - package-ecosystem: "github-actions" directory: "/" schedule: @@ -17,6 +21,11 @@ updates: - "area/dependency" - "release-note-none" - "ok-to-test" + groups: + all: + update-types: + - "minor" + - "patch" - package-ecosystem: "docker" directory: "/images" schedule: @@ -25,3 +34,8 @@ updates: - "area/dependency" - "release-note-none" - "ok-to-test" + groups: + actions: + update-types: + - "minor" + - "patch" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index edb7c1e5db..2665655786 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -78,10 +78,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - + - name: Get go version run: echo "GOLANG_VERSION=$(cat GOLANG_VERSION)" >> $GITHUB_ENV - + - name: Set up Go id: go uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 @@ -100,13 +100,13 @@ jobs: golangversion: ${{ steps.golangversion.outputs.version }} if: | (needs.changes.outputs.go == 'true') || (needs.changes.outputs.charts == 'true') || (needs.changes.outputs.baseimage == 'true') - + env: PLATFORMS: linux/amd64 steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - + - name: Get go version id: golangversion run: | @@ -136,14 +136,14 @@ jobs: curl -LO https://dl.k8s.io/release/v1.27.3/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl - + - name: Build NGINX Base image if: | needs.changes.outputs.baseimage == 'true' run: | export TAG=$(cat images/nginx-1.25/TAG) cd images/nginx-1.25/rootfs && docker buildx build --platform=${{ env.PLATFORMS }} --load -t registry.k8s.io/ingress-nginx/nginx-1.25:${TAG} . - + - name: Build images env: TAG: 1.0.0-dev diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index f6929e73c4..b5ad3c93c0 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -2,10 +2,9 @@ name: golangci-lint on: pull_request: - branches: - - "*" paths: - '**/*.go' + - '.github/workflows/golangci-lint.yml' permissions: contents: read @@ -17,18 +16,18 @@ jobs: steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - + - name: Get go version run: echo "GOLANG_VERSION=$(cat GOLANG_VERSION)" >> $GITHUB_ENV - + - name: Set up Go id: go uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ env.GOLANG_VERSION }} check-latest: true - + - name: golangci-lint uses: golangci/golangci-lint-action@3cfe3a4abbb849e10058ce4af15d205b6da42804 # v4.0.0 with: - version: v1.55.2 + version: v1.56 diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index e46c1b4bd3..5effdee827 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -69,7 +69,7 @@ jobs: - 'images/opentelemetry/**' nginx125: - 'images/nginx-1.25/TAG' - + #### TODO: Make the below jobs 'less dumb' and use the job name as parameter (the github.job context does not work here) cfssl: needs: changes @@ -89,7 +89,6 @@ jobs: name: custom-error-pages secrets: inherit - e2e-test-echo: needs: changes if: | @@ -214,5 +213,3 @@ jobs: run: | export TAG=$(cat images/nginx-1.25/TAG) cd images/nginx-1.25/rootfs && docker buildx build --platform=${{ env.PLATFORMS }} --push -t ingressnginx/nginx-1.25:${TAG} . - - diff --git a/.github/workflows/plugin.yaml b/.github/workflows/plugin.yaml index fe99b2444c..6f4804d6f8 100644 --- a/.github/workflows/plugin.yaml +++ b/.github/workflows/plugin.yaml @@ -33,7 +33,7 @@ jobs: args: release --snapshot --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + - name: Run GoReleaser if: ${{ startsWith(github.ref, 'refs/tags/') }} uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 diff --git a/.golangci.yml b/.golangci.yml index 5da8f0399f..0cf49e6af1 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -200,9 +200,7 @@ linters-settings: - stringConcatSimplify - stringsCompare - switchTrue - - timeCmpSimplify - timeExprSimplify - - todoCommentWithoutDetail - tooManyResultsChecker - typeAssertChain - typeDefFirst diff --git a/cmd/dbg/main.go b/cmd/dbg/main.go index b63bcf5fef..ab68001c94 100644 --- a/cmd/dbg/main.go +++ b/cmd/dbg/main.go @@ -47,7 +47,7 @@ func main() { backendsAllCmd := &cobra.Command{ Use: "all", Short: "Output the all dynamic backend information as a JSON array", - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { backendsAll() }, } @@ -56,7 +56,7 @@ func main() { backendsListCmd := &cobra.Command{ Use: "list", Short: "Output a newline-separated list of the backend names", - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { backendsList() }, } @@ -66,7 +66,7 @@ func main() { Use: "get [backend name]", Short: "Output the backend information only for the backend that has this name", Args: cobra.ExactArgs(1), - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, args []string) { backendsGet(args[0]) }, } @@ -81,7 +81,7 @@ func main() { Use: "get [hostname]", Short: "Get the dynamically-loaded certificate information for the given hostname", Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { certGet(args[0]) return nil }, @@ -93,7 +93,7 @@ func main() { generalCmd := &cobra.Command{ Use: "general", Short: "Output the general dynamic lua state", - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { general() }, } @@ -102,7 +102,7 @@ func main() { confCmd := &cobra.Command{ Use: "conf", Short: "Dump the contents of /etc/nginx/nginx.conf", - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { readNginxConf() }, } diff --git a/cmd/nginx/main.go b/cmd/nginx/main.go index 1d30091ef5..5ab54aa938 100644 --- a/cmd/nginx/main.go +++ b/cmd/nginx/main.go @@ -74,7 +74,7 @@ func main() { handleFatalInitError(err) } - if len(conf.DefaultService) > 0 { + if conf.DefaultService != "" { err := checkService(conf.DefaultService, kubeClient) if err != nil { klog.Fatal(err) @@ -83,7 +83,7 @@ func main() { klog.InfoS("Valid default backend", "service", conf.DefaultService) } - if len(conf.PublishService) > 0 { + if conf.PublishService != "" { err := checkService(conf.PublishService, kubeClient) if err != nil { klog.Fatal(err) @@ -235,7 +235,6 @@ func createApiserverClient(apiserverHost, rootCAFile, kubeConfig string) (*kuber retries++ return false, nil }) - // err is returned in case of timeout in the exponential backoff (ErrWaitTimeout) if err != nil { return nil, lastErr diff --git a/cmd/plugin/commands/backends/backends.go b/cmd/plugin/commands/backends/backends.go index ff44fd9c21..e7bd421478 100644 --- a/cmd/plugin/commands/backends/backends.go +++ b/cmd/plugin/commands/backends/backends.go @@ -34,7 +34,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "backends", Short: "Inspect the dynamic backend information of an ingress-nginx instance", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { backend, err := cmd.Flags().GetString("backend") if err != nil { return err diff --git a/cmd/plugin/commands/certs/certs.go b/cmd/plugin/commands/certs/certs.go index ee27cf1b12..4a7fee1cf1 100644 --- a/cmd/plugin/commands/certs/certs.go +++ b/cmd/plugin/commands/certs/certs.go @@ -35,7 +35,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "certs", Short: "Output the certificate data stored in an ingress-nginx pod", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { host, err := cmd.Flags().GetString("host") if err != nil { return err diff --git a/cmd/plugin/commands/conf/conf.go b/cmd/plugin/commands/conf/conf.go index 090fb40bb5..5821b11f1e 100644 --- a/cmd/plugin/commands/conf/conf.go +++ b/cmd/plugin/commands/conf/conf.go @@ -36,7 +36,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "conf", Short: "Inspect the generated nginx.conf", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { host, err := cmd.Flags().GetString("host") if err != nil { return err diff --git a/cmd/plugin/commands/exec/exec.go b/cmd/plugin/commands/exec/exec.go index 8e853c5344..a91bdb5941 100644 --- a/cmd/plugin/commands/exec/exec.go +++ b/cmd/plugin/commands/exec/exec.go @@ -34,7 +34,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "exec", Short: "Execute a command inside an ingress-nginx pod", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { util.PrintError(exec(flags, *pod, *deployment, *selector, *container, args, opts)) return nil }, diff --git a/cmd/plugin/commands/general/general.go b/cmd/plugin/commands/general/general.go index cea4035625..d7b3b34f99 100644 --- a/cmd/plugin/commands/general/general.go +++ b/cmd/plugin/commands/general/general.go @@ -34,7 +34,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "general", Short: "Inspect the other dynamic ingress-nginx information", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { util.PrintError(general(flags, *pod, *deployment, *selector, *container)) return nil }, diff --git a/cmd/plugin/commands/info/info.go b/cmd/plugin/commands/info/info.go index 246046c3ae..e0fd3aaec5 100644 --- a/cmd/plugin/commands/info/info.go +++ b/cmd/plugin/commands/info/info.go @@ -32,7 +32,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "info", Short: "Show information about the ingress-nginx service", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { service, err := cmd.Flags().GetString("service") if err != nil { return err diff --git a/cmd/plugin/commands/ingresses/ingresses.go b/cmd/plugin/commands/ingresses/ingresses.go index 8a25418db1..7cb90a5708 100644 --- a/cmd/plugin/commands/ingresses/ingresses.go +++ b/cmd/plugin/commands/ingresses/ingresses.go @@ -36,7 +36,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { Use: "ingresses", Aliases: []string{"ingress", "ing"}, Short: "Provide a short summary of all of the ingress definitions", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, _ []string) error { host, err := cmd.Flags().GetString("host") if err != nil { return err @@ -139,14 +139,14 @@ func getIngressRows(ingresses *[]networking.Ingress) []ingressRow { ing := &(*ingresses)[i] address := "" for _, lbIng := range ing.Status.LoadBalancer.Ingress { - if len(lbIng.IP) > 0 { + if lbIng.IP != "" { address = address + lbIng.IP + "," } - if len(lbIng.Hostname) > 0 { + if lbIng.Hostname != "" { address = address + lbIng.Hostname + "," } } - if len(address) > 0 { + if address != "" { address = address[:len(address)-1] } @@ -166,7 +166,7 @@ func getIngressRows(ingresses *[]networking.Ingress) []ingressRow { } // Handle catch-all ingress - if len(ing.Spec.Rules) == 0 && len(defaultBackendService) > 0 { + if len(ing.Spec.Rules) == 0 && defaultBackendService != "" { row := ingressRow{ Namespace: ing.Namespace, IngressName: ing.Name, diff --git a/cmd/plugin/commands/lint/main.go b/cmd/plugin/commands/lint/main.go index 847fe86c9a..69ab984f56 100644 --- a/cmd/plugin/commands/lint/main.go +++ b/cmd/plugin/commands/lint/main.go @@ -38,7 +38,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "lint", Short: "Inspect kubernetes resources for possible issues", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { err := opts.Validate() if err != nil { return err @@ -73,7 +73,7 @@ func createSubcommand(flags *genericclioptions.ConfigFlags, names []string, shor Use: names[0], Aliases: names[1:], Short: short, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { err := opts.Validate() if err != nil { return err diff --git a/cmd/plugin/commands/logs/logs.go b/cmd/plugin/commands/logs/logs.go index 22068d469e..d9f6e7bd88 100644 --- a/cmd/plugin/commands/logs/logs.go +++ b/cmd/plugin/commands/logs/logs.go @@ -36,7 +36,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "logs", Short: "Get the kubernetes logs for an ingress-nginx pod", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { util.PrintError(logs(flags, *pod, *deployment, *selector, *container, o)) return nil }, diff --git a/cmd/plugin/commands/ssh/ssh.go b/cmd/plugin/commands/ssh/ssh.go index a4762d781f..c9631d10b2 100644 --- a/cmd/plugin/commands/ssh/ssh.go +++ b/cmd/plugin/commands/ssh/ssh.go @@ -32,7 +32,7 @@ func CreateCommand(flags *genericclioptions.ConfigFlags) *cobra.Command { cmd := &cobra.Command{ Use: "ssh", Short: "ssh into a running ingress-nginx pod", - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { util.PrintError(ssh(flags, *pod, *deployment, *selector, *container)) return nil }, diff --git a/images/opentelemetry/rootfs/init_module.go b/images/opentelemetry/rootfs/init_module.go index bebec728fa..5d285052d6 100644 --- a/images/opentelemetry/rootfs/init_module.go +++ b/images/opentelemetry/rootfs/init_module.go @@ -74,7 +74,6 @@ func run() error { return nil }) - if err != nil { return fmt.Errorf("failed to copy files: %w", err) } diff --git a/internal/ingress/annotations/authreq/main.go b/internal/ingress/annotations/authreq/main.go index c66b0ed470..ad38c36b12 100644 --- a/internal/ingress/annotations/authreq/main.go +++ b/internal/ingress/annotations/authreq/main.go @@ -416,7 +416,7 @@ func (a authReq) Parse(ing *networking.Ingress) (interface{}, error) { harr := strings.Split(hstr, ",") for _, header := range harr { header = strings.TrimSpace(header) - if len(header) > 0 { + if header != "" { if !ValidHeader(header) { return nil, ing_errors.NewLocationDenied("invalid headers list") } @@ -505,7 +505,7 @@ func ParseStringToCacheDurations(input string) ([]string, error) { arr := strings.Split(input, ",") for _, duration := range arr { duration = strings.TrimSpace(duration) - if len(duration) > 0 { + if duration != "" { if !ValidCacheDuration(duration) { authCacheDuration = []string{DefaultCacheDuration} return authCacheDuration, ing_errors.NewLocationDenied(fmt.Sprintf("invalid cache duration: %s", duration)) diff --git a/internal/ingress/annotations/canary/main.go b/internal/ingress/annotations/canary/main.go index be57616753..ccfe142618 100644 --- a/internal/ingress/annotations/canary/main.go +++ b/internal/ingress/annotations/canary/main.go @@ -177,8 +177,8 @@ func (c canary) Parse(ing *networking.Ingress) (interface{}, error) { config.Cookie = "" } - if !config.Enabled && (config.Weight > 0 || len(config.Header) > 0 || len(config.HeaderValue) > 0 || len(config.Cookie) > 0 || - len(config.HeaderPattern) > 0) { + if !config.Enabled && (config.Weight > 0 || config.Header != "" || config.HeaderValue != "" || config.Cookie != "" || + config.HeaderPattern != "") { return nil, errors.NewInvalidAnnotationConfiguration(canaryAnnotation, "configured but not enabled") } diff --git a/internal/ingress/annotations/parser/validators_test.go b/internal/ingress/annotations/parser/validators_test.go index 8523232a2e..ed84494528 100644 --- a/internal/ingress/annotations/parser/validators_test.go +++ b/internal/ingress/annotations/parser/validators_test.go @@ -104,7 +104,7 @@ func Test_checkAnnotation(t *testing.T) { }, fields: AnnotationFields{ "otherannotation": AnnotationConfig{ - Validator: func(value string) error { return nil }, + Validator: func(_ string) error { return nil }, }, }, }, diff --git a/internal/ingress/controller/checker_test.go b/internal/ingress/controller/checker_test.go index 5fb6b09fdd..a8a0b67ada 100644 --- a/internal/ingress/controller/checker_test.go +++ b/internal/ingress/controller/checker_test.go @@ -53,7 +53,7 @@ func TestNginxCheck(t *testing.T) { server := &httptest.Server{ Listener: listener, Config: &http.Server{ - Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + Handler: http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "ok") }), diff --git a/internal/ingress/controller/controller_test.go b/internal/ingress/controller/controller_test.go index c07fcfadf2..e257dd1f1c 100644 --- a/internal/ingress/controller/controller_test.go +++ b/internal/ingress/controller/controller_test.go @@ -170,7 +170,7 @@ func (fakeTemplate) Write(conf *ngx_config.TemplateConfig) ([]byte, error) { func TestCheckIngress(t *testing.T) { defer func() { - err := filepath.Walk(os.TempDir(), func(path string, info os.FileInfo, err error) error { + err := filepath.Walk(os.TempDir(), func(path string, info os.FileInfo, _ error) error { if info.IsDir() && os.TempDir() != path { return filepath.SkipDir } @@ -1573,7 +1573,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 1 { t.Errorf("servers count should be 1, got %d", len(servers)) return @@ -1640,7 +1640,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 1 { t.Errorf("servers count should be 1, got %d", len(servers)) return @@ -1700,7 +1700,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 1 { t.Errorf("servers count should be 1, got %d", len(servers)) return @@ -1799,7 +1799,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 2 { t.Errorf("servers count should be 2, got %d", len(servers)) return @@ -2059,7 +2059,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 2 { t.Errorf("servers count should be 2, got %d", len(servers)) return @@ -2190,7 +2190,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(ingresses []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 2 { t.Errorf("servers count should be 2, got %d", len(servers)) return @@ -2298,7 +2298,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(ingresses []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 2 { t.Errorf("servers count should be 2, got %d", len(servers)) return @@ -2367,7 +2367,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 2 { t.Errorf("servers count should be 1, got %d", len(servers)) return @@ -2437,7 +2437,7 @@ func TestGetBackendServers(t *testing.T) { }, }, }, - Validate: func(ingresses []*ingress.Ingress, upstreams []*ingress.Backend, servers []*ingress.Server) { + Validate: func(_ []*ingress.Ingress, _ []*ingress.Backend, servers []*ingress.Server) { if len(servers) != 2 { t.Errorf("servers count should be 2, got %d", len(servers)) return diff --git a/internal/ingress/controller/location.go b/internal/ingress/controller/location.go index 9776f8c87d..221c089c26 100644 --- a/internal/ingress/controller/location.go +++ b/internal/ingress/controller/location.go @@ -100,7 +100,7 @@ func normalizePrefixPath(path string) string { } func needsRewrite(location *ingress.Location) bool { - if len(location.Rewrite.Target) > 0 && location.Rewrite.Target != location.Path { + if location.Rewrite.Target != "" && location.Rewrite.Target != location.Path { return true } diff --git a/internal/ingress/controller/nginx.go b/internal/ingress/controller/nginx.go index 10aafc5718..1d385e5063 100644 --- a/internal/ingress/controller/nginx.go +++ b/internal/ingress/controller/nginx.go @@ -197,7 +197,6 @@ func NewNGINXController(config *Configuration, mc metric.Collector) *NGINXContro filesToWatch = append(filesToWatch, path) return nil }) - if err != nil { klog.Fatalf("Error creating file watchers: %v", err) } diff --git a/internal/ingress/controller/nginx_test.go b/internal/ingress/controller/nginx_test.go index c68b0b1883..27180e066d 100644 --- a/internal/ingress/controller/nginx_test.go +++ b/internal/ingress/controller/nginx_test.go @@ -391,7 +391,7 @@ func TestCleanTempNginxCfg(t *testing.T) { var files []string - err = filepath.Walk(os.TempDir(), func(path string, info os.FileInfo, err error) error { + err = filepath.Walk(os.TempDir(), func(path string, info os.FileInfo, _ error) error { if info.IsDir() && os.TempDir() != path { return filepath.SkipDir } diff --git a/internal/ingress/controller/status.go b/internal/ingress/controller/status.go index e061b2cb71..6bab7c2ada 100644 --- a/internal/ingress/controller/status.go +++ b/internal/ingress/controller/status.go @@ -59,7 +59,7 @@ func setupLeaderElection(config *leaderElectionConfig) { var stopCh chan struct{} callbacks := leaderelection.LeaderCallbacks{ - OnStartedLeading: func(ctx context.Context) { + OnStartedLeading: func(_ context.Context) { klog.V(2).InfoS("I am the new leader") stopCh = make(chan struct{}) diff --git a/internal/ingress/controller/store/store.go b/internal/ingress/controller/store/store.go index 4288785de6..284f532090 100644 --- a/internal/ingress/controller/store/store.go +++ b/internal/ingress/controller/store/store.go @@ -292,7 +292,7 @@ func New( // the memory consumption of nginx-ingress-controller explode. // In order to avoid that we filter out labels OWNER=TILLER. labelsTweakListOptionsFunc := func(options *metav1.ListOptions) { - if len(options.LabelSelector) > 0 { + if options.LabelSelector != "" { options.LabelSelector += ",OWNER!=TILLER" } else { options.LabelSelector = "OWNER!=TILLER" diff --git a/internal/ingress/controller/template/template.go b/internal/ingress/controller/template/template.go index f08eee4989..7cd6a06042 100644 --- a/internal/ingress/controller/template/template.go +++ b/internal/ingress/controller/template/template.go @@ -497,7 +497,7 @@ func buildResolvers(res, disableIpv6 interface{}) string { } func needsRewrite(location *ingress.Location) bool { - if len(location.Rewrite.Target) > 0 && location.Rewrite.Target != location.Path { + if location.Rewrite.Target != "" && location.Rewrite.Target != location.Path { return true } return false @@ -771,10 +771,10 @@ func buildProxyPass(_ string, b, loc interface{}) string { return defProxyPass } - if len(location.Rewrite.Target) > 0 { + if location.Rewrite.Target != "" { var xForwardedPrefix string - if len(location.XForwardedPrefix) > 0 { + if location.XForwardedPrefix != "" { xForwardedPrefix = fmt.Sprintf("%s X-Forwarded-Prefix %q;\n", proxySetHeader(location), location.XForwardedPrefix) } @@ -1738,7 +1738,7 @@ func buildCorsOriginRegex(corsOrigins []string) string { originsRegex := "if ($http_origin ~* (" for i, origin := range corsOrigins { originTrimmed := strings.TrimSpace(origin) - if len(originTrimmed) > 0 { + if originTrimmed != "" { builtOrigin := buildOriginRegex(originTrimmed) originsRegex += builtOrigin if i != len(corsOrigins)-1 { diff --git a/internal/ingress/metric/collectors/admission_test.go b/internal/ingress/metric/collectors/admission_test.go index 68208ad3eb..a23384a880 100644 --- a/internal/ingress/metric/collectors/admission_test.go +++ b/internal/ingress/metric/collectors/admission_test.go @@ -59,7 +59,7 @@ func TestAdmissionCounters(t *testing.T) { }{ { name: "should return 0 as values on a fresh initiated collector", - test: func(am *AdmissionCollector) { + test: func(_ *AdmissionCollector) { }, want: metadataFirst + ` nginx_ingress_controller_admission_config_size{controller_class="nginx",controller_namespace="default",controller_pod="pod"} 0 diff --git a/internal/ingress/metric/collectors/controller_test.go b/internal/ingress/metric/collectors/controller_test.go index 15735df426..53a0fd31af 100644 --- a/internal/ingress/metric/collectors/controller_test.go +++ b/internal/ingress/metric/collectors/controller_test.go @@ -42,7 +42,7 @@ func TestControllerCounters(t *testing.T) { }{ { name: "should return not increment in metrics if no operations are invoked", - test: func(cm *Controller) { + test: func(_ *Controller) { }, want: metadata + ` nginx_ingress_controller_config_last_reload_successful{controller_class="nginx",controller_namespace="default",controller_pod="pod"} 0 diff --git a/internal/ingress/metric/collectors/socket.go b/internal/ingress/metric/collectors/socket.go index a70024c57d..248f23f63e 100644 --- a/internal/ingress/metric/collectors/socket.go +++ b/internal/ingress/metric/collectors/socket.go @@ -329,7 +329,7 @@ func (sc *SocketCollector) handleMessage(msg []byte) { continue } - if sc.reportStatusClasses && len(stats.Status) > 0 { + if sc.reportStatusClasses && stats.Status != "" { stats.Status = fmt.Sprintf("%cxx", stats.Status[0]) } diff --git a/internal/ingress/metric/collectors/socket_test.go b/internal/ingress/metric/collectors/socket_test.go index 71e9097c94..2113b47254 100644 --- a/internal/ingress/metric/collectors/socket_test.go +++ b/internal/ingress/metric/collectors/socket_test.go @@ -30,8 +30,7 @@ import ( func TestNewUDPLogListener(t *testing.T) { var count uint64 - //nolint:unparam // Unused `message` param is required by the handleMessages function - fn := func(message []byte) { + fn := func(message []byte) { //nolint:unparam,revive // Unused `message` param is required by the handleMessages function atomic.AddUint64(&count, 1) } diff --git a/internal/ingress/metric/collectors/testutils.go b/internal/ingress/metric/collectors/testutils.go index e59ccfd9c1..3fc0fc754a 100644 --- a/internal/ingress/metric/collectors/testutils.go +++ b/internal/ingress/metric/collectors/testutils.go @@ -109,7 +109,7 @@ func removeUnusedWhitespace(s string) string { for _, l := range lines { trimmedLine = strings.TrimSpace(l) - if len(trimmedLine) > 0 { + if trimmedLine != "" { trimmedLines = append(trimmedLines, trimmedLine) } } diff --git a/internal/net/ssl/ssl.go b/internal/net/ssl/ssl.go index 26fd706e11..f8bac23779 100644 --- a/internal/net/ssl/ssl.go +++ b/internal/net/ssl/ssl.go @@ -400,7 +400,6 @@ func getFakeHostSSLCert(host string) (cert, key []byte) { var err error priv, err = rsa.GenerateKey(rand.Reader, 2048) - if err != nil { klog.Fatalf("failed to generate fake private key: %v", err) } diff --git a/internal/net/ssl/ssl_test.go b/internal/net/ssl/ssl_test.go index 9f8c5eeae6..47fa07c7c8 100644 --- a/internal/net/ssl/ssl_test.go +++ b/internal/net/ssl/ssl_test.go @@ -446,7 +446,7 @@ func TestTLSKeyReloader(t *testing.T) { } watcher.load() - s := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})) + s := httptest.NewUnstartedServer(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {})) s.Config.TLSConfig = watcher.TLSConfig() s.Listener = tls.NewListener(s.Listener, s.Config.TLSConfig) go s.Start() diff --git a/internal/nginx/maxmind.go b/internal/nginx/maxmind.go index 1dc2f4d4e7..3bd895b5db 100644 --- a/internal/nginx/maxmind.go +++ b/internal/nginx/maxmind.go @@ -132,7 +132,7 @@ func DownloadGeoLite2DB(attempts int, period time.Duration) error { } func createURL(mirror, licenseKey, dbName string) string { - if len(mirror) > 0 { + if mirror != "" { return fmt.Sprintf("%s/%s.tar.gz", mirror, dbName) } return fmt.Sprintf(maxmindURL, licenseKey, dbName) diff --git a/magefiles/steps/release.go b/magefiles/steps/release.go index 1ed09850fc..4cb8b40bdf 100644 --- a/magefiles/steps/release.go +++ b/magefiles/steps/release.go @@ -215,7 +215,6 @@ func (Release) LatestCommitLogs() { } func commitsBetweenTags(newversion, oldversion string) []string { - var newTag, oldTag string tags := getAllControllerTags() newTag, oldTag = tags[0], tags[1] diff --git a/magefiles/utils/e2edocs.go b/magefiles/utils/e2edocs.go index 2edc2ca409..2f5626db60 100644 --- a/magefiles/utils/e2edocs.go +++ b/magefiles/utils/e2edocs.go @@ -25,22 +25,19 @@ import ( "os" "path/filepath" "regexp" + "slices" "strings" "text/template" - - "slices" ) //go:embed templates/e2edocs.tpl var tplContent embed.FS -var ( - skipFiles = []string{ - "test/e2e/framework/framework.go", - "test/e2e/e2e.go", - "test/e2e/e2e_test.go", - } -) +var skipFiles = []string{ + "test/e2e/framework/framework.go", + "test/e2e/e2e.go", + "test/e2e/e2e_test.go", +} const ( testDir = "test/e2e" @@ -48,9 +45,7 @@ const ( URL = "https://github.com/kubernetes/ingress-nginx/tree/main/" ) -var ( - betweenquotes = regexp.MustCompile(`("|\')(?P.*)("|\')`) -) +var betweenquotes = regexp.MustCompile(`("|\')(?P.*)("|\')`) type E2ETemplate struct { URL string @@ -102,7 +97,7 @@ func (t *E2ETemplate) walkE2eDir(path string, d fs.DirEntry, errAggregated error fileScanner.Split(bufio.ScanLines) tests := make([]string, 0) - var lineN = 0 + lineN := 0 for fileScanner.Scan() { lineN = lineN + 1 if !containsGinkgoTest(fileScanner.Text()) { @@ -136,5 +131,4 @@ func GenerateE2EDocs() (string, error) { return "", err } return tplBuff.String(), nil - } diff --git a/test/e2e/framework/exec.go b/test/e2e/framework/exec.go index 9e4b551227..580a8f58e5 100644 --- a/test/e2e/framework/exec.go +++ b/test/e2e/framework/exec.go @@ -102,7 +102,7 @@ func (f *Framework) NamespaceContent() (string, error) { } eout := strings.TrimSpace(execErr.String()) - if len(eout) > 0 { + if eout != "" { return "", fmt.Errorf("stderr: %v", eout) } diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index 4723117c80..b71d84baa1 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -313,7 +313,7 @@ func (f *Framework) matchNginxConditions(name string, matcher func(cfg string) b return false, nil } - if klog.V(10).Enabled() && len(o) > 0 { + if klog.V(10).Enabled() && o != "" { klog.InfoS("NGINX", "configuration", o) } @@ -335,7 +335,7 @@ func (f *Framework) matchNginxCustomConditions(from, to string, matcher func(cfg return false, nil } - if klog.V(10).Enabled() && len(o) > 0 { + if klog.V(10).Enabled() && o != "" { klog.InfoS("NGINX", "configuration", o) } @@ -501,7 +501,7 @@ func (f *Framework) newHTTPTestClient(config *tls.Config, setIngressURL bool) *h Transport: &http.Transport{ TLSClientConfig: config, }, - CheckRedirect: func(req *http.Request, via []*http.Request) error { + CheckRedirect: func(_ *http.Request, _ []*http.Request) error { return http.ErrUseLastResponse }, }, httpexpect.NewAssertReporter()) diff --git a/test/e2e/framework/httpexpect/request.go b/test/e2e/framework/httpexpect/request.go index 0ae85dd793..4daba136e4 100644 --- a/test/e2e/framework/httpexpect/request.go +++ b/test/e2e/framework/httpexpect/request.go @@ -93,7 +93,7 @@ func (h *HTTPRequest) ForceResolve(ip string, port uint16) *HTTPRequest { return h } newTransport := oldTransport.Clone() - newTransport.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) { + newTransport.DialContext = func(ctx context.Context, network, _ string) (net.Conn, error) { return dialer.DialContext(ctx, network, resolveAddr) } h.client.Transport = newTransport diff --git a/test/e2e/tcpudp/tcp.go b/test/e2e/tcpudp/tcp.go index f06d6c9a3e..856184d18b 100644 --- a/test/e2e/tcpudp/tcp.go +++ b/test/e2e/tcpudp/tcp.go @@ -133,7 +133,7 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() { // Execute the test. Use the `external name` service to resolve a domain name. resolver := net.Resolver{ PreferGo: true, - Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + Dial: func(ctx context.Context, _, _ string) (net.Conn, error) { d := net.Dialer{} return d.DialContext(ctx, "tcp", fmt.Sprintf("%v:5353", ip)) },