git: d7043b1dbd3d - main - www/gitlab: upgrade to 18.7.0

From: Matthias Fechner <mfechner_at_FreeBSD.org>
Date: Fri, 02 Jan 2026 07:12:14 UTC
The branch main has been updated by mfechner:

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

commit d7043b1dbd3d540457ea0f7f33310b3f488ad341
Author:     Matthias Fechner <mfechner@FreeBSD.org>
AuthorDate: 2025-12-31 09:12:45 +0000
Commit:     Matthias Fechner <mfechner@FreeBSD.org>
CommitDate: 2026-01-02 06:52:45 +0000

    www/gitlab: upgrade to 18.7.0
    
    Downgrade nodejs to 20 and upgrade tree-sitter to fix asset compilation issues.
    
    Changes:        https://about.gitlab.com/releases/2025/12/18/gitlab-18-7-released/
---
 devel/gitaly/distinfo                            |  26 ++---
 devel/gitlab-shell/Makefile                      |   3 +-
 devel/gitlab-shell/distinfo                      |  10 +-
 net/gitlab-agent/distinfo                        |  10 +-
 net/rubygem-gitaly/Makefile                      |   2 +-
 net/rubygem-gitaly/distinfo                      |   6 +-
 textproc/gitlab-elasticsearch-indexer/Makefile   |   2 +-
 textproc/gitlab-elasticsearch-indexer/distinfo   |  10 +-
 www/gitlab-pages/distinfo                        |  10 +-
 www/gitlab-workhorse/distinfo                    |  10 +-
 www/gitlab/Makefile                              |  35 ++++---
 www/gitlab/Makefile.common                       |   8 +-
 www/gitlab/distinfo                              |  12 +--
 www/gitlab/files/patch-Gemfile                   | 118 +++++++++++------------
 www/gitlab/files/patch-config_gitlab.yml.example |  18 ++--
 www/gitlab/files/patch-lib_support_nginx_gitlab  |   6 +-
 www/gitlab/files/patch-package.json              |  12 +++
 www/gitlab/pkg-message                           |   6 +-
 www/rubygem-faraday-net_http-gitlab/Makefile     |   3 +-
 19 files changed, 160 insertions(+), 147 deletions(-)

diff --git a/devel/gitaly/distinfo b/devel/gitaly/distinfo
index 06d03e76085c..9f9678a8f73d 100644
--- a/devel/gitaly/distinfo
+++ b/devel/gitaly/distinfo
@@ -1,13 +1,13 @@
-TIMESTAMP = 1765426153
-SHA256 (go/devel_gitaly/gitaly-v18.6.2/go.mod) = 1aace7ab09969668d9aad9416851833a2ec122442b060ce133e60d1d7c9b0252
-SIZE (go/devel_gitaly/gitaly-v18.6.2/go.mod) = 14044
-SHA256 (go/devel_gitaly/gitaly-v18.6.2/gitaly-v18.6.2.tar.bz2) = 856ccaefcd634fa08e9f801c6a0cfc80446b9d57ecd263bdc0f316650f3412cb
-SIZE (go/devel_gitaly/gitaly-v18.6.2/gitaly-v18.6.2.tar.bz2) = 4657307
-SHA256 (go/devel_gitaly/gitaly-v18.6.2/git-v2.50.0.tar.bz2) = 33e44c038ae6b3ff526e6927c2c6ff1658fd7f3c7334b079c019fa08f8ab20e4
-SIZE (go/devel_gitaly/gitaly-v18.6.2/git-v2.50.0.tar.bz2) = 9249878
-SHA256 (go/devel_gitaly/gitaly-v18.6.2/gitlab-org-git-419c72cb8ada252b260efc38ff91fe201de7c8c3_GL0.tar.gz) = d3397b210ca156ed84ff69b3a7f6316c5026bd05d11455f23d8335473dceaf1b
-SIZE (go/devel_gitaly/gitaly-v18.6.2/gitlab-org-git-419c72cb8ada252b260efc38ff91fe201de7c8c3_GL0.tar.gz) = 11822923
-SHA256 (go/devel_gitaly/gitaly-v18.6.2/gitlab-org-git-23466173824c0a0f835c0d790c2f38156ae6284a_GL0.tar.gz) = 01a4069b15e9262151b3b97f989d4939ba8966bd5269875add2a34806817c01a
-SIZE (go/devel_gitaly/gitaly-v18.6.2/gitlab-org-git-23466173824c0a0f835c0d790c2f38156ae6284a_GL0.tar.gz) = 11745131
-SHA256 (go/devel_gitaly/gitaly-v18.6.2/8309.patch) = 44a7f527e23f818b0c7080ac6f8a56b14f6711b3feca5dd1f59e39557a7e8bce
-SIZE (go/devel_gitaly/gitaly-v18.6.2/8309.patch) = 1287
+TIMESTAMP = 1766390125
+SHA256 (go/devel_gitaly/gitaly-v18.7.0/go.mod) = bf373eee468af0e57c7816ba015809f29f09dcd7822f6f2573afac4a15664219
+SIZE (go/devel_gitaly/gitaly-v18.7.0/go.mod) = 14016
+SHA256 (go/devel_gitaly/gitaly-v18.7.0/gitaly-v18.7.0.tar.bz2) = 37d08a890abbd15821a257001bbd56deecd8d4a79157c05e2be51672e01d089e
+SIZE (go/devel_gitaly/gitaly-v18.7.0/gitaly-v18.7.0.tar.bz2) = 4666224
+SHA256 (go/devel_gitaly/gitaly-v18.7.0/git-v2.50.0.tar.bz2) = 33e44c038ae6b3ff526e6927c2c6ff1658fd7f3c7334b079c019fa08f8ab20e4
+SIZE (go/devel_gitaly/gitaly-v18.7.0/git-v2.50.0.tar.bz2) = 9249878
+SHA256 (go/devel_gitaly/gitaly-v18.7.0/gitlab-org-git-aea8cc3a10c325a22a75e2d4f582db959d3854ae_GL0.tar.gz) = d7cb6a43a72e1ebe2369964727a0dfc55ce07bde0214703ed6c156127bb51889
+SIZE (go/devel_gitaly/gitaly-v18.7.0/gitlab-org-git-aea8cc3a10c325a22a75e2d4f582db959d3854ae_GL0.tar.gz) = 11920888
+SHA256 (go/devel_gitaly/gitaly-v18.7.0/gitlab-org-git-419c72cb8ada252b260efc38ff91fe201de7c8c3_GL0.tar.gz) = d3397b210ca156ed84ff69b3a7f6316c5026bd05d11455f23d8335473dceaf1b
+SIZE (go/devel_gitaly/gitaly-v18.7.0/gitlab-org-git-419c72cb8ada252b260efc38ff91fe201de7c8c3_GL0.tar.gz) = 11822923
+SHA256 (go/devel_gitaly/gitaly-v18.7.0/8309.patch) = 90377ee1d14ec92e69dd97ad6d7c1d2bcce1c05fdf6095f04d51780b22cd65c7
+SIZE (go/devel_gitaly/gitaly-v18.7.0/8309.patch) = 1285
diff --git a/devel/gitlab-shell/Makefile b/devel/gitlab-shell/Makefile
index 8fe3794bd84b..7cc926784d36 100644
--- a/devel/gitlab-shell/Makefile
+++ b/devel/gitlab-shell/Makefile
@@ -1,7 +1,6 @@
 PORTNAME=	gitlab-shell
