git: d7b18216befd - 2025Q1 - www/gitlab: major upgrade to 17.10.0

From: Matthias Fechner <mfechner_at_FreeBSD.org>
Date: Sat, 22 Mar 2025 08:51:45 UTC
The branch 2025Q1 has been updated by mfechner:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d7b18216befddca6b189ed18f949e201f9058d9e

commit d7b18216befddca6b189ed18f949e201f9058d9e
Author:     Matthias Fechner <mfechner@FreeBSD.org>
AuthorDate: 2025-03-21 10:07:00 +0000
Commit:     Matthias Fechner <mfechner@FreeBSD.org>
CommitDate: 2025-03-22 08:37:03 +0000

    www/gitlab: major upgrade to 17.10.0
    
    Changes:        https://about.gitlab.com/releases/2025/03/20/gitlab-17-10-released/
    
    Please follow upgrade manual:
    https://gitlab.com/mfechner/freebsd-gitlab-docu/-/blob/master/update/17.9-17.10-freebsd.md
    
    (cherry picked from commit ab2a918b0d7a4b52e10ef5c4e1facc2ec63c9bcf)
---
 devel/gitaly/Makefile                              |  2 +-
 devel/gitaly/distinfo                              | 14 ++---
 devel/gitaly/files/patch-Makefile                  | 32 +++++-----
 devel/gitaly/files/patch-config.toml.example       |  4 +-
 devel/gitlab-shell/Makefile                        |  4 +-
 devel/gitlab-shell/distinfo                        | 10 +--
 net/gitlab-agent/distinfo                          | 10 +--
 net/rubygem-gitaly/Makefile                        |  2 +-
 net/rubygem-gitaly/distinfo                        |  6 +-
 net/rubygem-gitlab-kas-grpc/distinfo               |  6 +-
 www/gitlab-pages/Makefile                          |  2 +-
 www/gitlab-pages/distinfo                          | 10 +--
 www/gitlab-workhorse/Makefile                      |  2 +-
 www/gitlab-workhorse/distinfo                      | 10 +--
 www/gitlab/Makefile                                | 73 +++++++++++-----------
 www/gitlab/Makefile.common                         |  4 +-
 www/gitlab/distinfo                                | 12 ++--
 www/gitlab/files/patch-Gemfile                     | 45 ++++++-------
 www/gitlab/files/patch-config_gitlab.yml.example   | 24 +++----
 .../files/patch-config_initializers_1__settings.rb |  4 +-
 ...ems_gitlab-backup-cli_gitlab-backup-cli.gemspec |  6 +-
 ...ret__detection_gitlab-secret__detection.gemspec | 11 ----
 www/gitlab/pkg-message                             |  6 +-
 23 files changed, 140 insertions(+), 159 deletions(-)

diff --git a/devel/gitaly/Makefile b/devel/gitaly/Makefile
index 30c75fbcf240..f3cceadd1e83 100644
--- a/devel/gitaly/Makefile
+++ b/devel/gitaly/Makefile
@@ -19,7 +19,7 @@ LIB_DEPENDS=	libcurl.so:ftp/curl \
 		libiconv.so:converters/libiconv \
 		libpcre2-8.so:devel/pcre2
 
-USES=		cpe gmake go:modules,no_targets,1.22 iconv pkgconfig
+USES=		cpe gmake go:modules,no_targets,1.23 iconv pkgconfig
 
 CPE_VENDOR=	gitlab
 
diff --git a/devel/gitaly/distinfo b/devel/gitaly/distinfo
index dad610ec0830..ebc605baf1d8 100644
--- a/devel/gitaly/distinfo
+++ b/devel/gitaly/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1741805285
-SHA256 (go/devel_gitaly/gitaly-v17.9.2/go.mod) = 8681bf4d8150ee800eae8c39a76f47d2eeccb9f891456339c6989669f07910ce
-SIZE (go/devel_gitaly/gitaly-v17.9.2/go.mod) = 12317
-SHA256 (go/devel_gitaly/gitaly-v17.9.2/gitaly-v17.9.2.tar.bz2) = 95934908a1e9f38cddca7a893753277235f349b6255c7e050c220934bcc3a3ac
-SIZE (go/devel_gitaly/gitaly-v17.9.2/gitaly-v17.9.2.tar.bz2) = 4410689
-SHA256 (go/devel_gitaly/gitaly-v17.9.2/git-v2.47.2.tar.bz2) = 061297b19daa4adcf9700a01acadbc5ca8722c9c26e2d2a2fe002edff537545f
-SIZE (go/devel_gitaly/gitaly-v17.9.2/git-v2.47.2.tar.bz2) = 8892868
+TIMESTAMP = 1742394261
+SHA256 (go/devel_gitaly/gitaly-v17.10.0/go.mod) = f824aae5cee8f78761e4ede33e828f218425ca982e99c92eca80e05593631e64
+SIZE (go/devel_gitaly/gitaly-v17.10.0/go.mod) = 12365
+SHA256 (go/devel_gitaly/gitaly-v17.10.0/gitaly-v17.10.0.tar.bz2) = 89175d9d16c90d261ccbf87889768532b968ea6ce8c22bf4c6d966c35a60aada
+SIZE (go/devel_gitaly/gitaly-v17.10.0/gitaly-v17.10.0.tar.bz2) = 4456228
+SHA256 (go/devel_gitaly/gitaly-v17.10.0/git-v2.47.2.tar.bz2) = 061297b19daa4adcf9700a01acadbc5ca8722c9c26e2d2a2fe002edff537545f
+SIZE (go/devel_gitaly/gitaly-v17.10.0/git-v2.47.2.tar.bz2) = 8892868
diff --git a/devel/gitaly/files/patch-Makefile b/devel/gitaly/files/patch-Makefile
index 6435a9d172f0..6fb9b785f001 100644
--- a/devel/gitaly/files/patch-Makefile
+++ b/devel/gitaly/files/patch-Makefile
@@ -1,6 +1,6 @@
---- Makefile.orig	2025-02-19 06:01:22 UTC
+--- Makefile.orig	2025-03-19 10:31:26 UTC
 +++ Makefile
-@@ -145,7 +145,7 @@ GIT_VERSION_2_47 ?= v2.47.2
+@@ -152,7 +152,7 @@ GIT_VERSION_2_47 ?= v2.47.2
  # major version is added, be sure to update GIT_PACKED_EXECUTABLES, the *-bundled-git targets,
  # and add new targets under the "# These targets build specific releases of Git." section.
  GIT_VERSION_2_47 ?= v2.47.2
@@ -9,7 +9,7 @@
  #
  # OVERRIDE_GIT_VERSION allows you to specify a custom semver value to be reported by the
  # `git --version` command. This affects bundled and non-bundled Git, and can be used whenever
-@@ -238,8 +238,7 @@ BUILD_GEM_NAME ?= gitaly
+@@ -247,8 +247,7 @@ BUILD_GEM_NAME ?= gitaly
  BUILD_GEM_NAME ?= gitaly
  
  # Git binaries that are eventually embedded into the Gitaly binary.
@@ -19,7 +19,7 @@
  
  # All executables provided by Gitaly.
  GITALY_EXECUTABLES           = $(addprefix ${BUILD_DIR}/bin/,$(notdir $(shell find ${SOURCE_DIR}/cmd -mindepth 1 -maxdepth 1 -type d -print)))
-@@ -328,16 +327,14 @@ install: build
+@@ -337,16 +336,14 @@ install: build
  
  .PHONY: build-bundled-git
  ## Build bundled Git binaries.
@@ -38,9 +38,9 @@
  
  ifdef WITH_BUNDLED_GIT
  build: build-bundled-git
