diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index 832b91528..cb058b98b 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -7,7 +7,7 @@ on: env: GO_VERSION: '1.23' - GOLANGCI_LINT_VERSION: v1.62.0 + GOLANGCI_LINT_VERSION: v1.63.3 MISSPELL_VERSION: v0.6.0 jobs: diff --git a/.golangci.yml b/.golangci.yml index 2ea78a8ed..772583dac 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -141,6 +141,9 @@ linters-settings: - name: unreachable-code - name: redefines-builtin-id gomoddirectives: + tool-forbidden: true + toolchain-pattern: 'go1\.\d+\.\d+$' + go-version-pattern: '^1\.\d+(\.0)?$' replace-allow-list: - github.com/abbot/go-http-auth - github.com/gorilla/mux diff --git a/go.mod b/go.mod index 9be695676..f75279b6e 100644 --- a/go.mod +++ b/go.mod @@ -67,7 +67,6 @@ require ( github.com/vulcand/predicate v1.2.0 go.elastic.co/apm/module/apmot/v2 v2.4.8 go.elastic.co/apm/v2 v2.4.8 - golang.org/x/exp v0.0.0-20241210194714-1829a127f884 // No tag on the repo. golang.org/x/mod v0.22.0 golang.org/x/net v0.33.0 golang.org/x/text v0.21.0 @@ -347,6 +346,7 @@ require ( go4.org/intern v0.0.0-20230525184215-6c62f75575cb // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 // indirect golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp v0.0.0-20241210194714-1829a127f884 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/pkg/middlewares/accesslog/logger_test.go b/pkg/middlewares/accesslog/logger_test.go index 097a36322..f35577109 100644 --- a/pkg/middlewares/accesslog/logger_test.go +++ b/pkg/middlewares/accesslog/logger_test.go @@ -817,7 +817,7 @@ func assertValidLogData(t *testing.T, expected string, logData []byte) { func captureStdout(t *testing.T) (out *os.File, restoreStdout func()) { t.Helper() - file, err := os.CreateTemp("", "testlogger") + file, err := os.CreateTemp(t.TempDir(), "testlogger") require.NoError(t, err, "failed to create temp file") original := os.Stdout diff --git a/pkg/provider/configuration.go b/pkg/provider/configuration.go index 47a65c410..996ad47bb 100644 --- a/pkg/provider/configuration.go +++ b/pkg/provider/configuration.go @@ -3,7 +3,9 @@ package provider import ( "bytes" "context" + "maps" "reflect" + "slices" "sort" "strings" "text/template" @@ -13,7 +15,6 @@ import ( "github.com/traefik/traefik/v2/pkg/config/dynamic" "github.com/traefik/traefik/v2/pkg/log" "github.com/traefik/traefik/v2/pkg/tls" - "golang.org/x/exp/maps" ) // Merge merges multiple configurations. @@ -384,7 +385,7 @@ func BuildTCPRouterConfiguration(ctx context.Context, configuration *dynamic.TCP if len(configuration.Services) > 1 { delete(configuration.Routers, routerName) loggerRouter. - Errorf("Router %s cannot be linked automatically with multiple Services: %q", routerName, maps.Keys(configuration.Services)) + Errorf("Router %s cannot be linked automatically with multiple Services: %q", routerName, slices.Collect(maps.Keys(configuration.Services))) continue } @@ -406,7 +407,7 @@ func BuildUDPRouterConfiguration(ctx context.Context, configuration *dynamic.UDP if len(configuration.Services) > 1 { delete(configuration.Routers, routerName) loggerRouter. - Errorf("Router %s cannot be linked automatically with multiple Services: %q", routerName, maps.Keys(configuration.Services)) + Errorf("Router %s cannot be linked automatically with multiple Services: %q", routerName, slices.Collect(maps.Keys(configuration.Services))) continue } @@ -453,7 +454,7 @@ func BuildRouterConfiguration(ctx context.Context, configuration *dynamic.HTTPCo if len(configuration.Services) > 1 { delete(configuration.Routers, routerName) loggerRouter. - Errorf("Router %s cannot be linked automatically with multiple Services: %q", routerName, maps.Keys(configuration.Services)) + Errorf("Router %s cannot be linked automatically with multiple Services: %q", routerName, slices.Collect(maps.Keys(configuration.Services))) continue }