-PORTVERSION=	14.45.3
+PORTVERSION=	14.45.5
 DISTVERSIONPREFIX=	v
-PORTREVISION=	2
 CATEGORIES=	devel
 
 MAINTAINER=	mfechner@FreeBSD.org
diff --git a/devel/gitlab-shell/distinfo b/devel/gitlab-shell/distinfo
index a3f2aaaa18a2..d3bb8baf2431 100644
--- a/devel/gitlab-shell/distinfo
+++ b/devel/gitlab-shell/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1761544437
-SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.45.3/go.mod) = 2f53e0b638b11941c5aff12026a1dbb040150ef9e10d73d4368678a79c4550ec
-SIZE (go/devel_gitlab-shell/gitlab-shell-v14.45.3/go.mod) = 6034
-SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.45.3/gitlab-shell-v14.45.3.tar.bz2) = 4feb7508f8eb200296d9a975867bc6d759c6912583c0324afe02523339116208
-SIZE (go/devel_gitlab-shell/gitlab-shell-v14.45.3/gitlab-shell-v14.45.3.tar.bz2) = 173784
+TIMESTAMP = 1766204661
+SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.45.5/go.mod) = 721ad47689938dda2e70718ff011edf163c71d22a8abd23603b0dcc44bdb4aa4
+SIZE (go/devel_gitlab-shell/gitlab-shell-v14.45.5/go.mod) = 6035
+SHA256 (go/devel_gitlab-shell/gitlab-shell-v14.45.5/gitlab-shell-v14.45.5.tar.bz2) = 457c6da45982b647bb18544cd48e9c375fe95589d1ca6a3ea2df8c360a489845
+SIZE (go/devel_gitlab-shell/gitlab-shell-v14.45.5/gitlab-shell-v14.45.5.tar.bz2) = 173284
diff --git a/net/gitlab-agent/distinfo b/net/gitlab-agent/distinfo
index 8cf7a86602da..6c02d0d333a3 100644
--- a/net/gitlab-agent/distinfo
+++ b/net/gitlab-agent/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1765426154
-SHA256 (go/net_gitlab-agent/gitlab-agent-v18.6.2/v18.6.2.mod) = 70aa1942f288770a76e933b4f648185d795b0ad148162c1bdf91c13c0c122526
-SIZE (go/net_gitlab-agent/gitlab-agent-v18.6.2/v18.6.2.mod) = 9944
-SHA256 (go/net_gitlab-agent/gitlab-agent-v18.6.2/v18.6.2.zip) = a500e7d7947660c1e5edfc44fef91295e747dad6a1868a2abd85da98db433388
-SIZE (go/net_gitlab-agent/gitlab-agent-v18.6.2/v18.6.2.zip) = 1917086
+TIMESTAMP = 1766390142
+SHA256 (go/net_gitlab-agent/gitlab-agent-v18.7.0/v18.7.0.mod) = 81d663919a3c5095761afddedbd0a268c988262096cbfaeafd1d4a31c3cb83c4
+SIZE (go/net_gitlab-agent/gitlab-agent-v18.7.0/v18.7.0.mod) = 9374
+SHA256 (go/net_gitlab-agent/gitlab-agent-v18.7.0/v18.7.0.zip) = 841da5f43cfa9b4dd616c62effc637c8e48260d23503e0d8d585034d437012a6
+SIZE (go/net_gitlab-agent/gitlab-agent-v18.7.0/v18.7.0.zip) = 1857006
diff --git a/net/rubygem-gitaly/Makefile b/net/rubygem-gitaly/Makefile
index 2ad81adffec7..75832f28319f 100644
--- a/net/rubygem-gitaly/Makefile
+++ b/net/rubygem-gitaly/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	gitaly
-PORTVERSION=	18.6.0
+PORTVERSION=	18.7.0
 CATEGORIES=	net rubygems
 MASTER_SITES=	RG
 
diff --git a/net/rubygem-gitaly/distinfo b/net/rubygem-gitaly/distinfo
index 4d22ca2b1355..37ffb8468179 100644
--- a/net/rubygem-gitaly/distinfo
+++ b/net/rubygem-gitaly/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1763614415
-SHA256 (rubygem/gitaly-18.6.0.gem) = 9dba24ab9fd71ac026967b0e9c2a99d65a8b6d034a5a3efe63c6db16c0a1464c
-SIZE (rubygem/gitaly-18.6.0.gem) = 54272
+TIMESTAMP = 1766207311
+SHA256 (rubygem/gitaly-18.7.0.gem) = 915f0d1b078f2eac89390f1c2083b72434f51cd00c428006e231df25b19a6b4e
+SIZE (rubygem/gitaly-18.7.0.gem) = 54272
diff --git a/textproc/gitlab-elasticsearch-indexer/Makefile b/textproc/gitlab-elasticsearch-indexer/Makefile
index 82f6cf1b305a..030f6833c3d3 100644
--- a/textproc/gitlab-elasticsearch-indexer/Makefile
+++ b/textproc/gitlab-elasticsearch-indexer/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	gitlab-elasticsearch-indexer
-PORTVERSION=	5.10.1
+PORTVERSION=	5.12.0
 DISTVERSIONPREFIX=	v
 CATEGORIES=	textproc
 