-@@ -619,22 +616,22 @@ ${BUILD_DIR}/bin/gitaly-%-v2.47: ${DEPENDENCY_DIR}/git
- ${BUILD_DIR}/bin/gitaly-%-v2.47: ${DEPENDENCY_DIR}/git-v2.47/.built | ${BUILD_DIR}/bin
- 	${Q}install "$(<D)"/$* $@
+@@ -631,22 +628,22 @@ ${BUILD_DIR}/bin/gitaly-%-v2.47: ${DEPENDENCY_DIR}/git
+ ${BUILD_DIR}/bin/gitaly-%-v2.47: ${DEPENDENCY_DIR}/git-v2.47/% | ${BUILD_DIR}/bin
+ 	${Q}install $< $@
  
 -${BUILD_DIR}/bin/gitaly-%-v2.48: override GIT_VERSION = ${GIT_VERSION_2_48}
 +#${BUILD_DIR}/bin/gitaly-%-v2.48: override GIT_VERSION = ${GIT_VERSION_2_48}
@@ -57,23 +57,23 @@
 +#endif
  
 -ifdef USE_MESON
--${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/build/.built | ${BUILD_DIR}/bin
--	${Q}install "$(<D)"/$* $@
+-${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/build/% | ${BUILD_DIR}/bin
+-	${Q}install $< $@
 -else
--${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/.built | ${BUILD_DIR}/bin
--	${Q}install "$(<D)"/$* $@
+-${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/% | ${BUILD_DIR}/bin
+-	${Q}install $< $@
 -endif
 +#ifdef USE_MESON
-+#${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/build/.built | ${BUILD_DIR}/bin
-+#	${Q}install "$(<D)"/$* $@
++#${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/build/% | ${BUILD_DIR}/bin
++#	${Q}install $< $@
 +#else
-+#${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/.built | ${BUILD_DIR}/bin
-+#	${Q}install "$(<D)"/$* $@
++#${BUILD_DIR}/bin/gitaly-%-v2.48: ${DEPENDENCY_DIR}/git-v2.48/% | ${BUILD_DIR}/bin
++#	${Q}install $< $@
 +#endif
  
  # clear-go-build-cache-if-needed cleans the Go build cache if it exceeds the maximum size as
  # configured in GOCACHE_MAX_SIZE_KB.
-@@ -668,12 +665,12 @@ ${DEPENDENCY_DIR}/git-%/Makefile: ${DEPENDENCY_DIR}/gi
+@@ -680,12 +677,12 @@ ${DEPENDENCY_DIR}/git-%/Makefile: ${DEPENDENCY_DIR}/gi
  # otherwise try to rebuild all targets depending on it whenever we build
  # something else. We thus depend on the Makefile instead.
  ${DEPENDENCY_DIR}/git-%/Makefile: ${DEPENDENCY_DIR}/git-%.version
diff --git a/devel/gitaly/files/patch-config.toml.example b/devel/gitaly/files/patch-config.toml.example
index 13378b8efdae..76d7cbff727f 100644
--- a/devel/gitaly/files/patch-config.toml.example
+++ b/devel/gitaly/files/patch-config.toml.example
@@ -1,7 +1,7 @@
---- config.toml.example.orig	2024-08-20 19:30:28 UTC
+--- config.toml.example.orig	2025-03-19 10:31:26 UTC
 +++ config.toml.example
 @@ -2,10 +2,10 @@
- # For Gitaly documentation, see https://docs.gitlab.com/ee/administration/gitaly/.
+ # For Gitaly documentation, see https://docs.gitlab.com/administration/gitaly/.
  
  # A path which Gitaly should open a Unix socket.
 -socket_path = "/home/git/gitlab/tmp/sockets/private/gitaly.socket"
diff --git a/devel/gitlab-shell/Makefile b/devel/gitlab-shell/Makefile
index ea085222de8c..4335fbe4ad45 100644
--- a/devel/gitlab-shell/Makefile
+++ b/devel/gitlab-shell/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	gitlab-shell
-PORTVERSION=	14.40.0
+PORTVERSION=	14.41.0
 DISTVERSIONPREFIX=	v
 CATEGORIES=	devel
 
@@ -13,7 +13,7 @@ LICENSE=	MIT
 # https://gitlab.com/gitlab-org/gitlab-shell/-/merge_requests/720
 #BUILD_DEPENDS=	heimdal>=0:security/heimdal
 
-USES=		gmake go:modules,no_targets,1.22 pkgconfig
+USES=		gmake go:modules,no_targets,1.23 pkgconfig
 
 USE_GITLAB=	yes
 GL_ACCOUNT=	gitlab-org
diff --git a/devel/gitlab-shell/distinfo b/devel/gitlab-shell/distinfo
index 31f525bd7c89..eb1aa2ffbada 100644
--- a/devel/gitlab-shell/distinfo
+++ b/devel/gitlab-shell/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1739977143
-SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.40.0/go.mod) = fd0949dccc73ceeca2dfa8b27f2c7a53580c792673a461e6e23ccd103d0cbc7e
-SIZE (go/devel_gitlab-shell/gitlab-shell-v14.40.0/go.mod) = 5558
-SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.40.0/gitlab-shell-v14.40.0.tar.bz2) = 7c809cb80beda8f66d4c07f07c5a7044a61f909f04a54fe13ea76a73d5a72e6f
-SIZE (go/devel_gitlab-shell/gitlab-shell-v14.40.0/gitlab-shell-v14.40.0.tar.bz2) = 164256
+TIMESTAMP = 1742398223
+SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.41.0/go.mod) = 23df9af81a4eb32b6a635c40729ecba8a8fd279e88dc708d87b9de324c2241d6
+SIZE (go/devel_gitlab-shell/gitlab-shell-v14.41.0/go.mod) = 5453
+SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.41.0/gitlab-shell-v14.41.0.tar.bz2) = 58d6a8fcd2c63307f24e4f7d2d46f21f8254e6f4acedd48d1167ee152ac899a9
+SIZE (go/devel_gitlab-shell/gitlab-shell-v14.41.0/gitlab-shell-v14.41.0.tar.bz2) = 164394
diff --git a/net/gitlab-agent/distinfo b/net/gitlab-agent/distinfo
index adee3793829c..018f073be8a5 100644
--- a/net/gitlab-agent/distinfo
+++ b/net/gitlab-agent/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1741805287
-SHA256 (go/net_gitlab-agent/gitlab-agent-v17.9.2/v17.9.2.mod) = a2652235ef0a6e36f95f2e721cc1168145d1022ac9498a5bed465803cd8f6ef9
-SIZE (go/net_gitlab-agent/gitlab-agent-v17.9.2/v17.9.2.mod) = 9329
-SHA256 (go/net_gitlab-agent/gitlab-agent-v17.9.2/v17.9.2.zip) = ad33a6822cfa1cbf04ea2677e8f7de5d6a4a5bdbcb80d24d626b19589bb62030
-SIZE (go/net_gitlab-agent/gitlab-agent-v17.9.2/v17.9.2.zip) = 1564878
+TIMESTAMP = 1742394330
+SHA256 (go/net_gitlab-agent/gitlab-agent-v17.10.0/v17.10.0.mod) = 29fa2cf5a657e0c393997fef1e94e69bcce20558673fc352fa535e84d28244c1
+SIZE (go/net_gitlab-agent/gitlab-agent-v17.10.0/v17.10.0.mod) = 9379
+SHA256 (go/net_gitlab-agent/gitlab-agent-v17.10.0/v17.10.0.zip) = 063fe24aa6aac56c297430a4e889e24b882198f50b03a2fc2c9b37634cf3de88
+SIZE (go/net_gitlab-agent/gitlab-agent-v17.10.0/v17.10.0.zip) = 1583915
diff --git a/net/rubygem-gitaly/Makefile b/net/rubygem-gitaly/Makefile
index 5ab0fb3296b8..af0aacda7929 100644
--- a/net/rubygem-gitaly/Makefile
+++ b/net/rubygem-gitaly/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	gitaly
-PORTVERSION=	17.8.2
+PORTVERSION=	17.10.0
 CATEGORIES=	net rubygems
 MASTER_SITES=	RG
 
