From 9f4ef23c330097e26843acd6cf899ac4cf196d5e Mon Sep 17 00:00:00 2001 From: Matheus Macabu Date: Wed, 5 Mar 2025 09:48:13 +0100 Subject: [PATCH] [release-10.4.17] Chore: Bump Go version to 1.23.7 (#101565) * Chore: Bump Go version to 1.23.7 * Chore: Bump golangci-lint version to match Go version * Chore: Fix new linting errors from Go upgrade * Chore: Fix OpenAPI step in CI * Chore: Fix OpenAPI spec diffs --- .bingo/Variables.mk | 6 +- .bingo/golangci-lint.mod | 6 +- .bingo/golangci-lint.sum | 45 ++++ .bingo/variables.env | 2 +- .drone.yml | 192 +++++++++--------- .github/workflows/alerting-swagger-gen.yml | 2 +- .github/workflows/bump-version.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/pr-codeql-analysis-go.yml | 2 +- .github/workflows/publish-kinds-next.yml | 2 +- .github/workflows/publish-kinds-release.yml | 2 +- .github/workflows/verify-kinds.yml | 2 +- Dockerfile | 2 +- Makefile | 2 +- go.mod | 2 +- go.sum | 1 - go.work | 2 +- pkg/api/frontend_logging.go | 6 +- pkg/build/go.mod | 2 +- .../commands/conflict_user_command.go | 8 +- pkg/expr/hysteresis.go | 2 +- pkg/infra/filestorage/test_utils.go | 4 +- pkg/infra/filestorage/wrapper_test.go | 3 +- pkg/login/social/connectors/generic_oauth.go | 10 +- pkg/login/social/connectors/github_oauth.go | 6 +- pkg/registry/apis/datasource/sub_proxy.go | 2 +- pkg/registry/apis/query/parser.go | 2 +- pkg/registry/apis/query/query.go | 3 +- pkg/registry/apis/query/runner/direct.go | 2 +- pkg/services/accesscontrol/models.go | 2 +- pkg/services/alerting/conditions/query.go | 2 +- .../annotationsimpl/composite_store.go | 3 +- pkg/services/featuremgmt/toggles_gen_test.go | 3 +- pkg/services/ngalert/accesscontrol/models.go | 6 +- pkg/services/ngalert/api/util.go | 5 +- .../provisioning/notifiers/config_reader.go | 31 +-- .../notifiers/config_reader_test.go | 8 +- .../provisioning/plugins/config_reader.go | 13 +- pkg/services/query/query.go | 3 +- pkg/services/searchusers/searchusers.go | 2 +- pkg/services/store/config.go | 2 +- pkg/tsdb/cloudwatch/log_actions.go | 2 +- pkg/tsdb/cloudwatch/models/settings.go | 2 +- .../sims/engine.go | 2 +- pkg/tsdb/influxdb/flux/executor.go | 2 +- pkg/tsdb/influxdb/fsql/arrow_test.go | 2 +- .../influxql/buffered/response_parser.go | 5 +- pkg/tsdb/prometheus/querydata/request.go | 3 +- pkg/tsdb/sqleng/sql_engine.go | 2 +- pkg/util/xorm/go.mod | 2 +- public/api-merged.json | 6 +- public/openapi3.json | 6 +- scripts/build/ci-windows-test/Dockerfile | 2 +- scripts/drone/pipelines/swagger_gen.star | 2 +- scripts/drone/variables.star | 2 +- 55 files changed, 242 insertions(+), 202 deletions(-) diff --git a/.bingo/Variables.mk b/.bingo/Variables.mk index 5a649124398..42b6149645b 100644 --- a/.bingo/Variables.mk +++ b/.bingo/Variables.mk @@ -35,11 +35,11 @@ $(DRONE): $(BINGO_DIR)/drone.mod @echo "(re)installing $(GOBIN)/drone-v1.5.0" @cd $(BINGO_DIR) && GOWORK=off CGO_ENABLED=0 $(GO) build -mod=mod -modfile=drone.mod -o=$(GOBIN)/drone-v1.5.0 "github.com/drone/drone-cli/drone" -GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.59.1 +GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.60.1 $(GOLANGCI_LINT): $(BINGO_DIR)/golangci-lint.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. - @echo "(re)installing $(GOBIN)/golangci-lint-v1.59.1" - @cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.59.1 "github.com/golangci/golangci-lint/cmd/golangci-lint" + @echo "(re)installing $(GOBIN)/golangci-lint-v1.60.1" + @cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.60.1 "github.com/golangci/golangci-lint/cmd/golangci-lint" JB := $(GOBIN)/jb-v0.5.1 $(JB): $(BINGO_DIR)/jb.mod diff --git a/.bingo/golangci-lint.mod b/.bingo/golangci-lint.mod index d92f68a1602..054108af0ac 100644 --- a/.bingo/golangci-lint.mod +++ b/.bingo/golangci-lint.mod @@ -1,7 +1,7 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.22 +go 1.22.1 -toolchain go1.22.4 +toolchain go1.23.7 -require github.com/golangci/golangci-lint v1.59.1 // cmd/golangci-lint +require github.com/golangci/golangci-lint v1.60.1 // cmd/golangci-lint diff --git a/.bingo/golangci-lint.sum b/.bingo/golangci-lint.sum index 64e7c7ec7f4..f8d6f024d53 100644 --- a/.bingo/golangci-lint.sum +++ b/.bingo/golangci-lint.sum @@ -68,6 +68,8 @@ github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/S github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ= github.com/Antonboom/testifylint v1.3.1 h1:Uam4q1Q+2b6H7gvk9RQFw6jyVDdpzIirFOOrbs14eG4= github.com/Antonboom/testifylint v1.3.1/go.mod h1:NV0hTlteCkViPW9mSR4wEMfwp+Hs1T3dY60bkvSfhpM= +github.com/Antonboom/testifylint v1.4.3 h1:ohMt6AHuHgttaQ1xb6SSnxCeK4/rnK7KKzbvs7DmEck= +github.com/Antonboom/testifylint v1.4.3/go.mod h1:+8Q9+AOLsz5ZiQiiYujJKs9mNz398+M6UgslP4qgJLA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= @@ -75,15 +77,21 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8 github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Crocmagnon/fatcontext v0.2.2 h1:OrFlsDdOj9hW/oBEJBNSuH7QWf+E9WPVHw+x52bXVbk= github.com/Crocmagnon/fatcontext v0.2.2/go.mod h1:WSn/c/+MMNiD8Pri0ahRj0o9jVpeowzavOQplBJw6u0= +github.com/Crocmagnon/fatcontext v0.4.0 h1:4ykozu23YHA0JB6+thiuEv7iT6xq995qS1vcuWZq0tg= +github.com/Crocmagnon/fatcontext v0.4.0/go.mod h1:ZtWrXkgyfsYPzS6K3O88va6t2GEglG93vnII/F94WC0= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 h1:sATXp1x6/axKxz2Gjxv8MALP0bXaNRfQinEwyfMcx8c= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= @@ -133,6 +141,8 @@ github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aN github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= github.com/bombsimon/wsl/v4 v4.2.1 h1:Cxg6u+XDWff75SIFFmNsqnIOgob+Q9hG6y/ioKbRFiM= github.com/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= +github.com/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw= +github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8= @@ -183,6 +193,7 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c= @@ -275,6 +286,8 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -324,6 +337,8 @@ github.com/golangci/golangci-lint v1.53.3 h1:CUcRafczT4t1F+mvdkUm6KuOpxUZTl0yWN/ github.com/golangci/golangci-lint v1.53.3/go.mod h1:W4Gg3ONq6p3Jl+0s/h9Gr0j7yEgHJWWZO2bHl2tBUXM= github.com/golangci/golangci-lint v1.59.1 h1:CRRLu1JbhK5avLABFJ/OHVSQ0Ie5c4ulsOId1h3TTks= github.com/golangci/golangci-lint v1.59.1/go.mod h1:jX5Oif4C7P0j9++YB2MMJmoNrb01NJ8ITqKWNLewThg= +github.com/golangci/golangci-lint v1.60.1 h1:DRKNqNTQRLBJZ1il5u4fvgLQCjQc7QFs0DbhksJtVJE= +github.com/golangci/golangci-lint v1.60.1/go.mod h1:jDIPN1rYaIA+ijp9OZcUmUCoQOtZ76pOlFbi15FlLJY= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= @@ -431,6 +446,8 @@ github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9B github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jjti/go-spancheck v0.6.1 h1:ZK/wE5Kyi1VX3PJpUO2oEgeoI4FWOUm7Shb2Gbv5obI= github.com/jjti/go-spancheck v0.6.1/go.mod h1:vF1QkOO159prdo6mHRxak2CpzDpHAfKiPUDP/NeRnX8= +github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk= +github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -529,6 +546,8 @@ github.com/mgechev/revive v1.3.2 h1:Wb8NQKBaALBJ3xrrj4zpwJwqwNA6nDpyJSEQWcCka6U= github.com/mgechev/revive v1.3.2/go.mod h1:UCLtc7o5vg5aXCwdUTU1kEBQ1v+YXPAkYDIDXbrs5I0= github.com/mgechev/revive v1.3.7 h1:502QY0vQGe9KtYJ9FpxMz9rL+Fc/P13CI5POL4uHCcE= github.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA= +github.com/mgechev/revive v1.3.9 h1:18Y3R4a2USSBF+QZKFQwVkBROUda7uoBlkEuBD+YD1A= +github.com/mgechev/revive v1.3.9/go.mod h1:+uxEIr5UH0TjXWHTno3xh4u7eg6jDpXKzQccA9UGhHU= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -542,6 +561,8 @@ github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EH github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= +github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -592,6 +613,8 @@ github.com/polyfloyd/go-errorlint v1.4.2 h1:CU+O4181IxFDdPH6t/HT7IiDj1I7zxNi1RIU github.com/polyfloyd/go-errorlint v1.4.2/go.mod h1:k6fU/+fQe38ednoZS51T7gSIGQW1y94d6TkSr35OzH8= github.com/polyfloyd/go-errorlint v1.5.2 h1:SJhVik3Umsjh7mte1vE0fVZ5T1gznasQG3PV7U5xFdA= github.com/polyfloyd/go-errorlint v1.5.2/go.mod h1:sH1QC1pxxi0fFecsVIzBmxtrgd9IF/SkJpA6wqyKAJs= +github.com/polyfloyd/go-errorlint v1.6.0 h1:tftWV9DE7txiFzPpztTAwyoRLKNj9gpVm2cg8/OwcYY= +github.com/polyfloyd/go-errorlint v1.6.0/go.mod h1:HR7u8wuP1kb1NeN1zqTd1ZMlqUKPPHF+Id4vIPvDqVw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= @@ -634,6 +657,8 @@ github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJ github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= github.com/ryancurrah/gomodguard v1.3.2 h1:CuG27ulzEB1Gu5Dk5gP8PFxSOZ3ptSdP5iI/3IXxM18= github.com/ryancurrah/gomodguard v1.3.2/go.mod h1:LqdemiFomEjcxOqirbQCb3JFvSxH2JUYMerTFd3sF2o= +github.com/ryancurrah/gomodguard v1.3.3 h1:eiSQdJVNr9KTNxY2Niij8UReSwR8Xrte3exBrAZfqpg= +github.com/ryancurrah/gomodguard v1.3.3/go.mod h1:rsKQjj4l3LXe8N344Ow7agAy5p9yjsWOtRzUMYmA0QY= github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= @@ -648,6 +673,8 @@ github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1 github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= github.com/sashamelentyev/usestdlibvars v1.26.0 h1:LONR2hNVKxRmzIrZR0PhSF3mhCAzvnr+DcUiHgREfXE= github.com/sashamelentyev/usestdlibvars v1.26.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= +github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI= +github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= github.com/securego/gosec/v2 v2.16.0 h1:Pi0JKoasQQ3NnoRao/ww/N/XdynIB9NRYYZT5CyOs5U= @@ -673,6 +700,8 @@ github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/sivchari/tenv v1.10.0 h1:g/hzMA+dBCKqGXgW8AV/1xIWhAvDrx0zFKNR48NFMg0= +github.com/sivchari/tenv v1.10.0/go.mod h1:tdY24masnVoZFxYrHv/nD6Tc8FbkEtAQEEziXpyMgqY= github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= @@ -689,6 +718,8 @@ github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -764,6 +795,8 @@ github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842 github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= +github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= +github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw= github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA= github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= @@ -793,6 +826,8 @@ go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs= go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM= go-simpler.org/sloglint v0.7.1 h1:qlGLiqHbN5islOxjeLXoPtUdZXb669RW+BDQ+xOSNoU= go-simpler.org/sloglint v0.7.1/go.mod h1:OlaVDRh/FKKd4X4sIMbsz8st97vomydceL146Fthh/c= +go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= +go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -881,6 +916,8 @@ golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -951,6 +988,8 @@ golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1017,6 +1056,8 @@ golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1128,6 +1169,8 @@ golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1258,6 +1301,8 @@ honnef.co/go/tools v0.4.3 h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw= honnef.co/go/tools v0.4.3/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA= honnef.co/go/tools v0.4.7 h1:9MDAWxMoSnB6QoSqiVr7P5mtkT9pOc1kSxchzPCnqJs= honnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= +honnef.co/go/tools v0.5.0 h1:29uoiIormS3Z6R+t56STz/oI4v+mB51TSmEOdJPgRnE= +honnef.co/go/tools v0.5.0/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= diff --git a/.bingo/variables.env b/.bingo/variables.env index 6bd4d743187..5b9cbd9c8a6 100644 --- a/.bingo/variables.env +++ b/.bingo/variables.env @@ -14,7 +14,7 @@ CUE="${GOBIN}/cue-v0.5.0" DRONE="${GOBIN}/drone-v1.5.0" -GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.59.1" +GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.60.1" JB="${GOBIN}/jb-v0.5.1" diff --git a/.drone.yml b/.drone.yml index 37e91ad1b8b..2414c6de766 100644 --- a/.drone.yml +++ b/.drone.yml @@ -25,7 +25,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - ./bin/build verify-drone @@ -75,7 +75,7 @@ steps: - go install github.com/bazelbuild/buildtools/buildifier@latest - buildifier --lint=warn -mode=check -r . depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: lint-starlark trigger: event: @@ -370,7 +370,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -379,14 +379,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang @@ -394,7 +394,7 @@ steps: -timeout=5m depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: test-backend - commands: - apk add --update build-base @@ -403,7 +403,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: test-backend-integration trigger: event: @@ -456,7 +456,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - echo $(/usr/bin/github-app-external-token) > /github-app/token @@ -500,7 +500,7 @@ steps: - apk add --update make - make gen-go depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update make build-base @@ -509,16 +509,16 @@ steps: - wire-install environment: CGO_ENABLED: "1" - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: lint-backend - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: validate-openapi-spec trigger: event: @@ -591,7 +591,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -601,7 +601,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -610,14 +610,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update g++ make python3 && ln -sf /usr/bin/python3 /usr/bin/python @@ -654,7 +654,7 @@ steps: - docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --uninstall 'qemu-*' - docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --install all - /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64 - -a targz:grafana:linux/arm/v7 --go-version=1.22.11 --yarn-cache=$$YARN_CACHE_FOLDER + -a targz:grafana:linux/arm/v7 --go-version=1.23.7 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt depends_on: - yarn-install @@ -812,7 +812,7 @@ steps: - /src/grafana-build artifacts -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu -a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7 -a docker:grafana:linux/arm/v7:ubuntu --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER - --go-version=1.22.11 --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.21.3 --tag-format='{{ + --go-version=1.23.7 --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.21.3 --tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --grafana-dir=$$PWD --ubuntu-tag-format='{{ .version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' > docker.txt - find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i @@ -975,7 +975,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -989,7 +989,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -998,14 +998,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -1026,7 +1026,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql57:3306 -timeout 120s @@ -1047,7 +1047,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-5.7-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -1068,7 +1068,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -1084,7 +1084,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -1100,7 +1100,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -1116,7 +1116,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: remote-alertmanager-integration-tests trigger: event: @@ -1202,7 +1202,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue trigger: event: @@ -1317,12 +1317,12 @@ steps: - make swagger-clean && make openapi3-gen - for f in public/api-merged.json public/openapi3.json; do git add $f; done - if [ -z "$(git diff --name-only --cached)" ]; then echo "Everything seems up to - date!"; else echo "Please ensure the branch is up-to-date, then regenerate the - specification by running make swagger-clean && make openapi3-gen" && return 1; - fi + date!"; else git diff --cached && echo "Please ensure the branch is up-to-date, + then regenerate the specification by running make swagger-clean && make openapi3-gen" + && return 1; fi depends_on: - clone-enterprise - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: swagger-gen trigger: event: @@ -1443,7 +1443,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -1454,7 +1454,7 @@ steps: - CODEGEN_VERIFY=1 make gen-cue depends_on: - clone-enterprise - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1464,14 +1464,14 @@ steps: - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: - clone-enterprise - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update build-base @@ -1479,7 +1479,7 @@ steps: - go test -v -run=^$ -benchmem -timeout=1h -count=8 -bench=. ${GO_PACKAGES} depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: sqlite-benchmark-integration-tests - commands: - apk add --update build-base @@ -1491,7 +1491,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: postgres-benchmark-integration-tests - commands: - apk add --update build-base @@ -1502,7 +1502,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-5.7-benchmark-integration-tests - commands: - apk add --update build-base @@ -1513,7 +1513,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-8.0-benchmark-integration-tests trigger: event: @@ -1589,7 +1589,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue trigger: branch: main @@ -1766,7 +1766,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1775,14 +1775,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang @@ -1790,7 +1790,7 @@ steps: -timeout=5m depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: test-backend - commands: - apk add --update build-base @@ -1799,7 +1799,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: test-backend-integration trigger: branch: main @@ -1844,13 +1844,13 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - apk add --update make - make gen-go depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update make build-base @@ -1859,16 +1859,16 @@ steps: - wire-install environment: CGO_ENABLED: "1" - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: lint-backend - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: validate-openapi-spec - commands: - ./bin/build verify-drone @@ -1939,7 +1939,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -1949,7 +1949,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1958,14 +1958,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update g++ make python3 && ln -sf /usr/bin/python3 /usr/bin/python @@ -2001,7 +2001,7 @@ steps: - docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --uninstall 'qemu-*' - docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --install all - /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64 - -a targz:grafana:linux/arm/v7 --go-version=1.22.11 --yarn-cache=$$YARN_CACHE_FOLDER + -a targz:grafana:linux/arm/v7 --go-version=1.23.7 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt depends_on: - update-package-json-version @@ -2195,7 +2195,7 @@ steps: - /src/grafana-build artifacts -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu -a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7 -a docker:grafana:linux/arm/v7:ubuntu --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER - --go-version=1.22.11 --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.21.3 --tag-format='{{ + --go-version=1.23.7 --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.21.3 --tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --grafana-dir=$$PWD --ubuntu-tag-format='{{ .version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' > docker.txt - find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i @@ -2403,7 +2403,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -2417,7 +2417,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -2426,14 +2426,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -2454,7 +2454,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql57:3306 -timeout 120s @@ -2475,7 +2475,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-5.7-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -2496,7 +2496,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -2512,7 +2512,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -2528,7 +2528,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -2544,7 +2544,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: remote-alertmanager-integration-tests trigger: branch: main @@ -2689,7 +2689,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - ./bin/build artifacts docker fetch --edition oss @@ -2821,7 +2821,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - ./bin/build artifacts docker fetch --edition oss @@ -2962,7 +2962,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - ./bin/build artifacts packages --artifacts-editions=oss --tag $${DRONE_TAG} --src-bucket @@ -3053,7 +3053,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - commands: - apk add --update g++ make python3 && ln -sf /usr/bin/python3 /usr/bin/python @@ -3154,7 +3154,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: compile-build-cmd - depends_on: - compile-build-cmd @@ -3270,7 +3270,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.22.11 + GO_VERSION: 1.23.7 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3345,7 +3345,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.22.11 + GO_VERSION: 1.23.7 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3462,7 +3462,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.22.11 + GO_VERSION: 1.23.7 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3614,7 +3614,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -3623,14 +3623,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang @@ -3638,7 +3638,7 @@ steps: -timeout=5m depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: test-backend - commands: - apk add --update build-base @@ -3647,7 +3647,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: test-backend-integration trigger: cron: @@ -3701,7 +3701,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.22.11 + GO_VERSION: 1.23.7 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3845,7 +3845,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.22.11 + GO_VERSION: 1.23.7 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3971,7 +3971,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.22.11 + GO_VERSION: 1.23.7 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4116,7 +4116,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -4125,14 +4125,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -4153,7 +4153,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql57:3306 -timeout 120s @@ -4174,7 +4174,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-5.7-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -4195,7 +4195,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -4211,7 +4211,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -4227,7 +4227,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -4243,7 +4243,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.22.11-alpine + image: golang:1.23.7-alpine name: remote-alertmanager-integration-tests trigger: event: @@ -4549,7 +4549,7 @@ steps: - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM docker:27-cli - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine/git:2.40.1 - - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.22.11-alpine + - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.23.7-alpine - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:20.9.0-alpine - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM google/cloud-sdk:431.0.0 - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana-ci-deploy:1.3.3 @@ -4587,7 +4587,7 @@ steps: - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL docker:27-cli - trivy --exit-code 1 --severity HIGH,CRITICAL alpine/git:2.40.1 - - trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.22.11-alpine + - trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.23.7-alpine - trivy --exit-code 1 --severity HIGH,CRITICAL node:20.9.0-alpine - trivy --exit-code 1 --severity HIGH,CRITICAL google/cloud-sdk:431.0.0 - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana-ci-deploy:1.3.3 @@ -4856,6 +4856,6 @@ kind: secret name: gcr_credentials --- kind: signature -hmac: dfa68f0445c4485167734f36c7c54cf9622c12cfb79d0091615da3223ffbae59 +hmac: d438da3270c4e17ad67140907335154b0d0ca4a9347a5655e12ab3ab770c5fd7 ... diff --git a/.github/workflows/alerting-swagger-gen.yml b/.github/workflows/alerting-swagger-gen.yml index 2fa61fe2312..fde3f80c5ce 100644 --- a/.github/workflows/alerting-swagger-gen.yml +++ b/.github/workflows/alerting-swagger-gen.yml @@ -16,7 +16,7 @@ jobs: - name: Set go version uses: actions/setup-go@v4 with: - go-version: '1.21.10' + go-version: '1.23.7' - name: Build swagger run: | make -C pkg/services/ngalert/api/tooling post.json api.json diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 56cf8d5ddd1..f238502f5d6 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -58,7 +58,7 @@ jobs: # Go is required for also updating the schema versions as part of the precommit hook: - uses: actions/setup-go@v4 with: - go-version: '1.21' + go-version: '1.23.7' - uses: actions/setup-node@v4 with: node-version: '18' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1658ee97c29..ca9bfb0fdaf 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -47,7 +47,7 @@ jobs: name: Set go version uses: actions/setup-go@v4 with: - go-version: '1.21.10' + go-version: '1.23.7' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr-codeql-analysis-go.yml b/.github/workflows/pr-codeql-analysis-go.yml index 16940912c6d..0ebc5a48ea0 100644 --- a/.github/workflows/pr-codeql-analysis-go.yml +++ b/.github/workflows/pr-codeql-analysis-go.yml @@ -35,7 +35,7 @@ jobs: - name: Set go version uses: actions/setup-go@v4 with: - go-version: '1.21.10' + go-version: '1.23.7' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/publish-kinds-next.yml b/.github/workflows/publish-kinds-next.yml index ec2c8e7ae7a..75c1f8eb504 100644 --- a/.github/workflows/publish-kinds-next.yml +++ b/.github/workflows/publish-kinds-next.yml @@ -36,7 +36,7 @@ jobs: - name: "Setup Go" uses: "actions/setup-go@v4" with: - go-version: '1.21.10' + go-version: '1.23.7' - name: "Verify kinds" run: go run .github/workflows/scripts/kinds/verify-kinds.go diff --git a/.github/workflows/publish-kinds-release.yml b/.github/workflows/publish-kinds-release.yml index 3a86ae356e5..f1a5caf255e 100644 --- a/.github/workflows/publish-kinds-release.yml +++ b/.github/workflows/publish-kinds-release.yml @@ -39,7 +39,7 @@ jobs: - name: "Setup Go" uses: "actions/setup-go@v4" with: - go-version: '1.21.10' + go-version: '1.23.7' - name: "Verify kinds" run: go run .github/workflows/scripts/kinds/verify-kinds.go diff --git a/.github/workflows/verify-kinds.yml b/.github/workflows/verify-kinds.yml index 1dc39cb0da8..b99462e4a04 100644 --- a/.github/workflows/verify-kinds.yml +++ b/.github/workflows/verify-kinds.yml @@ -18,7 +18,7 @@ jobs: - name: "Setup Go" uses: "actions/setup-go@v4" with: - go-version: '1.21.10' + go-version: '1.23.7' - name: "Verify kinds" run: go run .github/workflows/scripts/kinds/verify-kinds.go diff --git a/Dockerfile b/Dockerfile index f447c9874ad..33acf8dcac1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ ARG BASE_IMAGE=alpine:3.21 ARG JS_IMAGE=node:20-alpine ARG JS_PLATFORM=linux/amd64 -ARG GO_IMAGE=golang:1.22.11-alpine +ARG GO_IMAGE=golang:1.23.7-alpine # Default to building locally ARG GO_SRC=go-builder diff --git a/Makefile b/Makefile index cac4b80ef5a..fefe4757b33 100644 --- a/Makefile +++ b/Makefile @@ -256,7 +256,7 @@ build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development. --build-arg COMMIT_SHA=$$(git rev-parse HEAD) \ --build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \ --build-arg BASE_IMAGE=ubuntu:22.04 \ - --build-arg GO_IMAGE=golang:1.21.10 \ + --build-arg GO_IMAGE=golang:1.23.7 \ --tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \ $(DOCKER_BUILD_ARGS) diff --git a/go.mod b/go.mod index 46fa41931da..f051556841d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/grafana/grafana -go 1.22.11 +go 1.23.7 // Override docker/docker to avoid: // go: github.com/drone-runners/drone-runner-docker@v1.8.2 requires diff --git a/go.sum b/go.sum index 053587f58ab..8368dbd9210 100644 --- a/go.sum +++ b/go.sum @@ -1967,7 +1967,6 @@ github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= diff --git a/go.work b/go.work index ecce4f982a4..4e004b5930c 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.22.11 +go 1.23.7 use ( . diff --git a/pkg/api/frontend_logging.go b/pkg/api/frontend_logging.go index 7ad646fc815..a71c9d3ae0c 100644 --- a/pkg/api/frontend_logging.go +++ b/pkg/api/frontend_logging.go @@ -30,7 +30,7 @@ func GrafanaJavascriptAgentLogMessageHandler(store *frontendlogging.SourceMapSto // Meta object is standard across event types, adding it globally. - if event.Logs != nil && len(event.Logs) > 0 { + if len(event.Logs) > 0 { for _, logEntry := range event.Logs { var ctx = frontendlogging.CtxVector{} ctx = event.AddMetaToContext(ctx) @@ -64,7 +64,7 @@ func GrafanaJavascriptAgentLogMessageHandler(store *frontendlogging.SourceMapSto } } - if event.Measurements != nil && len(event.Measurements) > 0 { + if len(event.Measurements) > 0 { for _, measurementEntry := range event.Measurements { for measurementName, measurementValue := range measurementEntry.Values { var ctx = frontendlogging.CtxVector{} @@ -75,7 +75,7 @@ func GrafanaJavascriptAgentLogMessageHandler(store *frontendlogging.SourceMapSto } } } - if event.Exceptions != nil && len(event.Exceptions) > 0 { + if len(event.Exceptions) > 0 { for _, exception := range event.Exceptions { var ctx = frontendlogging.CtxVector{} ctx = event.AddMetaToContext(ctx) diff --git a/pkg/build/go.mod b/pkg/build/go.mod index 50072fd2976..8612685311e 100644 --- a/pkg/build/go.mod +++ b/pkg/build/go.mod @@ -1,6 +1,6 @@ module github.com/grafana/grafana/pkg/build -go 1.22.7 +go 1.23.7 // Override docker/docker to avoid: // go: github.com/drone-runners/drone-runner-docker@v1.8.2 requires diff --git a/pkg/cmd/grafana-cli/commands/conflict_user_command.go b/pkg/cmd/grafana-cli/commands/conflict_user_command.go index 3e607cecca8..4d41484eab0 100644 --- a/pkg/cmd/grafana-cli/commands/conflict_user_command.go +++ b/pkg/cmd/grafana-cli/commands/conflict_user_command.go @@ -99,9 +99,9 @@ func runListConflictUsers() func(context *cli.Context) error { logger.Info(color.GreenString("No Conflicting users found.\n\n")) return nil } - logger.Infof("\n\nShowing conflicts\n\n") - logger.Infof(r.ToStringPresentation()) - logger.Infof("\n") + logger.Info("\n\nShowing conflicts\n\n") + logger.Info(r.ToStringPresentation()) + logger.Info("\n") if len(r.DiscardedBlocks) != 0 { r.logDiscardedUsers() } @@ -458,7 +458,7 @@ func (r *ConflictResolver) showChanges() { b.WriteString("\n\n") } logger.Info("\n\nChanges that will take place\n\n") - logger.Infof(b.String()) + logger.Info(b.String()) } // Formatter make it possible for us to write to terminal and to a file diff --git a/pkg/expr/hysteresis.go b/pkg/expr/hysteresis.go index 51ddcf37d5b..5960f2f45e3 100644 --- a/pkg/expr/hysteresis.go +++ b/pkg/expr/hysteresis.go @@ -38,7 +38,7 @@ func (h *HysteresisCommand) Execute(ctx context.Context, now time.Time, vars mat if results.IsNoData() { return mathexp.Results{Values: mathexp.Values{mathexp.NewNoData()}}, nil } - if h.LoadedDimensions == nil || len(h.LoadedDimensions) == 0 { + if len(h.LoadedDimensions) == 0 { return h.LoadingThresholdFunc.Execute(ctx, now, vars, tracer) } var loadedVals, unloadedVals mathexp.Values diff --git a/pkg/infra/filestorage/test_utils.go b/pkg/infra/filestorage/test_utils.go index 0445807a094..806741ac6e4 100644 --- a/pkg/infra/filestorage/test_utils.go +++ b/pkg/infra/filestorage/test_utils.go @@ -275,7 +275,7 @@ func handleQuery(t *testing.T, ctx context.Context, query interface{}, queryName file, fileFound, err := fs.Get(ctx, inputPath, options) require.NoError(t, err, "%s: should be able to get file %s", queryName, inputPath) - if q.checks != nil && len(q.checks) > 0 { + if len(q.checks) > 0 { require.NotNil(t, file, "%s %s", queryName, inputPath) require.True(t, fileFound, "%s %s", queryName, inputPath) require.Equal(t, strings.ToLower(inputPath), strings.ToLower(file.FullPath), "%s %s", queryName, inputPath) @@ -289,7 +289,7 @@ func handleQuery(t *testing.T, ctx context.Context, query interface{}, queryName resp, err := fs.List(ctx, inputPath, q.input.paging, q.input.options) require.NoError(t, err, "%s: should be able to list files in %s", queryName, inputPath) require.NotNil(t, resp) - if q.list != nil && len(q.list) > 0 { + if len(q.list) > 0 { runChecks(t, queryName, inputPath, resp, q.list) } else { require.NotNil(t, resp, "%s %s", queryName, inputPath) diff --git a/pkg/infra/filestorage/wrapper_test.go b/pkg/infra/filestorage/wrapper_test.go index 0fd9d55f085..6e013f32c46 100644 --- a/pkg/infra/filestorage/wrapper_test.go +++ b/pkg/infra/filestorage/wrapper_test.go @@ -1,7 +1,6 @@ package filestorage import ( - "fmt" "testing" "github.com/stretchr/testify/require" @@ -35,7 +34,7 @@ func TestFilestorage_getParentFolderPath(t *testing.T) { }, } for _, tt := range tests { - t.Run(fmt.Sprintf(tt.name), func(t *testing.T) { + t.Run(tt.name, func(t *testing.T) { require.Equal(t, tt.expected, getParentFolderPath(tt.path)) }) } diff --git a/pkg/login/social/connectors/generic_oauth.go b/pkg/login/social/connectors/generic_oauth.go index 413d8c0760f..058ca499981 100644 --- a/pkg/login/social/connectors/generic_oauth.go +++ b/pkg/login/social/connectors/generic_oauth.go @@ -93,7 +93,7 @@ func (s *SocialGenericOAuth) Validate(ctx context.Context, settings ssoModels.SS return ssosettings.ErrInvalidOAuthConfig("If Team Ids are configured then Team Ids attribute path and Teams URL must be configured.") } - if info.AllowedGroups != nil && len(info.AllowedGroups) > 0 && info.GroupsAttributePath == "" { + if len(info.AllowedGroups) > 0 && info.GroupsAttributePath == "" { return ssosettings.ErrInvalidOAuthConfig("If Allowed groups is configured then Groups attribute path must be configured.") } @@ -474,7 +474,7 @@ func (s *SocialGenericOAuth) FetchPrivateEmail(ctx context.Context, client *http info := s.GetOAuthInfo() - response, err := s.httpGet(ctx, client, fmt.Sprintf(info.ApiUrl+"/emails")) + response, err := s.httpGet(ctx, client, info.ApiUrl+"/emails") if err != nil { s.log.Error("Error getting email address", "url", info.ApiUrl+"/emails", "error", err) return "", fmt.Errorf("%v: %w", "Error getting email address", err) @@ -538,7 +538,7 @@ func (s *SocialGenericOAuth) fetchTeamMembershipsFromDeprecatedTeamsUrl(ctx cont info := s.GetOAuthInfo() - response, err := s.httpGet(ctx, client, fmt.Sprintf(info.ApiUrl+"/teams")) + response, err := s.httpGet(ctx, client, info.ApiUrl+"/teams") if err != nil { s.log.Error("Error getting team memberships", "url", info.ApiUrl+"/teams", "error", err) return []string{}, err @@ -565,7 +565,7 @@ func (s *SocialGenericOAuth) fetchTeamMembershipsFromTeamsUrl(ctx context.Contex return []string{}, nil } - response, err := s.httpGet(ctx, client, fmt.Sprintf(s.teamsUrl)) + response, err := s.httpGet(ctx, client, s.teamsUrl) if err != nil { s.log.Error("Error getting team memberships", "url", s.teamsUrl, "error", err) return nil, err @@ -581,7 +581,7 @@ func (s *SocialGenericOAuth) FetchOrganizations(ctx context.Context, client *htt info := s.GetOAuthInfo() - response, err := s.httpGet(ctx, client, fmt.Sprintf(info.ApiUrl+"/orgs")) + response, err := s.httpGet(ctx, client, info.ApiUrl+"/orgs") if err != nil { s.log.Error("Error getting organizations", "url", info.ApiUrl+"/orgs", "error", err) return nil, false diff --git a/pkg/login/social/connectors/github_oauth.go b/pkg/login/social/connectors/github_oauth.go index cf346c7e4ec..db6361202fc 100644 --- a/pkg/login/social/connectors/github_oauth.go +++ b/pkg/login/social/connectors/github_oauth.go @@ -181,7 +181,7 @@ func (s *SocialGithub) FetchPrivateEmail(ctx context.Context, client *http.Clien info := s.GetOAuthInfo() - response, err := s.httpGet(ctx, client, fmt.Sprintf(info.ApiUrl+"/emails")) + response, err := s.httpGet(ctx, client, info.ApiUrl+"/emails") if err != nil { return "", fmt.Errorf("Error getting email address: %s", err) } @@ -206,7 +206,7 @@ func (s *SocialGithub) FetchPrivateEmail(ctx context.Context, client *http.Clien func (s *SocialGithub) FetchTeamMemberships(ctx context.Context, client *http.Client) ([]GithubTeam, error) { info := s.GetOAuthInfo() - url := fmt.Sprintf(info.ApiUrl + "/teams?per_page=100") + url := info.ApiUrl + "/teams?per_page=100" hasMore := true teams := make([]GithubTeam, 0) @@ -339,7 +339,7 @@ func (s *SocialGithub) UserInfo(ctx context.Context, client *http.Client, token userInfo.Name = data.Name } - organizationsUrl := fmt.Sprintf(info.ApiUrl + "/orgs?per_page=100") + organizationsUrl := info.ApiUrl + "/orgs?per_page=100" if !s.IsTeamMember(ctx, client) { return nil, ErrMissingTeamMembership.Errorf("User is not a member of any of the allowed teams: %v", s.teamIds) diff --git a/pkg/registry/apis/datasource/sub_proxy.go b/pkg/registry/apis/datasource/sub_proxy.go index 5c082fc4a92..7d04fc47285 100644 --- a/pkg/registry/apis/datasource/sub_proxy.go +++ b/pkg/registry/apis/datasource/sub_proxy.go @@ -43,6 +43,6 @@ func (r *subProxyREST) NewConnectOptions() (runtime.Object, bool, string) { func (r *subProxyREST) Connect(ctx context.Context, name string, opts runtime.Object, responder rest.Responder) (http.Handler, error) { return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - responder.Error(fmt.Errorf("TODO, proxy: " + r.pluginJSON.ID)) + responder.Error(fmt.Errorf("TODO, proxy: %s", r.pluginJSON.ID)) }), nil } diff --git a/pkg/registry/apis/query/parser.go b/pkg/registry/apis/query/parser.go index bc60a5b451c..bc36f7fda13 100644 --- a/pkg/registry/apis/query/parser.go +++ b/pkg/registry/apis/query/parser.go @@ -38,7 +38,7 @@ func parseQueryRequest(raw v0alpha1.GenericQueryRequest) (parsedQueryRequest, er for _, original := range raw.Queries { if refIds[original.RefID] { - return parsed, fmt.Errorf("invalid query, duplicate refId: " + original.RefID) + return parsed, fmt.Errorf("invalid query, duplicate refId: %s", original.RefID) } refIds[original.RefID] = true diff --git a/pkg/registry/apis/query/query.go b/pkg/registry/apis/query/query.go index e5278141379..94ae035f850 100644 --- a/pkg/registry/apis/query/query.go +++ b/pkg/registry/apis/query/query.go @@ -3,6 +3,7 @@ package query import ( "context" "encoding/json" + "errors" "fmt" "net/http" @@ -109,7 +110,7 @@ func (b *QueryAPIBuilder) executeConcurrentQueries(ctx context.Context, requests if theErr, ok := r.(error); ok { err = theErr } else if theErrString, ok := r.(string); ok { - err = fmt.Errorf(theErrString) + err = errors.New(theErrString) } else { err = fmt.Errorf("unexpected error - %s", b.userFacingDefaultError) } diff --git a/pkg/registry/apis/query/runner/direct.go b/pkg/registry/apis/query/runner/direct.go index e36a7e6188e..5ffce5ea782 100644 --- a/pkg/registry/apis/query/runner/direct.go +++ b/pkg/registry/apis/query/runner/direct.go @@ -111,7 +111,7 @@ func (d *directRegistry) GetDatasourceGroupVersion(pluginId string) (schema.Grou var err error gv, ok := d.apis[pluginId] if !ok { - err = fmt.Errorf("no API found for id: " + pluginId) + err = fmt.Errorf("no API found for id: %s", pluginId) } return gv, err } diff --git a/pkg/services/accesscontrol/models.go b/pkg/services/accesscontrol/models.go index 26d4262bb3f..67472459895 100644 --- a/pkg/services/accesscontrol/models.go +++ b/pkg/services/accesscontrol/models.go @@ -304,7 +304,7 @@ func (cmd *SaveExternalServiceRoleCommand) Validate() error { cmd.ExternalServiceID = slugify.Slugify(cmd.ExternalServiceID) // Check and deduplicate permissions - if cmd.Permissions == nil || len(cmd.Permissions) == 0 { + if len(cmd.Permissions) == 0 { return errors.New("no permissions provided") } dedupMap := map[Permission]bool{} diff --git a/pkg/services/alerting/conditions/query.go b/pkg/services/alerting/conditions/query.go index ea090f1403d..83360d9b790 100644 --- a/pkg/services/alerting/conditions/query.go +++ b/pkg/services/alerting/conditions/query.go @@ -210,7 +210,7 @@ func (c *QueryCondition) executeQuery(context *alerting.EvalContext, timeRange l } // If there are dataframes but no series on the result - useDataframes := v.Dataframes != nil && (v.Series == nil || len(v.Series) == 0) + useDataframes := v.Dataframes != nil && len(v.Series) == 0 if useDataframes { // convert the dataframes to plugins.DataTimeSeries frames, err := v.Dataframes.Decoded() diff --git a/pkg/services/annotations/annotationsimpl/composite_store.go b/pkg/services/annotations/annotationsimpl/composite_store.go index 5f0b1a213b4..67843c5232b 100644 --- a/pkg/services/annotations/annotationsimpl/composite_store.go +++ b/pkg/services/annotations/annotationsimpl/composite_store.go @@ -2,6 +2,7 @@ package annotationsimpl import ( "context" + "errors" "fmt" "sort" @@ -88,7 +89,7 @@ func handleJobPanic(logger log.Logger, storeType string, jobErr *error) { errMsg := "concurrent job panic" if jobErr != nil { - err := fmt.Errorf(errMsg) + err := errors.New(errMsg) if panicErr, ok := r.(error); ok { err = fmt.Errorf("%s: %w", errMsg, panicErr) } diff --git a/pkg/services/featuremgmt/toggles_gen_test.go b/pkg/services/featuremgmt/toggles_gen_test.go index 946a52e4079..c54b7eb8a4b 100644 --- a/pkg/services/featuremgmt/toggles_gen_test.go +++ b/pkg/services/featuremgmt/toggles_gen_test.go @@ -186,8 +186,7 @@ func verifyAndGenerateFile(t *testing.T, fpath string, gen string) { body, err := os.ReadFile(fpath) if err == nil { if diff := cmp.Diff(gen, string(body)); diff != "" { - str := fmt.Sprintf("body mismatch (-want +got):\n%s\n", diff) - err = fmt.Errorf(str) + err = fmt.Errorf("body mismatch (-want +got):\n%s\n", diff) } } diff --git a/pkg/services/ngalert/accesscontrol/models.go b/pkg/services/ngalert/accesscontrol/models.go index f3c93aaf2a7..9108afb57da 100644 --- a/pkg/services/ngalert/accesscontrol/models.go +++ b/pkg/services/ngalert/accesscontrol/models.go @@ -12,9 +12,9 @@ var ( ) func NewAuthorizationErrorWithPermissions(action string, eval accesscontrol.Evaluator) error { - msg := fmt.Sprintf("user is not authorized to %s", action) - err := errAuthorizationGeneric.Errorf(msg) - err.PublicMessage = msg + msg := "user is not authorized to %s" + err := errAuthorizationGeneric.Errorf(msg, action) + err.PublicMessage = fmt.Sprintf(msg, action) if eval != nil { err.PublicPayload = map[string]any{ "permissions": eval.GoString(), diff --git a/pkg/services/ngalert/api/util.go b/pkg/services/ngalert/api/util.go index 00691a94eaf..8c416a34b3e 100644 --- a/pkg/services/ngalert/api/util.go +++ b/pkg/services/ngalert/api/util.go @@ -206,8 +206,9 @@ func messageExtractor(resp *response.NormalResponse) (any, error) { // ErrorResp creates a response with a visible error func ErrResp(status int, err error, msg string, args ...any) *response.NormalResponse { if msg != "" { - formattedMsg := fmt.Sprintf(msg, args...) - err = fmt.Errorf("%s: %w", formattedMsg, err) + msg += ": %w" + args = append(args, err) + err = fmt.Errorf(msg, args...) } return response.Error(status, err.Error(), err) } diff --git a/pkg/services/provisioning/notifiers/config_reader.go b/pkg/services/provisioning/notifiers/config_reader.go index cf96ce7f33f..72680d317a5 100644 --- a/pkg/services/provisioning/notifiers/config_reader.go +++ b/pkg/services/provisioning/notifiers/config_reader.go @@ -2,6 +2,7 @@ package notifiers import ( "context" + "errors" "fmt" "io/fs" "os" @@ -118,41 +119,41 @@ func (cr *configReader) checkOrgIDAndOrgName(ctx context.Context, notifications func (cr *configReader) validateRequiredField(notifications []*notificationsAsConfig) error { for i := range notifications { - var errStrings []string + errs := []error{} for index, notification := range notifications[i].Notifications { if notification.Name == "" { - errStrings = append( - errStrings, - fmt.Sprintf("Added alert notification item %d in configuration doesn't contain required field name", index+1), + errs = append( + errs, + fmt.Errorf("added alert notification item %d in configuration doesn't contain required field name", index+1), ) } if notification.UID == "" { - errStrings = append( - errStrings, - fmt.Sprintf("Added alert notification item %d in configuration doesn't contain required field uid", index+1), + errs = append( + errs, + fmt.Errorf("added alert notification item %d in configuration doesn't contain required field uid", index+1), ) } } for index, notification := range notifications[i].DeleteNotifications { if notification.Name == "" { - errStrings = append( - errStrings, - fmt.Sprintf("Deleted alert notification item %d in configuration doesn't contain required field name", index+1), + errs = append( + errs, + fmt.Errorf("deleted alert notification item %d in configuration doesn't contain required field name", index+1), ) } if notification.UID == "" { - errStrings = append( - errStrings, - fmt.Sprintf("Deleted alert notification item %d in configuration doesn't contain required field uid", index+1), + errs = append( + errs, + fmt.Errorf("deleted alert notification item %d in configuration doesn't contain required field uid", index+1), ) } } - if len(errStrings) != 0 { - return fmt.Errorf(strings.Join(errStrings, "\n")) + if len(errs) != 0 { + return errors.Join(errs...) } } diff --git a/pkg/services/provisioning/notifiers/config_reader_test.go b/pkg/services/provisioning/notifiers/config_reader_test.go index ad0f87e6feb..55f33884f4b 100644 --- a/pkg/services/provisioning/notifiers/config_reader_test.go +++ b/pkg/services/provisioning/notifiers/config_reader_test.go @@ -263,10 +263,10 @@ func TestNotificationAsConfig(t *testing.T) { require.NotNil(t, err) errString := err.Error() - require.Contains(t, errString, "Deleted alert notification item 1 in configuration doesn't contain required field uid") - require.Contains(t, errString, "Deleted alert notification item 2 in configuration doesn't contain required field name") - require.Contains(t, errString, "Added alert notification item 1 in configuration doesn't contain required field name") - require.Contains(t, errString, "Added alert notification item 2 in configuration doesn't contain required field uid") + require.Contains(t, errString, "deleted alert notification item 1 in configuration doesn't contain required field uid") + require.Contains(t, errString, "deleted alert notification item 2 in configuration doesn't contain required field name") + require.Contains(t, errString, "added alert notification item 1 in configuration doesn't contain required field name") + require.Contains(t, errString, "added alert notification item 2 in configuration doesn't contain required field uid") }) t.Run("Empty yaml file", func(t *testing.T) { diff --git a/pkg/services/provisioning/plugins/config_reader.go b/pkg/services/provisioning/plugins/config_reader.go index 2b626066b46..52684de6326 100644 --- a/pkg/services/provisioning/plugins/config_reader.go +++ b/pkg/services/provisioning/plugins/config_reader.go @@ -2,6 +2,7 @@ package plugins import ( "context" + "errors" "fmt" "io/fs" "os" @@ -90,18 +91,16 @@ func (cr *configReaderImpl) parsePluginConfig(path string, file fs.DirEntry) (*p func validateRequiredField(apps []*pluginsAsConfig) error { for i := range apps { - var errStrings []string + errs := []error{} for index, app := range apps[i].Apps { if app.PluginID == "" { - errStrings = append( - errStrings, - fmt.Sprintf("app item %d in configuration doesn't contain required field type", index+1), - ) + err := fmt.Errorf("app item %d in configuration doesn't contain required field type", index+1) + errs = append(errs, err) } } - if len(errStrings) != 0 { - return fmt.Errorf(strings.Join(errStrings, "\n")) + if len(errs) != 0 { + return errors.Join(errs...) } } diff --git a/pkg/services/query/query.go b/pkg/services/query/query.go index 90b6c9eb892..821b18520d6 100644 --- a/pkg/services/query/query.go +++ b/pkg/services/query/query.go @@ -2,6 +2,7 @@ package query import ( "context" + "errors" "fmt" "net/http" "runtime" @@ -125,7 +126,7 @@ func (s *ServiceImpl) executeConcurrentQueries(ctx context.Context, user identit if theErr, ok := r.(error); ok { err = theErr } else if theErrString, ok := r.(string); ok { - err = fmt.Errorf(theErrString) + err = errors.New(theErrString) } else { err = fmt.Errorf("unexpected error - %s", s.cfg.UserFacingDefaultError) } diff --git a/pkg/services/searchusers/searchusers.go b/pkg/services/searchusers/searchusers.go index 2389de178da..da8822d10b7 100644 --- a/pkg/services/searchusers/searchusers.go +++ b/pkg/services/searchusers/searchusers.go @@ -113,7 +113,7 @@ func (s *OSSService) SearchUser(c *contextmodel.ReqContext) (*user.SearchUserQue for _, user := range res.Users { user.AvatarURL = dtos.GetGravatarUrl(s.cfg, user.Email) user.AuthLabels = make([]string, 0) - if user.AuthModule != nil && len(user.AuthModule) > 0 { + if len(user.AuthModule) > 0 { for _, authModule := range user.AuthModule { user.AuthLabels = append(user.AuthLabels, login.GetAuthProviderLabel(authModule)) } diff --git a/pkg/services/store/config.go b/pkg/services/store/config.go index d2f86616702..7c6390f6729 100644 --- a/pkg/services/store/config.go +++ b/pkg/services/store/config.go @@ -132,5 +132,5 @@ func newStorage(cfg RootStorageConfig, localWorkCache string) (storageRuntime, e return newDiskStorage(RootStorageMeta{}, cfg), nil } - return nil, fmt.Errorf("unsupported store: " + cfg.Type) + return nil, fmt.Errorf("unsupported store: %s", cfg.Type) } diff --git a/pkg/tsdb/cloudwatch/log_actions.go b/pkg/tsdb/cloudwatch/log_actions.go index 416aaa676cc..744a620637d 100644 --- a/pkg/tsdb/cloudwatch/log_actions.go +++ b/pkg/tsdb/cloudwatch/log_actions.go @@ -211,7 +211,7 @@ func (e *cloudWatchExecutor) executeStartQuery(ctx context.Context, logsClient c QueryString: aws.String(modifiedQueryString), } - if logsQuery.LogGroups != nil && len(logsQuery.LogGroups) > 0 && features.IsEnabled(ctx, features.FlagCloudWatchCrossAccountQuerying) { + if len(logsQuery.LogGroups) > 0 && features.IsEnabled(ctx, features.FlagCloudWatchCrossAccountQuerying) { var logGroupIdentifiers []string for _, lg := range logsQuery.LogGroups { arn := lg.Arn diff --git a/pkg/tsdb/cloudwatch/models/settings.go b/pkg/tsdb/cloudwatch/models/settings.go index ec35f7211c8..6cd8c0b5c97 100644 --- a/pkg/tsdb/cloudwatch/models/settings.go +++ b/pkg/tsdb/cloudwatch/models/settings.go @@ -25,7 +25,7 @@ type CloudWatchSettings struct { func LoadCloudWatchSettings(ctx context.Context, config backend.DataSourceInstanceSettings) (CloudWatchSettings, error) { instance := CloudWatchSettings{} - if config.JSONData != nil && len(config.JSONData) > 1 { + if len(config.JSONData) > 1 { if err := json.Unmarshal(config.JSONData, &instance); err != nil { return CloudWatchSettings{}, fmt.Errorf("could not unmarshal DatasourceSettings json: %w", err) } diff --git a/pkg/tsdb/grafana-testdata-datasource/sims/engine.go b/pkg/tsdb/grafana-testdata-datasource/sims/engine.go index af3b3c6d479..557484de97f 100644 --- a/pkg/tsdb/grafana-testdata-datasource/sims/engine.go +++ b/pkg/tsdb/grafana-testdata-datasource/sims/engine.go @@ -35,7 +35,7 @@ type SimulationEngine struct { func (s *SimulationEngine) register(info simulationInfo) error { if info.create == nil { - return fmt.Errorf("invalid simulation -- missing create function: " + info.Type) + return fmt.Errorf("invalid simulation -- missing create function: %s", info.Type) } if info.Type == "" { return fmt.Errorf("missing type") diff --git a/pkg/tsdb/influxdb/flux/executor.go b/pkg/tsdb/influxdb/flux/executor.go index 7154dcc5e6b..52a57169648 100644 --- a/pkg/tsdb/influxdb/flux/executor.go +++ b/pkg/tsdb/influxdb/flux/executor.go @@ -47,7 +47,7 @@ func executeQuery(ctx context.Context, logger log.Logger, query queryModel, runn text += " Try using the aggregateWindow() function in your query to reduce the number of points returned." } - dr.Error = fmt.Errorf(text) + dr.Error = errors.New(text) } } } diff --git a/pkg/tsdb/influxdb/fsql/arrow_test.go b/pkg/tsdb/influxdb/fsql/arrow_test.go index fa8844acf1d..45d374b62af 100644 --- a/pkg/tsdb/influxdb/fsql/arrow_test.go +++ b/pkg/tsdb/influxdb/fsql/arrow_test.go @@ -315,7 +315,7 @@ func TestNewFrame(t *testing.T) { }, } if !cmp.Equal(expected, actual, cmp.Comparer(cmpFrame)) { - log.Fatalf(cmp.Diff(expected, actual)) + log.Fatal(cmp.Diff(expected, actual)) } } diff --git a/pkg/tsdb/influxdb/influxql/buffered/response_parser.go b/pkg/tsdb/influxdb/influxql/buffered/response_parser.go index ab5f2114d58..42c8dce5a58 100644 --- a/pkg/tsdb/influxdb/influxql/buffered/response_parser.go +++ b/pkg/tsdb/influxdb/influxql/buffered/response_parser.go @@ -1,6 +1,7 @@ package buffered import ( + "errors" "fmt" "io" "strings" @@ -32,12 +33,12 @@ func parse(buf io.Reader, statusCode int, query *models.Query) *backend.DataResp } if response.Error != "" { - return &backend.DataResponse{Error: fmt.Errorf(response.Error)} + return &backend.DataResponse{Error: errors.New(response.Error)} } result := response.Results[0] if result.Error != "" { - return &backend.DataResponse{Error: fmt.Errorf(result.Error)} + return &backend.DataResponse{Error: errors.New(result.Error)} } if query.ResultFormat == "table" { diff --git a/pkg/tsdb/prometheus/querydata/request.go b/pkg/tsdb/prometheus/querydata/request.go index c80952b1a05..dc74a55a0ac 100644 --- a/pkg/tsdb/prometheus/querydata/request.go +++ b/pkg/tsdb/prometheus/querydata/request.go @@ -2,6 +2,7 @@ package querydata import ( "context" + "errors" "fmt" "net/http" "regexp" @@ -188,7 +189,7 @@ func (s *QueryData) instantQuery(ctx context.Context, c *client.Client, q *model // This is only for health check fall back scenario if res.StatusCode != 200 && q.RefId == "__healthcheck__" { return backend.DataResponse{ - Error: fmt.Errorf(res.Status), + Error: errors.New(res.Status), } } diff --git a/pkg/tsdb/sqleng/sql_engine.go b/pkg/tsdb/sqleng/sql_engine.go index 3dceed95cba..f3734565808 100644 --- a/pkg/tsdb/sqleng/sql_engine.go +++ b/pkg/tsdb/sqleng/sql_engine.go @@ -214,7 +214,7 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG if theErr, ok := r.(error); ok { queryResult.dataResponse.Error = theErr } else if theErrString, ok := r.(string); ok { - queryResult.dataResponse.Error = fmt.Errorf(theErrString) + queryResult.dataResponse.Error = errors.New(theErrString) } else { queryResult.dataResponse.Error = fmt.Errorf("unexpected error - %s", e.userError) } diff --git a/pkg/util/xorm/go.mod b/pkg/util/xorm/go.mod index 78f85ed97f7..4608cd4457e 100644 --- a/pkg/util/xorm/go.mod +++ b/pkg/util/xorm/go.mod @@ -1,6 +1,6 @@ module github.com/grafana/grafana/pkg/util/xorm -go 1.21 +go 1.23.7 require ( github.com/mattn/go-sqlite3 v1.14.19 diff --git a/public/api-merged.json b/public/api-merged.json index fffcc4b32a3..f5319ea6a29 100644 --- a/public/api-merged.json +++ b/public/api-merged.json @@ -13124,7 +13124,7 @@ "description": "Policies contains all policy identifiers included in the certificate.\nIn Go 1.22, encoding/gob cannot handle and ignores this field.", "type": "array", "items": { - "$ref": "#/definitions/OID" + "type": "string" } }, "PolicyIdentifiers": { @@ -16885,10 +16885,6 @@ } } }, - "OID": { - "type": "object", - "title": "An OID represents an ASN.1 OBJECT IDENTIFIER." - }, "ObjectIdentifier": { "type": "array", "title": "An ObjectIdentifier represents an ASN.1 OBJECT IDENTIFIER.", diff --git a/public/openapi3.json b/public/openapi3.json index 701ce1807eb..67f5d405af9 100644 --- a/public/openapi3.json +++ b/public/openapi3.json @@ -3669,7 +3669,7 @@ "Policies": { "description": "Policies contains all policy identifiers included in the certificate.\nIn Go 1.22, encoding/gob cannot handle and ignores this field.", "items": { - "$ref": "#/components/schemas/OID" + "type": "string" }, "type": "array" }, @@ -7433,10 +7433,6 @@ "title": "OAuth2 is the oauth2 client configuration.", "type": "object" }, - "OID": { - "title": "An OID represents an ASN.1 OBJECT IDENTIFIER.", - "type": "object" - }, "ObjectIdentifier": { "items": { "format": "int64", diff --git a/scripts/build/ci-windows-test/Dockerfile b/scripts/build/ci-windows-test/Dockerfile index 86dadef8e4c..150a4b1e3d6 100644 --- a/scripts/build/ci-windows-test/Dockerfile +++ b/scripts/build/ci-windows-test/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.20.3-windowsservercore-1809 +FROM golang:1.23.7-windowsservercore-1809 SHELL ["powershell", "-command"] diff --git a/scripts/drone/pipelines/swagger_gen.star b/scripts/drone/pipelines/swagger_gen.star index 9682e7838fd..ef08f9f3782 100644 --- a/scripts/drone/pipelines/swagger_gen.star +++ b/scripts/drone/pipelines/swagger_gen.star @@ -31,7 +31,7 @@ def swagger_gen_step(ver_mode): "apk add --update git make", "make swagger-clean && make openapi3-gen", "for f in public/api-merged.json public/openapi3.json; do git add $f; done", - 'if [ -z "$(git diff --name-only --cached)" ]; then echo "Everything seems up to date!"; else echo "Please ensure the branch is up-to-date, then regenerate the specification by running make swagger-clean && make openapi3-gen" && return 1; fi', + 'if [ -z "$(git diff --name-only --cached)" ]; then echo "Everything seems up to date!"; else git diff --cached && echo "Please ensure the branch is up-to-date, then regenerate the specification by running make swagger-clean && make openapi3-gen" && return 1; fi', ], "depends_on": [ "clone-enterprise", diff --git a/scripts/drone/variables.star b/scripts/drone/variables.star index d79b2674abc..5cf086a79b9 100644 --- a/scripts/drone/variables.star +++ b/scripts/drone/variables.star @@ -3,7 +3,7 @@ global variables """ grabpl_version = "v3.1.2" -golang_version = "1.22.11" +golang_version = "1.23.7" # nodejs_version should match what's in ".nvmrc", but without the v prefix. nodejs_version = "20.9.0"