diff --git a/textproc/gitlab-elasticsearch-indexer/distinfo b/textproc/gitlab-elasticsearch-indexer/distinfo
index 7aa26f0efcd7..d4c5e643abc8 100644
--- a/textproc/gitlab-elasticsearch-indexer/distinfo
+++ b/textproc/gitlab-elasticsearch-indexer/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1763473974
-SHA256 (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.10.1/go.mod) = ba87496f645fc69725428a78a92f7f811c27a62344227ef501d21d5ac6fc6baa
-SIZE (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.10.1/go.mod) = 5684
-SHA256 (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.10.1/gitlab-elasticsearch-indexer-v5.10.1.tar.bz2) = be451ff0ed52a3075a5a989e5d92fd49e3b998862288fe1eaff49740e750641b
-SIZE (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.10.1/gitlab-elasticsearch-indexer-v5.10.1.tar.bz2) = 119703
+TIMESTAMP = 1766204573
+SHA256 (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.12.0/go.mod) = 745edfb7ae9ea5c817bc71d3db2c39a24d7c2d65863054c6046776663934b7f4
+SIZE (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.12.0/go.mod) = 5076
+SHA256 (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.12.0/gitlab-elasticsearch-indexer-v5.12.0.tar.bz2) = 8d179e9016dcfe6ee363fcdfbd65a5bb5c33a28549098af74b06bf7b9be9c42d
+SIZE (go/textproc_gitlab-elasticsearch-indexer/gitlab-elasticsearch-indexer-v5.12.0/gitlab-elasticsearch-indexer-v5.12.0.tar.bz2) = 119119
diff --git a/www/gitlab-pages/distinfo b/www/gitlab-pages/distinfo
index cbd198b7fcea..f85533dba568 100644
--- a/www/gitlab-pages/distinfo
+++ b/www/gitlab-pages/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1765426161
-SHA256 (go/www_gitlab-pages/gitlab-pages-v18.6.2/go.mod) = 01a4fafec3c597505de06cc4dc76a706e78e461b21562113750dfec75e9458c2
-SIZE (go/www_gitlab-pages/gitlab-pages-v18.6.2/go.mod) = 3416
-SHA256 (go/www_gitlab-pages/gitlab-pages-v18.6.2/gitlab-pages-v18.6.2.tar.bz2) = c639c05bd79199fbd93cc2a9385c33cff461581aca20cdba3ff2b89a49879b7f
-SIZE (go/www_gitlab-pages/gitlab-pages-v18.6.2/gitlab-pages-v18.6.2.tar.bz2) = 237023
+TIMESTAMP = 1766390148
+SHA256 (go/www_gitlab-pages/gitlab-pages-v18.7.0/go.mod) = 8bc5ad61abb3a5a6d07a64652460587511671a82c104cf5997806b5d609a8dd6
+SIZE (go/www_gitlab-pages/gitlab-pages-v18.7.0/go.mod) = 3523
+SHA256 (go/www_gitlab-pages/gitlab-pages-v18.7.0/gitlab-pages-v18.7.0.tar.bz2) = 3fa8238f79e389051044bd271021095480bd37ab494b65bf72c0774688a0ab56
+SIZE (go/www_gitlab-pages/gitlab-pages-v18.7.0/gitlab-pages-v18.7.0.tar.bz2) = 237679
diff --git a/www/gitlab-workhorse/distinfo b/www/gitlab-workhorse/distinfo
index 276c884ff68b..650ee4833b60 100644
--- a/www/gitlab-workhorse/distinfo
+++ b/www/gitlab-workhorse/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1765426180
-SHA256 (go/www_gitlab-workhorse/gitlab-foss-v18.6.2/go.mod) = 11c339bb0fbbc0ad18e7e636a2f3cd686ea3425805f0ed0db5f629008a1d6952
-SIZE (go/www_gitlab-workhorse/gitlab-foss-v18.6.2/go.mod) = 9356
-SHA256 (go/www_gitlab-workhorse/gitlab-foss-v18.6.2/gitlab-foss-v18.6.2.tar.bz2) = 6e0ee01b940be896e256ced4d312967101e489556a9ac30d3c413a8986272c4e
-SIZE (go/www_gitlab-workhorse/gitlab-foss-v18.6.2/gitlab-foss-v18.6.2.tar.bz2) = 126869309
+TIMESTAMP = 1766390162
+SHA256 (go/www_gitlab-workhorse/gitlab-foss-v18.7.0/go.mod) = dd3a4f3dae583fc4c00686c61fa6033d1c9b99e428f29c79a022ee39a4692ada
+SIZE (go/www_gitlab-workhorse/gitlab-foss-v18.7.0/go.mod) = 9356
+SHA256 (go/www_gitlab-workhorse/gitlab-foss-v18.7.0/gitlab-foss-v18.7.0.tar.bz2) = e64409b4214a1fb4317cdb9f9ee97ec69bf401a4a0527952b396bcaa3add4efa
+SIZE (go/www_gitlab-workhorse/gitlab-foss-v18.7.0/gitlab-foss-v18.7.0.tar.bz2) = 129790096
diff --git a/www/gitlab/Makefile b/www/gitlab/Makefile
index 67ce018d0a9f..72d63f98390a 100644
--- a/www/gitlab/Makefile
+++ b/www/gitlab/Makefile
@@ -28,24 +28,25 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 # textproc/rubygem-psych3 is required as ruby 3.1 applied an update to psych 4.0 which has breaking changes
 # mail/rubygem-net-pop is required as ruby 3.1 removed it
 #gitlab-zoekt-indexer>=0.16.0:textproc/gitlab-zoekt-indexer
+# Gitlab does not work with nodejs 24, but keep it here for a later upgrade
+# yarn${NODEJS_SUFFIX}>=1.10.0:www/yarn${NODEJS_SUFFIX}
 MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
-	gitlab-elasticsearch-indexer>=5.10.1:textproc/gitlab-elasticsearch-indexer \
+	gitlab-elasticsearch-indexer>=5.12.0:textproc/gitlab-elasticsearch-indexer \
 	gitlab-agent>=${GITLAB_VERSION}:net/gitlab-agent \
 	gitlab-pages>=${GITLAB_VERSION}:www/gitlab-pages \
-	gitlab-shell>=14.45.3:devel/gitlab-shell \
+	gitlab-shell>=14.45.5:devel/gitlab-shell \
 	gitlab-workhorse>=${GITLAB_VERSION}:www/gitlab-workhorse \
 	gitlab-zoekt-indexer>=1.7.6:textproc/gitlab-zoekt-indexer \
 	redis>=6.2.11:databases/redis \