diff --git a/net/rubygem-gitaly/distinfo b/net/rubygem-gitaly/distinfo
index 64247e6e0c2a..dede5e73b5cb 100644
--- a/net/rubygem-gitaly/distinfo
+++ b/net/rubygem-gitaly/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1739967326
-SHA256 (rubygem/gitaly-17.8.2.gem) = a6e554288f106d046843ee0eadd9785837dea9bd796ec9a6cdd56f9fef840787
-SIZE (rubygem/gitaly-17.8.2.gem) = 49664
+TIMESTAMP = 1742396737
+SHA256 (rubygem/gitaly-17.10.0.gem) = 60f81a27998b2a1329f58a66335e96fc1012840cbc52b6bee972fa22675f8e25
+SIZE (rubygem/gitaly-17.10.0.gem) = 52224
diff --git a/net/rubygem-gitlab-kas-grpc/distinfo b/net/rubygem-gitlab-kas-grpc/distinfo
index 078306b805b1..7863855e49d4 100644
--- a/net/rubygem-gitlab-kas-grpc/distinfo
+++ b/net/rubygem-gitlab-kas-grpc/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1741805340
-SHA256 (rubygem/gitlab-kas-grpc-17.9.2.gem) = d1844f73d5b9754dd71824af953db980da5dfc703044bb0ac35af8ba7ff54e91
-SIZE (rubygem/gitlab-kas-grpc-17.9.2.gem) = 10752
+TIMESTAMP = 1742394591
+SHA256 (rubygem/gitlab-kas-grpc-17.10.0.gem) = fd960439d33c38a86473e579474a9d2477b08d6522de9cc2e4de0d44e89970e0
+SIZE (rubygem/gitlab-kas-grpc-17.10.0.gem) = 10752
diff --git a/www/gitlab-pages/Makefile b/www/gitlab-pages/Makefile
index a0035c529057..ea3b234abcff 100644
--- a/www/gitlab-pages/Makefile
+++ b/www/gitlab-pages/Makefile
@@ -13,7 +13,7 @@ WWW=		https://gitlab.com/gitlab-org/gitlab-pages
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-USES=		go:modules,1.22
+USES=		go:modules,1.23
 
 USE_GITLAB=	yes
 GL_ACCOUNT=	gitlab-org
diff --git a/www/gitlab-pages/distinfo b/www/gitlab-pages/distinfo
index 3ab0fa297da5..e2aafb3a2700 100644
--- a/www/gitlab-pages/distinfo
+++ b/www/gitlab-pages/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1741805290
-SHA256 (go/www_gitlab-pages/gitlab-pages-v17.9.2/go.mod) = 0a2270c8237f0d394ca6409539d1e8639d5effb0ab9000cd13549aa0a53c7996
-SIZE (go/www_gitlab-pages/gitlab-pages-v17.9.2/go.mod) = 3464
-SHA256 (go/www_gitlab-pages/gitlab-pages-v17.9.2/gitlab-pages-v17.9.2.tar.bz2) = f109146fc03eda264b5019288073d5b0266c90ae4c5b6348cd2580162aead987
-SIZE (go/www_gitlab-pages/gitlab-pages-v17.9.2/gitlab-pages-v17.9.2.tar.bz2) = 232413
+TIMESTAMP = 1742394374
+SHA256 (go/www_gitlab-pages/gitlab-pages-v17.10.0/go.mod) = e41278594ee22017fca4184ba9257748c547483a00ee36b7ba2f9ce7dcf5f7e9
+SIZE (go/www_gitlab-pages/gitlab-pages-v17.10.0/go.mod) = 3486
+SHA256 (go/www_gitlab-pages/gitlab-pages-v17.10.0/gitlab-pages-v17.10.0.tar.bz2) = 8b76b8a28877b851e2f2400c6f7da87b06cb1f4d39d98afa18cfe6408ec29e2e
+SIZE (go/www_gitlab-pages/gitlab-pages-v17.10.0/gitlab-pages-v17.10.0.tar.bz2) = 233227
diff --git a/www/gitlab-workhorse/Makefile b/www/gitlab-workhorse/Makefile
index 484f3882fcbc..f4a28d010783 100644
--- a/www/gitlab-workhorse/Makefile
+++ b/www/gitlab-workhorse/Makefile
@@ -14,7 +14,7 @@ LICENSE_FILE=	${WRKSRC}/../LICENSE
 BUILD_DEPENDS=	git>=2.42.0:devel/git
 RUN_DEPENDS=	p5-Image-ExifTool>=0:graphics/p5-Image-ExifTool
 
-USES=		gmake go:modules,no_targets,1.22
+USES=		gmake go:modules,no_targets,1.23
 USE_GITLAB=	yes
 GL_ACCOUNT=	gitlab-org
 GL_PROJECT=	gitlab-foss
diff --git a/www/gitlab-workhorse/distinfo b/www/gitlab-workhorse/distinfo
index a5f6935835b5..5ae6dd068b9d 100644
--- a/www/gitlab-workhorse/distinfo
+++ b/www/gitlab-workhorse/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1741805339
-SHA256 (go/www_gitlab-workhorse/gitlab-foss-v17.9.2/go.mod) = 981ed1f4b3ca120ca4234c32a11114e8efa3acec171ff8265b91a00bc1707a54
-SIZE (go/www_gitlab-workhorse/gitlab-foss-v17.9.2/go.mod) = 8008
-SHA256 (go/www_gitlab-workhorse/gitlab-foss-v17.9.2/gitlab-foss-v17.9.2.tar.bz2) = c28a4c55b91402f608ba13a11d62f1e1ce6ced97c72b28c921aad85ec42fba65
-SIZE (go/www_gitlab-workhorse/gitlab-foss-v17.9.2/gitlab-foss-v17.9.2.tar.bz2) = 115724401
+TIMESTAMP = 1742394590
+SHA256 (go/www_gitlab-workhorse/gitlab-foss-v17.10.0/go.mod) = 5a508f4af03f3d7413eed4fd3711e7b2641f039d8471b54ace7cf7fb218249a7
+SIZE (go/www_gitlab-workhorse/gitlab-foss-v17.10.0/go.mod) = 9212
+SHA256 (go/www_gitlab-workhorse/gitlab-foss-v17.10.0/gitlab-foss-v17.10.0.tar.bz2) = 01c2ef935bb71bb70abf993536c12444adec8fb409b4d6b206ffae8581b581ac
+SIZE (go/www_gitlab-workhorse/gitlab-foss-v17.10.0/gitlab-foss-v17.10.0.tar.bz2) = 128878627
diff --git a/www/gitlab/Makefile b/www/gitlab/Makefile
index ad597506b8a4..39c6f8c008aa 100644
--- a/www/gitlab/Makefile
+++ b/www/gitlab/Makefile
@@ -31,7 +31,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	gitlab-elasticsearch-indexer>=5.4.0:textproc/gitlab-elasticsearch-indexer \
 	gitlab-agent>=${GITLAB_VERSION}:net/gitlab-agent \
 	gitlab-pages>=${GITLAB_VERSION}:www/gitlab-pages \