-	yarn${NODEJS_SUFFIX}>=1.10.0:www/yarn${NODEJS_SUFFIX} \
+	yarn-node20>=1.10.0:www/yarn-node20 \
 	gtar>0:archivers/gtar \
 	bash>0:shells/bash \
 	rubygem-parser>=3.3.10.0:devel/rubygem-parser \
 	rubygem-net-smtp>=0:mail/rubygem-net-smtp \
 	rubygem-psych3>=3.1<4:textproc/rubygem-psych3 \
 	rubygem-net-pop>=0:mail/rubygem-net-pop \
-	rubygem-rails-gitlab>=${RAILS_VERSION}<7.2:www/rubygem-rails-gitlab \
+	rubygem-rails-gitlab>=${RAILS_VERSION}<7.3:www/rubygem-rails-gitlab \
 	rubygem-zeitwerk>=2.6.18<2.6.19:devel/rubygem-zeitwerk \
-	rubygem-mutex_m>=0.3<1:devel/rubygem-mutex_m \
 	rubygem-drb-gitlab>=2.2.3<3:devel/rubygem-drb-gitlab \
 	rubygem-bootsnap-gitlab>=1.18.6<1.19:devel/rubygem-bootsnap-gitlab \
 	rubygem-ffi>=1.17.2<2:devel/rubygem-ffi \
@@ -90,6 +91,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-invisible_captcha>=2.3.0<2.4:graphics/rubygem-invisible_captcha \
 	rubygem-devise-two-factor-rails-gitlab>=4.1.1<4.2:security/rubygem-devise-two-factor-rails-gitlab \
 	rubygem-rqrcode-gitlab>=2.2.0<3:www/rubygem-rqrcode-gitlab \
+	rubygem-webauthn>=3.0<4:security/rubygem-webauthn \
 	rubygem-attr_encrypted>=4.2<5:security/rubygem-attr_encrypted \
 	rubygem-validates_hostname-gitlab>=1.0.13<1.1.0:dns/rubygem-validates_hostname-gitlab \
 	rubygem-rubyzip-gitlab>=2.4.1<2.5:archivers/rubygem-rubyzip-gitlab \
@@ -98,7 +100,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-ohai>=18.1.18<19:sysutils/rubygem-ohai \
 	rubygem-gpgme>=2.0.25<2.1.0:security/rubygem-gpgme \
 	rubygem-gitlab_omniauth-ldap-gitlab>=2.3.0<2.4.0:net/rubygem-gitlab_omniauth-ldap-gitlab \
-	rubygem-net-ldap017>=0.17.1<0.18:net/rubygem-net-ldap017 \
+	rubygem-net-ldap>=0.20.0<0.21:net/rubygem-net-ldap \
 	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-gitlab>=2.1.2<2.2:devel/rubygem-grape-swagger-gitlab \
@@ -148,7 +150,6 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-faraday_middleware-aws-sigv4-gitlab>=1.0.1<1.1:devel/rubygem-faraday_middleware-aws-sigv4-gitlab \
 	rubygem-typhoeus-gitlab>=1.4.0<1.5:www/rubygem-typhoeus-gitlab \
 	rubygem-html-pipeline-gitlab>=2.14.3<2.15:textproc/rubygem-html-pipeline-gitlab \
-	rubygem-deckar01-task_list-gitlab>=2.3.4<2.4:www/rubygem-deckar01-task_list-gitlab \
 	rubygem-gitlab-markup>=2.0.0<2.1:textproc/rubygem-gitlab-markup \
 	rubygem-commonmarker0>=0.23.12<0.24:textproc/rubygem-commonmarker0 \
 	rubygem-kramdown-gitlab>=2.5.1<2.6:textproc/rubygem-kramdown-gitlab \
@@ -170,9 +171,9 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-diffy>=3.4.4<4:textproc/rubygem-diffy \
 	rubygem-rack22>=2.2.20,3<2.3,3:www/rubygem-rack22 \
 	rubygem-rack-timeout>=0.7.0<0.8:www/rubygem-rack-timeout \
-	rubygem-puma-gitlab>=6.6.1<6.6.2:www/rubygem-puma-gitlab \
+	rubygem-puma-gitlab>=7.1<8:www/rubygem-puma-gitlab \
 	rubygem-sd_notify>=0.1.1<0.2:devel/rubygem-sd_notify \
-	rubygem-state_machines-activerecord-gitlab>=0.8.0<0.9.0:databases/rubygem-state_machines-activerecord-gitlab \
+	rubygem-state_machines-activerecord-gitlab>=0.100.0<0.101.0:databases/rubygem-state_machines-activerecord-gitlab \
 	rubygem-sidekiq-gitlab>=7.3.9:devel/rubygem-sidekiq-gitlab \
 	rubygem-sidekiq-cron-rails-gitlab>=1.12.0<1.13:devel/rubygem-sidekiq-cron-rails-gitlab \
 	rubygem-fugit-gitlab>=1.11.2<1.12:devel/rubygem-fugit-gitlab \
@@ -208,7 +209,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-rack-proxy>=0.7.7<0.8.0:www/rubygem-rack-proxy \
 	rubygem-cssbundling-rails-rails-gitlab>=1.4.3<1.5:www/rubygem-cssbundling-rails-rails-gitlab \
 	rubygem-terser>=1.0.2<1.0.3:textproc/rubygem-terser \
-	rubygem-click_house-client>=0.8.2<0.9:databases/rubygem-click_house-client \
+	rubygem-click_house-client>=0.8.4<0.9:databases/rubygem-click_house-client \
 	rubygem-addressable>=2.8<3:www/rubygem-addressable \
 	rubygem-gon-rails-gitlab>=6.5.0<6.6:www/rubygem-gon-rails-gitlab \
 	rubygem-request_store>=1.7.0<1.8:devel/rubygem-request_store \
@@ -220,7 +221,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-sentry-sidekiq>=5.23.0<5.24:devel/rubygem-sentry-sidekiq \
 	rubygem-pg_query>=6.1.0<6.2:databases/rubygem-pg_query \
 	rubygem-premailer-rails-rails-gitlab>=1.12.0<1.13:mail/rubygem-premailer-rails-rails-gitlab \
-	rubygem-gitlab-labkit>=0.42.2<0.43:devel/rubygem-gitlab-labkit \
+	rubygem-gitlab-labkit>=1.0.0<1.1:devel/rubygem-gitlab-labkit \
 	rubygem-thrift>=0.22.0,1<0.23,1:devel/rubygem-thrift \
 	rubygem-rails-i18n-rails-gitlab>=7.0.9<8:devel/rubygem-rails-i18n-rails-gitlab \
 	rubygem-gettext_i18n_rails>=1.13.0<1.14:devel/rubygem-gettext_i18n_rails \
@@ -279,16 +280,16 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-net-ntp>0:net/rubygem-net-ntp \
 	rubygem-ssh_data>=2.0<3:security/rubygem-ssh_data \
 	rubygem-spamcheck>=1.3.3<1.4:net/rubygem-spamcheck \
-	rubygem-gitaly>=18.6.0:net/rubygem-gitaly \
+	rubygem-gitaly>=18.7.0:net/rubygem-gitaly \
 	rubygem-gitlab-kas-grpc>=${GITLAB_KAS_GRPC_VERSION}:net/rubygem-gitlab-kas-grpc \
 	rubygem-grpc-gitlab>=1.76.0<1.77:net/rubygem-grpc-gitlab \
-	rubygem-google-protobuf3>=3.25.8<4:devel/rubygem-google-protobuf3 \
+	rubygem-google-protobuf3>=3.25.8<5:devel/rubygem-google-protobuf3 \
 	rubygem-toml-rb>=2.2.0<3:www/rubygem-toml-rb \
 	rubygem-flipper-gitlab>=0.28.0<0.29:devel/rubygem-flipper-gitlab \
 	rubygem-flipper-active_record-rails-gitlab>=0.28.0<0.29:databases/rubygem-flipper-active_record-rails-gitlab \
 	rubygem-flipper-active_support_cache_store-rails-gitlab>=0.28.0<0.29:devel/rubygem-flipper-active_support_cache_store-rails-gitlab \
 	rubygem-unleash>=3.2.2<3.3:devel/rubygem-unleash \
-	rubygem-gitlab-experiment>=1.0.0<1.1:devel/rubygem-gitlab-experiment \
+	rubygem-gitlab-experiment>=1.1.0<1.2:devel/rubygem-gitlab-experiment \
 	rubygem-lograge-rails-gitlab>=0.11.2<1.0:www/rubygem-lograge-rails-gitlab \
 	rubygem-grape_logging-gitlab>=1.8.4<2.0:devel/rubygem-grape_logging-gitlab \
 	rubygem-gitlab-net-dns>=0.15.0<0.16:dns/rubygem-gitlab-net-dns \
@@ -311,7 +312,7 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-ed25519>=1.4.0<1.5:security/rubygem-ed25519 \
 	rubygem-cvss-suite>=3.3.0<3.4:security/rubygem-cvss-suite \
 	rubygem-arr-pm>=0.0.12<0.1:devel/rubygem-arr-pm \
-	rubygem-devfile>=0.4.8<0.5:net/rubygem-devfile \
+	rubygem-devfile>=0.5.0<0.6:net/rubygem-devfile \
 	rubygem-hashdiff>=1.2.1<1.3:devel/rubygem-hashdiff \
 	rubygem-CFPropertyList-gitlab>=3.0.7<3.1:devel/rubygem-CFPropertyList-gitlab \
 	rubygem-app_store_connect>=0:net/rubygem-app_store_connect \
@@ -320,12 +321,14 @@ MY_DEPENDS=	gitaly>=${GITLAB_VERSION}:devel/gitaly \
 	rubygem-net-protocol>=0.2.2<0.3:net/rubygem-net-protocol \
 	rubygem-nkf>=0.2.0<0.3:net/rubygem-nkf \
 	rubygem-net-http-gitlab>=0.6.0<0.6.1:www/rubygem-net-http-gitlab \
-	rubygem-uri-gitlab>=0.13.3<0.13.4:net/rubygem-uri-gitlab \
+	rubygem-uri-gitlab>=1.1.1<1.2: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>=16.0<17:devel/rubygem-paper_trail \
 	rubygem-i18n_data>=0.13.1<1:devel/rubygem-i18n_data \
 	rubygem-gitlab-cloud-connector>=1.35<2:security/rubygem-gitlab-cloud-connector \
+	rubygem-gvltools>=0.4.0<0.5:devel/rubygem-gvltools \
+	rubygem-gitlab_query_language>=0.20.11<0.21:devel/rubygem-gitlab_query_language \
 	rubygem-google-cloud-profiler-v2>=0.3<1:textproc/rubygem-google-cloud-profiler-v2 \
 	rubygem-parallel>=1.27.0<2:sysutils/rubygem-parallel \
 	rubygem-google-cloud-storage_transfer-gitlab>=1.2.0<1.3:net/rubygem-google-cloud-storage_transfer-gitlab \
diff --git a/www/gitlab/Makefile.common b/www/gitlab/Makefile.common
index b672a2fa9fe6..99ff022c35de 100644
--- a/www/gitlab/Makefile.common
+++ b/www/gitlab/Makefile.common
@@ -1,4 +1,4 @@
-GITLAB_VERSION=		18.6.2
+GITLAB_VERSION=		18.7.0
 GITLAB_PORTREVISION=	4	# decrease this only if GITLAB_KAS_GRPC_VERSION is upgraded
 
 # Git version gitaly should use (from gitlab mirror)
@@ -7,13 +7,13 @@ GITLAB_PORTREVISION=	4	# decrease this only if GITLAB_KAS_GRPC_VERSION is upgrad
 GITLAB_GIT_VERSION=	2.50.0
 # return something like x.yy
 GITLAB_GIT_VERSION_SHORT=	${GITLAB_GIT_VERSION:C/^([0-9]*\.[0-9]*)\..*/\1/}
-GITLAB_GIT_MASTER_VERSION=	419c72cb8ada252b260efc38ff91fe201de7c8c3
-GITLAB_GIT_PREV_VERSION=	23466173824c0a0f835c0d790c2f38156ae6284a
+GITLAB_GIT_MASTER_VERSION=	aea8cc3a10c325a22a75e2d4f582db959d3854ae
+GITLAB_GIT_PREV_VERSION=	419c72cb8ada252b260efc38ff91fe201de7c8c3
 
 # Overwrite version for gitlab-kas-grpc
 #GITLAB_KAS_GRPC_VERSION=	${GITLAB_VERSION}
 GITLAB_KAS_GRPC_VERSION=	18.5.2
 
 # Rails version
-RAILS_VERSION=	7.1.6
+RAILS_VERSION=	7.2.3
 