-	gitlab-shell>=14.40.0:devel/gitlab-shell \
+	gitlab-shell>=14.41.0:devel/gitlab-shell \
 	gitlab-workhorse>=${GITLAB_VERSION}:www/gitlab-workhorse \
 	redis>=6.2.11:databases/redis \
 	yarn${NODEJS_SUFFIX}>=1.10.0:www/yarn${NODEJS_SUFFIX} \
@@ -47,16 +47,16 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-bootsnap>=1.18.3<1.19:devel/rubygem-bootsnap \
 	rubygem-ffi>=1.17.1<2:devel/rubygem-ffi \
 	rubygem-openssl>=3.2.0<4:security/rubygem-openssl \
-	rubygem-gitlab-secret_detection>=0.18.0<1:security/rubygem-gitlab-secret_detection \
+	rubygem-gitlab-secret_detection>=0.19.0<1:security/rubygem-gitlab-secret_detection \
 	rubygem-responders-rails70>=3.0<4.0:www/rubygem-responders-rails70 \
 	rubygem-sprockets3>=3.7.0<3.8:devel/rubygem-sprockets3 \
-	rubygem-sprockets-rails-rails70>=3.5.1<3.6:devel/rubygem-sprockets-rails-rails70 \
+	rubygem-sprockets-rails-rails70>=3.5.2<3.6:devel/rubygem-sprockets-rails-rails70 \
 	rubygem-view_component-rails70>=3.21.0<3.22:devel/rubygem-view_component-rails70 \
 	rubygem-pg>=1.5.9<1.6:databases/rubygem-pg \
 	rubygem-rugged>=1.6<2:devel/rubygem-rugged \
 	rubygem-faraday-gitlab>=2<3:www/rubygem-faraday-gitlab \
 	rubygem-faraday-retry-gitlab>=2<3:www/rubygem-faraday-retry-gitlab \
-	rubygem-logger15>=1.5.3<1.6:devel/rubygem-logger15 \
+	rubygem-logger>=1.6.0<1.7:devel/rubygem-logger \
 	rubygem-marginalia>=1.11.1<1.12:databases/rubygem-marginalia \
 	rubygem-declarative_policy>=1.1.0<1.2:security/rubygem-declarative_policy \
 	rubygem-coverband>=6.1.4<6.1.5:www/rubygem-coverband \
@@ -74,7 +74,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-omniauth-github-gitlab>=2.0.1<2.1:net/rubygem-omniauth-github-gitlab \
 	rubygem-omniauth-google-oauth2-gitlab>=1.1<2:net/rubygem-omniauth-google-oauth2-gitlab \
 	rubygem-omniauth-oauth2-generic-gitlab>=0.2.2<0.3.0:security/rubygem-omniauth-oauth2-generic-gitlab \
-	rubygem-omniauth-saml-gitlab>=2.2.1<3:security/rubygem-omniauth-saml-gitlab \
+	rubygem-omniauth-saml-gitlab>=2.2.2<3:security/rubygem-omniauth-saml-gitlab \
 	rubygem-omniauth-shibboleth-redux>=2.0<3:security/rubygem-omniauth-shibboleth-redux \
 	rubygem-omniauth_openid_connect>=0.8.0<0.9:net/rubygem-omniauth_openid_connect \
 	rubygem-openid_connect>=2.3.1<2.4:net/rubygem-openid_connect \
@@ -98,7 +98,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-grape20>=2.0.0<2.1:devel/rubygem-grape20 \
 	rubygem-grape-entity>=1.0.1<1.1,1:devel/rubygem-grape-entity \
 	rubygem-grape-swagger>=2.1.2<2.2:devel/rubygem-grape-swagger \
-	rubygem-grape-swagger-entity>=0.5.1<0.6:devel/rubygem-grape-swagger-entity \
+	rubygem-grape-swagger-entity>=0.5.5<0.6:devel/rubygem-grape-swagger-entity \
 	rubygem-grape-path-helpers>=2.0.1<2.1:devel/rubygem-grape-path-helpers \
 	rubygem-rack-cors>=2.0.1<2.1:www/rubygem-rack-cors \
 	rubygem-graphql>=2.4.11<2.5:devel/rubygem-graphql \
@@ -143,7 +143,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-typhoeus>=1.4.0<1.5:www/rubygem-typhoeus \
 	rubygem-html-pipeline>=2.14.3<2.15:textproc/rubygem-html-pipeline \
 	rubygem-deckar01-task_list>=2.3.4<2.4:www/rubygem-deckar01-task_list \
-	rubygem-gitlab-markup>=1.9.0<1.10.0:textproc/rubygem-gitlab-markup \
+	rubygem-gitlab-markup>=2.0.0<2.1:textproc/rubygem-gitlab-markup \
 	rubygem-commonmarker0>=0.23.10<0.24:textproc/rubygem-commonmarker0 \
 	rubygem-kramdown-gitlab>=2.5.1<2.6:textproc/rubygem-kramdown-gitlab \
 	rubygem-redcloth>=4.3.3<4.4.0:www/rubygem-redcloth \
@@ -155,15 +155,14 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-asciidoctor-plantuml00>=0.0.16<0.1:textproc/rubygem-asciidoctor-plantuml00 \
 	rubygem-asciidoctor-kroki>=0.10.0<0.11:textproc/rubygem-asciidoctor-kroki \
 	rubygem-rouge-gitlab>=4.5.1<4.6:textproc/rubygem-rouge-gitlab \
-	rubygem-truncato>=0.7.12<0.8.0:textproc/rubygem-truncato \
-	rubygem-tty-prompt>=0.23<1:devel/rubygem-tty-prompt \
-	rubygem-nokogiri>=1.18.2<2:textproc/rubygem-nokogiri \
+	rubygem-truncato>=0.7.13<0.8.0:textproc/rubygem-truncato \
+	rubygem-nokogiri>=1.18.3<2:textproc/rubygem-nokogiri \
 	rubygem-gitlab-glfm-markdown>=0.0.27<0.1:textproc/rubygem-gitlab-glfm-markdown \
 	rubygem-tanuki_emoji>=0.13<1:graphics/rubygem-tanuki_emoji \
 	rubygem-unicode-emoji>=4.0.4<5:devel/rubygem-unicode-emoji \
-	rubygem-icalendar>=2.10.2<2.11:devel/rubygem-icalendar \
+	rubygem-icalendar>=2.10.3<2.11:devel/rubygem-icalendar \
 	rubygem-diffy>=3.4<4:textproc/rubygem-diffy \
-	rubygem-rack22>=2.2.9,3<2.3,3:www/rubygem-rack22 \
+	rubygem-rack22>=2.2.11,3<2.3,3:www/rubygem-rack22 \
 	rubygem-rack-timeout>=0.7.0<0.8:www/rubygem-rack-timeout \
 	rubygem-puma>=6.5.0<7:www/rubygem-puma \
 	rubygem-sd_notify>=0.1.1<0.2:devel/rubygem-sd_notify \
@@ -171,7 +170,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-sidekiq72>=7.2.4<7.3:devel/rubygem-sidekiq72 \
 	rubygem-sidekiq-cron-rails70>=1.12.0<1.13:devel/rubygem-sidekiq-cron-rails70 \
 	rubygem-fugit>=1.11.1<1.12:devel/rubygem-fugit \
-	rubygem-httparty021>=0.21.0<0.22:www/rubygem-httparty021 \
+	rubygem-httparty>=0.22.0<0.23:www/rubygem-httparty \
 	rubygem-rainbow>=3.1.1<4.0:devel/rubygem-rainbow \
 	rubygem-ruby-progressbar>=1.11<2:devel/rubygem-ruby-progressbar \
 	rubygem-re2>=2.15.0<3:devel/rubygem-re2 \
@@ -201,11 +200,11 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-gitlab-chronic>=0.10.6<0.11.0:devel/rubygem-gitlab-chronic \
 	rubygem-gitlab_chronic_duration>=0.12<1:devel/rubygem-gitlab_chronic_duration \
 	rubygem-rack-proxy>=0.7.7<0.8.0:www/rubygem-rack-proxy \
-	rubygem-cssbundling-rails-gitlab>=1.4.1<1.5:www/rubygem-cssbundling-rails-gitlab \
+	rubygem-cssbundling-rails-gitlab>=1.4.2<1.5:www/rubygem-cssbundling-rails-gitlab \
 	rubygem-terser>=1.0.2<1.0.3:textproc/rubygem-terser \
 	rubygem-addressable>=2.8<3:www/rubygem-addressable \
 	rubygem-gon-rails70>=6.4.0<6.5:www/rubygem-gon-rails70 \
-	rubygem-request_store15>=1.5.1<1.6:devel/rubygem-request_store15 \
+	rubygem-request_store>=1.7.0<1.8:devel/rubygem-request_store \
 	rubygem-base32>=0.3.4<0.4.0:converters/rubygem-base32 \
 	rubygem-gitlab-license>=2.6<3:devel/rubygem-gitlab-license \
 	rubygem-rack-attack>=6.7.0<6.8:www/rubygem-rack-attack \
@@ -224,11 +223,11 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-peek-rails70>=1.1<2.0:devel/rubygem-peek-rails70 \
 	rubygem-snowplow-tracker>=0.8.0<1:devel/rubygem-snowplow-tracker \
 	rubygem-webrick>=1.8.2<1.10:www/rubygem-webrick \
-	rubygem-prometheus-client-mmap>=1.2.8<1.3:devel/rubygem-prometheus-client-mmap \
-	rubygem-async-gitlab>=2.22.0<2.23:devel/rubygem-async-gitlab \
+	rubygem-prometheus-client-mmap>=1.2.9<1.3:devel/rubygem-prometheus-client-mmap \
+	rubygem-async-gitlab>=2.23.0<2.24:devel/rubygem-async-gitlab \
 	rubygem-gitlab-security_report_schemas>=0.1.2.min15.0.0.max15.2.1<0.1.2.min15.0.0.max15.2.2:devel/rubygem-gitlab-security_report_schemas \
 	rubygem-opentelemetry-sdk>=1.5.0:devel/rubygem-opentelemetry-sdk \
-	rubygem-opentelemetry-exporter-otlp>=0.26.3:devel/rubygem-opentelemetry-exporter-otlp \
+	rubygem-opentelemetry-exporter-otlp>=0.29.1:devel/rubygem-opentelemetry-exporter-otlp \
 	rubygem-opentelemetry-instrumentation-active_support>=0.6.0:devel/rubygem-opentelemetry-instrumentation-active_support \
 	rubygem-opentelemetry-instrumentation-action_pack>=0.10.0:devel/rubygem-opentelemetry-instrumentation-action_pack \
 	rubygem-opentelemetry-instrumentation-active_job>=0.7.7:devel/rubygem-opentelemetry-instrumentation-active_job \
@@ -237,27 +236,27 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-opentelemetry-instrumentation-aws_sdk>=0.5.4:devel/rubygem-opentelemetry-instrumentation-aws_sdk \
 	rubygem-opentelemetry-instrumentation-http>=0.23.4:devel/rubygem-opentelemetry-instrumentation-http \
 	rubygem-opentelemetry-instrumentation-concurrent_ruby>=0.21.4:devel/rubygem-opentelemetry-instrumentation-concurrent_ruby \
-	rubygem-opentelemetry-instrumentation-ethon>=0.21.8:devel/rubygem-opentelemetry-instrumentation-ethon \
-	rubygem-opentelemetry-instrumentation-excon>=0.22.4:devel/rubygem-opentelemetry-instrumentation-excon \
-	rubygem-opentelemetry-instrumentation-faraday>=0.24.6:devel/rubygem-opentelemetry-instrumentation-faraday \
+	rubygem-opentelemetry-instrumentation-ethon>=0.21.9:devel/rubygem-opentelemetry-instrumentation-ethon \
+	rubygem-opentelemetry-instrumentation-excon>=0.22.5:devel/rubygem-opentelemetry-instrumentation-excon \
+	rubygem-opentelemetry-instrumentation-faraday>=0.24.7:devel/rubygem-opentelemetry-instrumentation-faraday \
 	rubygem-opentelemetry-instrumentation-grape>=0.2.0:devel/rubygem-opentelemetry-instrumentation-grape \
 	rubygem-opentelemetry-instrumentation-graphql>=0.28.4:devel/rubygem-opentelemetry-instrumentation-graphql \
-	rubygem-opentelemetry-instrumentation-http_client>=0.22.7:devel/rubygem-opentelemetry-instrumentation-http_client \
-	rubygem-opentelemetry-instrumentation-net_http>=0.22.7:devel/rubygem-opentelemetry-instrumentation-net_http \
-	rubygem-opentelemetry-instrumentation-pg>=0.28.0:devel/rubygem-opentelemetry-instrumentation-pg \
+	rubygem-opentelemetry-instrumentation-http_client>=0.22.8:devel/rubygem-opentelemetry-instrumentation-http_client \
+	rubygem-opentelemetry-instrumentation-net_http>=0.22.8:devel/rubygem-opentelemetry-instrumentation-net_http \
+	rubygem-opentelemetry-instrumentation-pg>=0.29.1:devel/rubygem-opentelemetry-instrumentation-pg \
 	rubygem-opentelemetry-instrumentation-rack>=0.24.6:devel/rubygem-opentelemetry-instrumentation-rack \
-	rubygem-opentelemetry-instrumentation-rails>=0.33.0:devel/rubygem-opentelemetry-instrumentation-rails \
+	rubygem-opentelemetry-instrumentation-rails>=0.33.1:devel/rubygem-opentelemetry-instrumentation-rails \
 	rubygem-opentelemetry-instrumentation-rake>=0.2.1:devel/rubygem-opentelemetry-instrumentation-rake \
 	rubygem-opentelemetry-instrumentation-redis>=0.25.7:devel/rubygem-opentelemetry-instrumentation-redis \
 	rubygem-opentelemetry-instrumentation-sidekiq>=0.25.7:devel/rubygem-opentelemetry-instrumentation-sidekiq \
-	rubygem-warning>=1.3.0<1.4:devel/rubygem-warning \
+	rubygem-warning>=1.5.0<1.6:devel/rubygem-warning \
 	rubygem-git>=1.19.1<2:devel/rubygem-git \
 	rubygem-gitlab-dangerfiles>=4.8.1<4.9:devel/rubygem-gitlab-dangerfiles \
 	rubygem-license_finder-gitlab>=7.0.0<8:devel/rubygem-license_finder-gitlab \
 	rubygem-rspec>=3.0<4:devel/rubygem-rspec \
 	rubygem-octokit-gitlab>=9.0<10:net/rubygem-octokit-gitlab \
 	rubygem-faraday-multipart>=1.0<2:www/rubygem-faraday-multipart \
-	rubygem-gitlab-mail_room>=0.0.24<0.1.0:mail/rubygem-gitlab-mail_room \
+	rubygem-gitlab-mail_room>=0.0.27<0.1.0:mail/rubygem-gitlab-mail_room \
 	rubygem-email_reply_trimmer>=0.1<1.0:mail/rubygem-email_reply_trimmer \
 	rubygem-html2text>=0:textproc/rubygem-html2text \
 	rubygem-stackprof>=0.2.27<0.3:devel/rubygem-stackprof \