diff --git a/www/gitlab/distinfo b/www/gitlab/distinfo
index ca63e8700ceb..f21be6d0303f 100644
--- a/www/gitlab/distinfo
+++ b/www/gitlab/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1765426102
-SHA256 (gitlab-foss-v18.6.2.tar.bz2) = 6e0ee01b940be896e256ced4d312967101e489556a9ac30d3c413a8986272c4e
-SIZE (gitlab-foss-v18.6.2.tar.bz2) = 126869309
-TIMESTAMP = 1765426143
-SHA256 (gitlab-v18.6.2-ee.tar.bz2) = 7c53ea1b62d8061c1f7c125e390398b709cd9a325cbf2c23e35b736a48736db4
-SIZE (gitlab-v18.6.2-ee.tar.bz2) = 143720563
+TIMESTAMP = 1766390112
+SHA256 (gitlab-foss-v18.7.0.tar.bz2) = e64409b4214a1fb4317cdb9f9ee97ec69bf401a4a0527952b396bcaa3add4efa
+SIZE (gitlab-foss-v18.7.0.tar.bz2) = 129790096
+TIMESTAMP = 1766390113
+SHA256 (gitlab-v18.7.0-ee.tar.bz2) = e4c0415dc236d82832faa794364335c4edcd7e45be9ac60c26f607dd67150bd9
+SIZE (gitlab-v18.7.0-ee.tar.bz2) = 146715871
diff --git a/www/gitlab/files/patch-Gemfile b/www/gitlab/files/patch-Gemfile
index b2222c8a2f81..1cc83e718f0c 100644
--- a/www/gitlab/files/patch-Gemfile
+++ b/www/gitlab/files/patch-Gemfile
@@ -1,6 +1,6 @@
---- Gemfile.orig	2025-12-10 01:46:48 UTC
+--- Gemfile.orig	2025-12-17 03:15:28 UTC
 +++ Gemfile
-@@ -169,7 +169,7 @@ gem 'graphql', '2.5.11', feature_category: :api
+@@ -163,7 +163,7 @@ gem 'graphql', '2.5.11', feature_category: :api
  
  # GraphQL API
  gem 'graphql', '2.5.11', feature_category: :api
@@ -9,8 +9,8 @@
  gem 'apollo_upload_server', '~> 2.1.6', feature_category: :api
  
  # Cells
-@@ -299,7 +299,7 @@ gem 'state_machines-activerecord', '~> 0.8.0', feature
- gem 'state_machines-activerecord', '~> 0.8.0', feature_category: :shared
+@@ -292,7 +292,7 @@ gem 'state_machines-activerecord', '~> 0.100.0', featu
+ gem 'state_machines-activerecord', '~> 0.100.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  
  # Background jobs
 -gem 'sidekiq', path: 'vendor/gems/sidekiq', require: 'sidekiq', feature_category: :scalability
@@ -18,82 +18,79 @@
  gem 'sidekiq-cron', '~> 1.12.0', feature_category: :scalability
  gem 'gitlab-sidekiq-fetcher',
    path: 'vendor/gems/sidekiq-reliable-fetch',
-@@ -476,141 +476,15 @@ gem 'warning', '~> 1.5.0', feature_category: :shared
+@@ -469,138 +469,15 @@ gem 'warning', '~> 1.5.0', feature_category: :shared #
  
- gem 'warning', '~> 1.5.0', feature_category: :shared
+ gem 'warning', '~> 1.5.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  
 -group :development do
 -  gem 'lefthook', '~> 1.13.0', require: false, feature_category: :tooling
 -  gem 'rubocop', feature_category: :tooling, require: false
--  gem 'debug', '~> 1.11.0', feature_category: :shared
+-  gem 'debug', '~> 1.11.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'solargraph', '~> 0.54.0', require: false, feature_category: :shared
--  gem 'solargraph-rspec', '~> 0.5.1', require: false, feature_category: :shared
+-  gem 'solargraph', '~> 0.54.0', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'solargraph-rspec', '~> 0.5.1', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'letter_opener_web', '~> 3.0.0', feature_category: :shared
--  gem 'lookbook', '~> 2.3', feature_category: :shared
+-  gem 'letter_opener_web', '~> 3.0.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'lookbook', '~> 2.3', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  # Better errors handler
--  gem 'better_errors', '~> 2.10.1', feature_category: :shared
+-  gem 'sprite-factory', '~> 1.7', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'sprite-factory', '~> 1.7', feature_category: :shared
+-  gem 'listen', '~> 3.7', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'listen', '~> 3.7', feature_category: :shared
--
--  gem 'ruby-lsp', "~> 0.26.0", require: false, feature_category: :tooling
+-  gem 'ruby-lsp', "~> 0.26.4", require: false, feature_category: :tooling
 -
 -  gem 'ruby-lsp-rails', "~> 0.4.8", feature_category: :tooling
 -
--  gem 'ruby-lsp-rspec', "~> 0.1.27", require: false, feature_category: :tooling
+-  gem 'ruby-lsp-rspec', "~> 0.1.28", require: false, feature_category: :tooling
 -
 -  gem 'gdk-toogle', '~> 0.9', '>= 0.9.5', require: 'toogle', feature_category: :tooling
 -
 -  # Used by
 -  # * `lib/tasks/gitlab/security/update_banned_ssh_keys.rake`
 -  # * `lib/tasks/gitlab/db/migration_squash.rake`
--  gem 'git', '~> 1.8', feature_category: :shared
+-  gem 'git', '~> 1.8', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -end
 -
 -group :development, :test do
--  gem 'deprecation_toolkit', '~> 2.2.3', require: false, feature_category: :shared
--  gem 'bullet', '~> 8.0.0', feature_category: :shared
--  gem 'parser', '= 3.3.10.0', feature_category: :shared
--  gem 'pry-byebug', feature_category: :shared
--  gem 'pry-rails', '~> 0.3.9', feature_category: :shared
--  gem 'pry-shell', '~> 0.6.4', feature_category: :shared
+-  gem 'deprecation_toolkit', '~> 2.2.3', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'bullet', '~> 8.0.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'parser', '= 3.3.10.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'pry-byebug', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'pry-rails', '~> 0.3.9', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'pry-shell', '~> 0.6.4', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'amazing_print', require: false, feature_category: :shared
+-  gem 'amazing_print', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  gem 'database_cleaner-active_record', '~> 2.2.0', feature_category: :database
--  gem 'rspec-rails', '~> 7.1.0', feature_category: :shared
+-  gem 'rspec-rails', '~> 7.1.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -  gem 'factory_bot_rails', '~> 6.5.0', feature_category: :tooling
 -
 -  # Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)