@@ -270,15 +269,15 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-sys-filesystem14>=1.4.3<1.5:sysutils/rubygem-sys-filesystem14 \
 	rubygem-net-ntp>0:net/rubygem-net-ntp \
 	rubygem-ssh_data>=1.3<2:security/rubygem-ssh_data \
-	rubygem-spamcheck>=1.3.0<1.4:net/rubygem-spamcheck \
-	rubygem-gitaly>=17.8.1:net/rubygem-gitaly \
+	rubygem-spamcheck>=1.3.3<1.4:net/rubygem-spamcheck \
+	rubygem-gitaly>=17.8.4:net/rubygem-gitaly \
 	rubygem-gitlab-kas-grpc>=${GITLAB_VERSION}:net/rubygem-gitlab-kas-grpc \
 	rubygem-grpc>=1.63.0<2:net/rubygem-grpc \
 	rubygem-google-protobuf3>=3.25.6<4:devel/rubygem-google-protobuf3 \
 	rubygem-toml-rb>=2.2.0<3:www/rubygem-toml-rb \
-	rubygem-flipper026>=0.26.2<0.27:devel/rubygem-flipper026 \
-	rubygem-flipper-active_record-rails70>=0.26.2<0.27:databases/rubygem-flipper-active_record-rails70 \
-	rubygem-flipper-active_support_cache_store-rails70>=0.26.2<0.27:devel/rubygem-flipper-active_support_cache_store-rails70 \
+	rubygem-flipper-gitlab>=0.28.0<0.29:devel/rubygem-flipper-gitlab \
+	rubygem-flipper-active_record-rails70>=0.28.0<0.29:databases/rubygem-flipper-active_record-rails70 \
+	rubygem-flipper-active_support_cache_store-rails70>=0.28.0<0.29:devel/rubygem-flipper-active_support_cache_store-rails70 \
 	rubygem-unleash>=3.2.2<3.3:devel/rubygem-unleash \
 	rubygem-gitlab-experiment>=0.9.1<0.10:devel/rubygem-gitlab-experiment \
 	rubygem-lograge-rails70>=0.11.2<1.0:www/rubygem-lograge-rails70 \
@@ -291,10 +290,10 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-lockbox>=1.3.0<1.4:security/rubygem-lockbox \
 	rubygem-valid_email>=0.1<1:mail/rubygem-valid_email \
 	rubygem-jsonb_accessor>=1.4<2:www/rubygem-jsonb_accessor \
-	rubygem-json27>=2.7.2<2.8:devel/rubygem-json27 \
+	rubygem-json>=2.10.0<2.11:devel/rubygem-json \
 	rubygem-json_schemer>=2.3.0<2.4:devel/rubygem-json_schemer \
-	rubygem-oj313>=3.13.21<3.14:devel/rubygem-oj313 \
-	rubygem-oj-introspect>=0.7<1:devel/rubygem-oj-introspect \
+	rubygem-oj>=3.16.0<3.17:devel/rubygem-oj \
+	rubygem-oj-introspect>=0.8<1:devel/rubygem-oj-introspect \
 	rubygem-multi_json114>=1.14.1<1.15:devel/rubygem-multi_json114 \
 	rubygem-yajl-ruby>=1.4.3<1.5:devel/rubygem-yajl-ruby \
 	rubygem-webauthn>=3.0<4:security/rubygem-webauthn \
@@ -310,8 +309,8 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-net-protocol01>=0.1.3<0.2:net/rubygem-net-protocol01 \
 	rubygem-nkf>=0.2.0<0.3:net/rubygem-nkf \
 	rubygem-net-http>=0.6.0<0.6.1:www/rubygem-net-http \
-	rubygem-uri-gitlab>=0.13.0<0.13.1:net/rubygem-uri-gitlab \
-	rubygem-duo_api>=1.3<2:security/rubygem-duo_api \
+	rubygem-uri-gitlab>=0.13.2<0.13.3:net/rubygem-uri-gitlab \
+	rubygem-duo_api>=1.4<2:security/rubygem-duo_api \
 	rubygem-gitlab-sdk>=0.3.0<0.4:devel/rubygem-gitlab-sdk \
 	rubygem-paper_trail>=15.0<16:devel/rubygem-paper_trail \
 	rubygem-i18n_data>=0.13.1<1:devel/rubygem-i18n_data \
diff --git a/www/gitlab/Makefile.common b/www/gitlab/Makefile.common
index 605a6fa0b199..a9df93c0aaad 100644
--- a/www/gitlab/Makefile.common
+++ b/www/gitlab/Makefile.common
@@ -1,5 +1,5 @@
-GITLAB_VERSION=		17.9.2
-GITLAB_PORTREVISION=	1
+GITLAB_VERSION=		17.10.0
+GITLAB_PORTREVISION=	0
 
 # Git version gitaly should use (from gitlab mirror)
 # Find current tag from Makefile and .gitlab-ci.yaml
diff --git a/www/gitlab/distinfo b/www/gitlab/distinfo
index 6fb2ddaea600..bf5d84602d22 100644
--- a/www/gitlab/distinfo
+++ b/www/gitlab/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1741805223
-SHA256 (gitlab-foss-v17.9.2.tar.bz2) = c28a4c55b91402f608ba13a11d62f1e1ce6ced97c72b28c921aad85ec42fba65
-SIZE (gitlab-foss-v17.9.2.tar.bz2) = 115724401
-TIMESTAMP = 1741805276
-SHA256 (gitlab-v17.9.2-ee.tar.bz2) = 246a9bf8bb3864661febc31b42a04cc7dbde1f5c7ecadab8f541381aa4b64f80
-SIZE (gitlab-v17.9.2-ee.tar.bz2) = 126792361
+TIMESTAMP = 1742394117
+SHA256 (gitlab-foss-v17.10.0.tar.bz2) = 01c2ef935bb71bb70abf993536c12444adec8fb409b4d6b206ffae8581b581ac
+SIZE (gitlab-foss-v17.10.0.tar.bz2) = 128878627
+TIMESTAMP = 1742394177
+SHA256 (gitlab-v17.10.0-ee.tar.bz2) = 44459b708431214758cca04a87880872f5cdf563c4c417a3f14c3f5e9a658e85
+SIZE (gitlab-v17.10.0-ee.tar.bz2) = 140279653
diff --git a/www/gitlab/files/patch-Gemfile b/www/gitlab/files/patch-Gemfile
index b7fc39e4f8be..e4317e6fb580 100644
--- a/www/gitlab/files/patch-Gemfile
+++ b/www/gitlab/files/patch-Gemfile
@@ -1,4 +1,4 @@
---- Gemfile.orig	2025-03-11 19:30:16 UTC
+--- Gemfile.orig	2025-03-19 10:41:02 UTC
 +++ Gemfile
 @@ -164,8 +164,8 @@ gem 'rack-cors', '~> 2.0.1', require: 'rack/cors', fea
  gem 'rack-cors', '~> 2.0.1', require: 'rack/cors', feature_category: :shared
@@ -47,18 +47,7 @@
  gem 'sidekiq-cron', '~> 1.12.0', feature_category: :scalability
  gem 'gitlab-sidekiq-fetcher',
    path: 'vendor/gems/sidekiq-reliable-fetch',
-@@ -327,8 +327,8 @@ gem 'device_detector', feature_category: :shared
- gem 'device_detector', feature_category: :shared
- 
- # Redis
--gem 'redis', '~> 5.3.0', feature_category: :redis
--gem 'redis-clustering', '~> 5.3.0', feature_category: :redis
-+gem 'redis', '~> 5.3', feature_category: :redis
-+gem 'redis-clustering', '~> 5.3', feature_category: :redis
- gem 'connection_pool', '~> 2.4', feature_category: :shared
- 
- # Redis session store
-@@ -431,7 +431,7 @@ gem 'snowplow-tracker', '~> 0.8.0', feature_category: 
+@@ -430,7 +430,7 @@ gem 'snowplow-tracker', '~> 0.8.0', feature_category: 
  gem 'snowplow-tracker', '~> 0.8.0', feature_category: :product_analytics
  
  # Metrics
@@ -67,12 +56,12 @@
  gem 'prometheus-client-mmap', '~> 1.2.8', require: 'prometheus/client', feature_category: :shared
  
  # Event-driven reactor for Ruby
-@@ -473,138 +473,15 @@ gem 'warning', '~> 1.3.0', feature_category: :shared
+@@ -472,138 +472,15 @@ gem 'warning', '~> 1.5.0', feature_category: :shared
  
- gem 'warning', '~> 1.3.0', feature_category: :shared
+ gem 'warning', '~> 1.5.0', feature_category: :shared
  
 -group :development do
--  gem 'lefthook', '~> 1.7.0', require: false, feature_category: :tooling
+-  gem 'lefthook', '~> 1.11.0', require: false, feature_category: :tooling
 -  gem 'rubocop', feature_category: :tooling
 -  gem 'solargraph', '~> 0.47.2', require: false, feature_category: :shared
 -
@@ -147,7 +136,7 @@
 -  # For now we only use vite in development / test, and not for production builds
 -  # See: https://gitlab.com/gitlab-org/frontend/rfcs/-/issues/106
 -  gem 'vite_rails', '~> 3.0.17', feature_category: :shared
--  gem 'vite_ruby', '~> 3.8.0', feature_category: :shared
+-  gem 'vite_ruby', '~> 3.9.0', feature_category: :shared
 -
 -  gem 'gitlab-housekeeper', path: 'gems/gitlab-housekeeper', feature_category: :tooling
 -end
@@ -160,7 +149,7 @@
 -  gem 'simplecov', '~> 0.22', require: false, feature_category: :tooling
 -  gem 'simplecov-lcov', '~> 0.8.0', require: false, feature_category: :tooling
 -  gem 'simplecov-cobertura', '~> 2.1.0', require: false, feature_category: :tooling
--  gem 'undercover', '~> 0.5.0', require: false, feature_category: :tooling
+-  gem 'undercover', '~> 0.6.0', require: false, feature_category: :tooling
 -end
 -
  # Gems required in omnibus-gitlab pipeline
@@ -187,7 +176,7 @@
 -
 -  gem 'graphlyte', '~> 1.0.0', feature_category: :shared
 -
--  gem 'shoulda-matchers', '~> 5.1.0', require: false, feature_category: :shared
+-  gem 'shoulda-matchers', '~> 6.4.0', require: false, feature_category: :shared
 -  gem 'email_spec', '~> 2.3.0', feature_category: :shared
 -  gem 'webmock', '~> 3.25.0', feature_category: :shared
 -  gem 'rails-controller-testing', feature_category: :shared
@@ -195,23 +184,27 @@
 -  gem 'test-prof', '~> 1.4.0', feature_category: :tooling
 -  gem 'rspec_junit_formatter', feature_category: :shared
 -  gem 'guard-rspec', feature_category: :shared
--  gem 'axe-core-rspec', '~> 4.9.0', feature_category: :tooling
+-  gem 'axe-core-rspec', '~> 4.10.0', feature_category: :tooling
 -
 -  # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527
 -  gem 'derailed_benchmarks', require: false, feature_category: :shared
 -
--  gem 'gitlab_quality-test_tooling', '~> 2.4.0', require: false, feature_category: :tooling
+-  gem 'gitlab_quality-test_tooling', '~> 2.8.0', require: false, feature_category: :tooling
 -end
 -
  gem 'octokit', '~> 9.0', feature_category: :importers
  # Needed by octokit: https://github.com/octokit/octokit.rb/pull/1688
  gem 'faraday-multipart', '~> 1.0', feature_category: :importers
-@@ -642,13 +519,13 @@ gem 'gitaly', '~> 17.8.0', feature_category: :gitaly
- gem 'gitaly', '~> 17.8.0', feature_category: :gitaly
+@@ -638,16 +515,16 @@ gem 'spamcheck', '~> 1.3.0', feature_category: :inside
+ gem 'spamcheck', '~> 1.3.0', feature_category: :insider_threat
+ 
+ # Gitaly GRPC protocol definitions
+-gem 'gitaly', '~> 17.8.0', feature_category: :gitaly
++gem 'gitaly', '~> 17.8', feature_category: :gitaly
  
  # KAS GRPC protocol definitions
 -gem 'gitlab-kas-grpc', '~> 17.9.0.pre.rc2', feature_category: :deployment_management
-+gem 'gitlab-kas-grpc', '~> 17.9.0', feature_category: :deployment_management
++gem 'gitlab-kas-grpc', '~> 17.9', feature_category: :deployment_management
  
  # Lock the version before issues below are resolved:
  # https://gitlab.com/gitlab-org/gitlab/-/issues/473169#note_2028352939
@@ -222,7 +215,7 @@
  
  gem 'google-protobuf', '~> 3.25', '>= 3.25.3', feature_category: :shared
  
-@@ -669,7 +546,7 @@ gem 'gitlab-net-dns', '~> 0.10.0', feature_category: :
+@@ -668,7 +545,7 @@ gem 'gitlab-net-dns', '~> 0.10.0', feature_category: :
  gem 'gitlab-net-dns', '~> 0.10.0', feature_category: :shared
  
  # Countries list
@@ -231,7 +224,7 @@
  
  gem 'retriable', '~> 3.1.2', feature_category: :shared
  
-@@ -750,10 +627,15 @@ gem 'duo_api', '~> 1.3', feature_category: :system_acc
+@@ -749,10 +626,15 @@ gem 'duo_api', '~> 1.3', feature_category: :system_acc
  
  gem 'duo_api', '~> 1.3', feature_category: :system_access
  
diff --git a/www/gitlab/files/patch-config_gitlab.yml.example b/www/gitlab/files/patch-config_gitlab.yml.example
index bdfc3d16cb92..a78db5ae4e8c 100644
--- a/www/gitlab/files/patch-config_gitlab.yml.example
+++ b/www/gitlab/files/patch-config_gitlab.yml.example
@@ -1,6 +1,6 @@
---- config/gitlab.yml.example.orig	2025-02-19 06:08:46 UTC
+--- config/gitlab.yml.example.orig	2025-03-19 10:41:02 UTC
 +++ config/gitlab.yml.example
-@@ -473,7 +473,7 @@ production: &base
+@@ -478,7 +478,7 @@ production: &base
    ## GitLab Pages
    pages:
      enabled: false
@@ -9,7 +9,7 @@
      # The location where pages are stored (default: shared/pages).
      # path: shared/pages
  
-@@ -483,9 +483,9 @@ production: &base
+@@ -488,9 +488,9 @@ production: &base
      host: example.com
      port: 80 # Set to 443 if you serve the pages with HTTPS
      https: false # Set to true if you serve the pages with HTTPS
@@ -22,7 +22,7 @@
  
      # File that contains the shared secret key for verifying access for gitlab-pages.
      # Default is '.gitlab_pages_secret' relative to Rails.root (i.e. root of the GitLab app).