--  gem 'minitest', '~> 5.11.0', feature_category: :shared
+-  gem 'minitest', '~> 5.11.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'spring', '~> 4.3.0', feature_category: :shared
--  gem 'spring-commands-rspec', '~> 1.0.4', feature_category: :shared
+-  gem 'spring', '~> 4.3.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'spring-commands-rspec', '~> 1.0.4', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  gem 'gitlab-styles', '~> 13.1.0', feature_category: :tooling, require: false
 -  gem 'haml_lint', '~> 0.58', feature_category: :tooling, require: false
 -
 -  # Benchmarking & profiling
--  gem 'benchmark-ips', '~> 2.14.0', require: false, feature_category: :shared
--  gem 'benchmark-memory', '~> 0.1', require: false, feature_category: :shared
+-  gem 'benchmark-ips', '~> 2.14.0', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'benchmark-memory', '~> 0.1', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  gem 'knapsack', '~> 4.0.0', feature_category: :tooling
 -  gem 'gitlab-crystalball', '~> 1.1.0', require: false, feature_category: :tooling
 -  gem 'test_file_finder', '~> 0.3.1', feature_category: :tooling
 -
--  gem 'simple_po_parser', '~> 1.1.6', require: false, feature_category: :shared
+-  gem 'simple_po_parser', '~> 1.1.6', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'png_quantizator', '~> 0.2.1', require: false, feature_category: :shared
+-  gem 'png_quantizator', '~> 0.2.1', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'parallel', '~> 1.19', require: false, feature_category: :shared
+-  gem 'parallel', '~> 1.19', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'sigdump', '~> 0.2.4', require: 'sigdump/setup', feature_category: :shared
+-  gem 'sigdump', '~> 0.2.4', require: 'sigdump/setup', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
--  gem 'pact', '~> 1.64', feature_category: :shared
+-  gem 'pact', '~> 1.64', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  gem 'gitlab-housekeeper', path: 'gems/gitlab-housekeeper', feature_category: :tooling
 -
@@ -113,12 +110,12 @@
 -
  # Gems required in omnibus-gitlab pipeline
  group :development, :test, :omnibus do
-   gem 'license_finder', '~> 7.0', require: false, feature_category: :shared
+   gem 'license_finder', '~> 7.0', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  end
  
 -# Gems required in various pipelines
 -group :development, :test, :monorepo do
--  gem 'gitlab-rspec', path: 'gems/gitlab-rspec', feature_category: :shared
+-  gem 'gitlab-rspec', path: 'gems/gitlab-rspec', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -  gem 'gitlab-rspec_flaky', path: 'gems/gitlab-rspec_flaky', feature_category: :tooling
 -end
 -
@@ -133,26 +130,26 @@
 -  gem 'capybara-screenshot', '~> 1.0.26', feature_category: :test_platform
 -  gem 'selenium-webdriver', '~> 4.21', '>= 4.21.1', feature_category: :test_platform
 -
--  gem 'graphlyte', '~> 1.0.0', feature_category: :shared
+-  gem 'graphlyte', '~> 1.0.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  # Upload CI metrics to a GCP BigQuery instance
 -  #
 -  # We only use this gem in CI.
 -  gem 'google-cloud-bigquery', '~> 1.0', feature_category: :tooling
 -
--  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
--  gem 'concurrent-ruby', '~> 1.1', feature_category: :shared
--  gem 'test-prof', '~> 1.4.0', feature_category: :tooling
--  gem 'rspec_junit_formatter', feature_category: :shared
--  gem 'guard-rspec', feature_category: :shared
+-  gem 'shoulda-matchers', '~> 6.4.0', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'email_spec', '~> 2.3.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'webmock', '~> 3.25.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'rails-controller-testing', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'concurrent-ruby', '~> 1.1', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'test-prof', '~> 1.5.0', feature_category: :tooling
+-  gem 'rspec_junit_formatter', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
+-  gem 'guard-rspec', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -  gem 'axe-core-rspec', '~> 4.10.0', feature_category: :tooling
--  gem 'state_machines-rspec', '~> 0.6', feature_category: :shared
+-  gem 'state_machines-rspec', '~> 0.6', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  # Moved in `test` because https://gitlab.com/gitlab-org/gitlab/-/issues/217527
--  gem 'derailed_benchmarks', require: false, feature_category: :shared
+-  gem 'derailed_benchmarks', require: false, feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
 -
 -  gem 'gitlab_quality-test_tooling', '~> 3.1.0', require: false, feature_category: :tooling
 -end
@@ -160,25 +157,25 @@
  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
-@@ -647,7 +521,7 @@ gem 'gitaly', '~> 18.6.0.pre.rc1', feature_category: :
- gem 'gitaly', '~> 18.6.0.pre.rc1', feature_category: :gitaly
+@@ -637,7 +514,7 @@ gem 'gitaly', '~> 18.7.0.pre.rc1', feature_category: :
+ gem 'gitaly', '~> 18.7.0.pre.rc1', feature_category: :gitaly
  
  # KAS GRPC protocol definitions
 -gem 'gitlab-kas-grpc', '~> 18.5.0-rc4', feature_category: :deployment_management
 +gem 'gitlab-kas-grpc', '~> 18.5.2', feature_category: :deployment_management
  
- gem 'grpc', '~> 1.76.0', feature_category: :shared
+ gem 'grpc', '~> 1.76.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  
-@@ -670,7 +544,7 @@ gem 'gitlab-net-dns', '~> 0.15.0', feature_category: :
- gem 'gitlab-net-dns', '~> 0.15.0', feature_category: :shared
+@@ -660,7 +537,7 @@ gem 'gitlab-net-dns', '~> 0.15.0', feature_category: :
+ gem 'gitlab-net-dns', '~> 0.15.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  
  # Countries list
--gem 'countries', '~> 4.0.0', feature_category: :shared
-+gem 'countries', '~> 4.0', feature_category: :shared
+-gem 'countries', '~> 4.0.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
++gem 'countries', '~> 4.0', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  
- gem 'retriable', '~> 3.1.2', feature_category: :shared
+ gem 'retriable', '~> 3.1.2', feature_category: :shared # rubocop:todo Gemfile/MissingFeatureCategory -- https://gitlab.com/gitlab-org/gitlab/-/issues/581839
  
-@@ -755,10 +629,15 @@ gem 'duo_api', '~> 1.3', feature_category: :system_acc
+@@ -741,11 +618,16 @@ gem 'duo_api', '~> 1.3', feature_category: :system_acc
  
  gem 'duo_api', '~> 1.3', feature_category: :system_access
  
@@ -189,9 +186,10 @@
 +
  gem 'gitlab-sdk', '~> 0.3.0', feature_category: :application_instrumentation
  
- gem 'paper_trail', '~> 16.0', feature_category: :shared
+ gem 'paper_trail', '~> 16.0', feature_category: :workspaces
  
 -gem "i18n_data", "~> 0.13.1", feature_category: :system_access
 +gem "i18n_data", "~> 0.13", feature_category: :system_access
  
  gem "gitlab-cloud-connector", "~> 1.35", require: 'gitlab/cloud_connector', feature_category: :plan_provisioning
+ 
diff --git a/www/gitlab/files/patch-config_gitlab.yml.example b/www/gitlab/files/patch-config_gitlab.yml.example
index fae18cb60868..bd0e3350d243 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-11-19 16:58:17 UTC
+--- config/gitlab.yml.example.orig	2025-12-17 03:15:28 UTC
 +++ config/gitlab.yml.example
-@@ -508,7 +508,7 @@ production: &base
+@@ -516,7 +516,7 @@ production: &base
    ## GitLab Pages
    pages:
      enabled: false
@@ -9,7 +9,7 @@
      # The location where pages are stored (default: shared/pages).
      # path: shared/pages
  
-@@ -1253,13 +1253,13 @@ production: &base
+@@ -1261,13 +1261,13 @@ production: &base
    repositories:
      storages: # You must have at least a `default` storage path.
        default:
@@ -25,7 +25,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
-@@ -1294,12 +1294,12 @@ production: &base
+@@ -1302,12 +1302,12 @@ production: &base
  
    ## GitLab Shell settings
    gitlab_shell:
@@ -41,7 +41,7 @@
  
      # Git over HTTP
      upload_pack: true
-@@ -1314,7 +1314,7 @@ production: &base
+@@ -1322,7 +1322,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).
@@ -50,7 +50,7 @@
  
    database_traffic_capture:
      config:
-@@ -1340,7 +1340,7 @@ production: &base
+@@ -1348,7 +1348,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).
@@ -59,7 +59,7 @@
  
      # The URL to the external KAS API (used by the Kubernetes agents)
      # external_url: wss://kas.example.com
-@@ -1367,13 +1367,13 @@ production: &base
+@@ -1370,13 +1370,13 @@ production: &base
  
    ## GitLab Elasticsearch settings
    elasticsearch:
@@ -75,7 +75,7 @@
  
    ## Webpack settings
    # If enabled, this will tell rails to serve frontend assets from the webpack-dev-server running
-@@ -1394,18 +1394,18 @@ production: &base
+@@ -1397,18 +1397,18 @@ production: &base
  
      # Sidekiq exporter is a dedicated Prometheus metrics server optionally running alongside Sidekiq.
      sidekiq_exporter:
@@ -101,7 +101,7 @@
  
      # Web exporter is a dedicated Prometheus metrics server optionally running alongside Puma.
      web_exporter:
-@@ -1632,13 +1632,13 @@ test:
+@@ -1635,13 +1635,13 @@ test:
          gitaly_address: unix:tmp/tests/gitaly/praefect.socket
  
    gitaly:
diff --git a/www/gitlab/files/patch-lib_support_nginx_gitlab b/www/gitlab/files/patch-lib_support_nginx_gitlab
index ba44e58e7372..8a828a6d38fa 100644
--- a/www/gitlab/files/patch-lib_support_nginx_gitlab
+++ b/www/gitlab/files/patch-lib_support_nginx_gitlab
@@ -1,6 +1,6 @@
---- lib/support/nginx/gitlab.orig	2024-04-09 16:46:13 UTC
+--- lib/support/nginx/gitlab.orig	2025-12-17 03:15:28 UTC
 +++ lib/support/nginx/gitlab
-@@ -19,7 +19,7 @@
+@@ -19,7 +19,7 @@ upstream gitlab-workhorse {
  upstream gitlab-workhorse {
    # GitLab socket file,
    # for Omnibus this would be: unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket
@@ -9,7 +9,7 @@
  }
  
  map $http_upgrade $connection_upgrade_gitlab {
-@@ -114,7 +114,7 @@ server {
+@@ -122,7 +122,7 @@ server {
    location ~ ^/(404|422|500|502|503)\.html$ {
      # Location to the GitLab's public directory,
      # for Omnibus this would be: /opt/gitlab/embedded/service/gitlab-rails/public.
diff --git a/www/gitlab/files/patch-package.json b/www/gitlab/files/patch-package.json
new file mode 100644
index 000000000000..24e4e7096a1a
--- /dev/null
+++ b/www/gitlab/files/patch-package.json
@@ -0,0 +1,12 @@
+--- package.json.orig	2025-12-31 05:50:46 UTC
++++ package.json
+@@ -326,7 +326,8 @@
+     "@types/node": "14.17.5",
+     "chokidar": "^3.5.3",
+     "nwsapi": "2.2.2",
+-    "tough-cookie": "4.1.3"
++    "tough-cookie": "4.1.3",
++    "tree-sitter": "0.22.4"
+   },
+   "engines": {
+     "node": ">=12.22.1",
diff --git a/www/gitlab/pkg-message b/www/gitlab/pkg-message
index 44d60ee23e86..4d7a1f19a1d5 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/18.6-freebsd.md
+https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/install/18.7-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 18.5.x to 18.6.x, please follow the instructions in the guide at:
+switched from 18.6.x to 18.7.x, please follow the instructions in the guide at:
 
-https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/update/18.5-18.6-freebsd.md
+https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/update/18.6-18.7-freebsd.md
 
 If you just installed an minor upgrade of GitLab please follow
 the instructions in the guide at:
diff --git a/www/rubygem-faraday-net_http-gitlab/Makefile b/www/rubygem-faraday-net_http-gitlab/Makefile
index eda89b2eb132..ff6f6330b050 100644
--- a/www/rubygem-faraday-net_http-gitlab/Makefile
+++ b/www/rubygem-faraday-net_http-gitlab/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	faraday-net_http
 PORTVERSION=	3.3.0
+PORTREVISION=	1
 CATEGORIES=	www rubygems
 MASTER_SITES=	RG
 PKGNAMESUFFIX=	-gitlab
@@ -11,7 +12,7 @@ WWW=		https://github.com/lostisland/faraday-net_http
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE.md
 
-RUN_DEPENDS=	rubygem-net-http041>=0:www/rubygem-net-http041
+RUN_DEPENDS=	rubygem-net-http-gitlab>=0:www/rubygem-net-http-gitlab
 
 USES=		gem