-@@ -1216,13 +1216,13 @@ production: &base
+@@ -1221,13 +1221,13 @@ production: &base
    repositories:
      storages: # You must have at least a `default` storage path.
        default:
@@ -38,7 +38,7 @@
      # archive_permissions: 0640 # Permissions for the resulting backup.tar file (default: 0600)
      # keep_time: 604800   # default: 0 (forever) (in seconds)
      # pg_schema: public     # default: nil, it means that all schemas will be backed up
-@@ -1257,12 +1257,12 @@ production: &base
+@@ -1262,12 +1262,12 @@ production: &base
  
    ## GitLab Shell settings
    gitlab_shell:
@@ -54,16 +54,16 @@
  
      # Git over HTTP
      upload_pack: true
-@@ -1277,7 +1277,7 @@ production: &base
+@@ -1282,7 +1282,7 @@ production: &base
    workhorse:
      # File that contains the secret key for verifying access for gitlab-workhorse.
      # Default is '.gitlab_workhorse_secret' relative to Rails.root (i.e. root of the GitLab app).
 -    # secret_file: /home/git/gitlab/.gitlab_workhorse_secret
 +    # secret_file: %%WWWDIR%%/.gitlab_workhorse_secret
  
-   # This section to be removed when we merge https://gitlab.com/gitlab-org/gitlab-development-kit/-/merge_requests/4382
-   topology_service:
-@@ -1304,7 +1304,7 @@ production: &base
+   cell:
+     # enabled: false
+@@ -1300,7 +1300,7 @@ production: &base
      # enabled: true
      # File that contains the secret key for verifying access for gitlab-kas.
      # Default is '.gitlab_kas_secret' relative to Rails.root (i.e. root of the GitLab app).
@@ -72,7 +72,7 @@
  
      # The URL to the external KAS API (used by the Kubernetes agents)
      # external_url: wss://kas.example.com
-@@ -1331,13 +1331,13 @@ production: &base
+@@ -1327,13 +1327,13 @@ production: &base
  
    ## GitLab Elasticsearch settings
    elasticsearch:
@@ -88,7 +88,7 @@
  
    ## Webpack settings
    # If enabled, this will tell rails to serve frontend assets from the webpack-dev-server running
-@@ -1358,18 +1358,18 @@ production: &base
+@@ -1354,18 +1354,18 @@ production: &base
  
      # Sidekiq exporter is a dedicated Prometheus metrics server optionally running alongside Sidekiq.
      sidekiq_exporter:
@@ -114,7 +114,7 @@
  
      # Web exporter is a dedicated Prometheus metrics server optionally running alongside Puma.
      web_exporter:
-@@ -1596,13 +1596,13 @@ test:
+@@ -1592,13 +1592,13 @@ test:
          gitaly_address: unix:tmp/tests/gitaly/praefect.socket
  
    gitaly:
diff --git a/www/gitlab/files/patch-config_initializers_1__settings.rb b/www/gitlab/files/patch-config_initializers_1__settings.rb
index 4792c05020d4..2c8adc9a51e9 100644
--- a/www/gitlab/files/patch-config_initializers_1__settings.rb
+++ b/www/gitlab/files/patch-config_initializers_1__settings.rb
@@ -1,6 +1,6 @@
---- config/initializers/1_settings.rb.orig	2025-02-19 06:08:46 UTC
+--- config/initializers/1_settings.rb.orig	2025-03-19 10:41:02 UTC
 +++ config/initializers/1_settings.rb
-@@ -214,11 +214,7 @@ Settings.gitlab['ssh_user'] ||= Settings.gitlab.user
+@@ -215,11 +215,7 @@ Settings.gitlab['ssh_user'] ||= Settings.gitlab.user
  Settings.gitlab['user'] ||= 'git'
  # External configuration may cause the ssh user to differ from the GitLab user
  Settings.gitlab['ssh_user'] ||= Settings.gitlab.user
diff --git a/www/gitlab/files/patch-gems_gitlab-backup-cli_gitlab-backup-cli.gemspec b/www/gitlab/files/patch-gems_gitlab-backup-cli_gitlab-backup-cli.gemspec
index 3229305272cb..7346dbb850eb 100644
--- a/www/gitlab/files/patch-gems_gitlab-backup-cli_gitlab-backup-cli.gemspec
+++ b/www/gitlab/files/patch-gems_gitlab-backup-cli_gitlab-backup-cli.gemspec
@@ -1,4 +1,4 @@
---- gems/gitlab-backup-cli/gitlab-backup-cli.gemspec.orig	2025-02-19 06:08:46 UTC
+--- gems/gitlab-backup-cli/gitlab-backup-cli.gemspec.orig	2025-03-19 10:41:02 UTC
 +++ gems/gitlab-backup-cli/gitlab-backup-cli.gemspec
 @@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
  
@@ -15,9 +15,9 @@
    spec.add_dependency "google-protobuf", "~> 3.25", ">= 3.25.3"
 -  spec.add_dependency "grpc", "= 1.63.0"
 +  spec.add_dependency "grpc", "~> 1.63"
-   spec.add_dependency "json", "~> 2.7.2"
+   spec.add_dependency "json", "~> 2.7"
    spec.add_dependency "jwt", "~> 2.5"
-   spec.add_dependency "logger", "~> 1.5.3"
+   spec.add_dependency "logger", "~> 1.5"
 -  spec.add_dependency "minitest", "~> 5.11.0"
 +  spec.add_dependency "minitest", "~> 5.11"
    spec.add_dependency "parallel", "~> 1.19"
diff --git a/www/gitlab/files/patch-gems_gitlab-secret__detection_gitlab-secret__detection.gemspec b/www/gitlab/files/patch-gems_gitlab-secret__detection_gitlab-secret__detection.gemspec
deleted file mode 100644
index 9d861e5e52b9..000000000000
--- a/www/gitlab/files/patch-gems_gitlab-secret__detection_gitlab-secret__detection.gemspec
+++ /dev/null
@@ -1,11 +0,0 @@
---- gems/gitlab-secret_detection/gitlab-secret_detection.gemspec.orig	2025-02-19 06:08:46 UTC
-+++ gems/gitlab-secret_detection/gitlab-secret_detection.gemspec
-@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
-   spec.files = Dir['lib/**/*.rb']
-   spec.require_paths = ["lib"]
- 
--  spec.add_runtime_dependency "grpc", "= 1.63.0"
-+  spec.add_runtime_dependency "grpc", "~> 1.63"
-   spec.add_runtime_dependency "grpc-tools", "= 1.63.0"
-   spec.add_runtime_dependency "parallel", "~> 1.22"
-   spec.add_runtime_dependency "re2", "~> 2.7"
diff --git a/www/gitlab/pkg-message b/www/gitlab/pkg-message
index d35b8b0a3ecc..4c0ce4714446 100644
--- a/www/gitlab/pkg-message
+++ b/www/gitlab/pkg-message
@@ -6,7 +6,7 @@ Gitlab was installed successfully.
 You now need to set up the various components of Gitlab, so please
 follow the instructions in the guide at:
 
-https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/install/17.9-freebsd.md
+https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/install/17.10-freebsd.md
 EOM
   type: install
 }
@@ -18,9 +18,9 @@ EOM
 {
   message: <<EOM
 If you just installed an major upgrade of GitLab, for example you
-switched from 17.5.x to 17.6.x, please follow the instructions in the guide at:
+switched from 17.9.x to 17.10.x, please follow the instructions in the guide at:
 
-https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/update/17.8-17.9-freebsd.md
+https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/update/17.9-17.10-freebsd.md
 
 If you just installed an minor upgrade of GitLab please follow
 the instructions in the guide at: