Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
adb8e997e5
commit
e3fd91340f
|
|
@ -51,8 +51,10 @@ db:migrate:multi-version-upgrade:
|
|||
- .single-db
|
||||
- .db-job-base
|
||||
- .rails:rules:db:migrate:multi-version-upgrade
|
||||
variables:
|
||||
UPGRADE_STOP_DUMP_URL: "https://gitlab.com/gitlab-org/quality/pg-dump-generator/-/raw/main/pg_dumps/ee/latest_upgrade_stop.gz"
|
||||
script:
|
||||
- curl -o latest_upgrade_stop.gz https://gitlab.com/gitlab-org/quality/pg-dump-generator/-/raw/main/pg_dumps/ee/latest_upgrade_stop.gz
|
||||
- curl -o latest_upgrade_stop.gz $UPGRADE_STOP_DUMP_URL
|
||||
- gunzip -c latest_upgrade_stop.gz > gitlabhq_production
|
||||
- bundle exec rake db:drop db:create
|
||||
- apt-get update -qq && apt-get install -y -qq postgresql-client
|
||||
|
|
|
|||
|
|
@ -2002,6 +2002,8 @@
|
|||
rules:
|
||||
- if: '$DISABLE_DB_MULTI_VERSION_UPGRADE =~ /true|yes|1/i'
|
||||
when: never
|
||||
- <<: *if-merge-request-targeting-stable-branch
|
||||
when: manual
|
||||
- !reference [".rails:rules:ee-and-foss-migration", rules]
|
||||
|
||||
.rails:rules:db-backup:
|
||||
|
|
|
|||
|
|
@ -269,16 +269,16 @@
|
|||
{"name":"google-cloud-storage","version":"1.45.0","platform":"ruby","checksum":"f280abda4e608f9e91433f9dd907be4a45cdbf251ffeb275d713548e515c6300"},
|
||||
{"name":"google-cloud-storage_transfer","version":"1.2.0","platform":"ruby","checksum":"132901f50889e02a0d378e6117c6408cbfc4fdbd15c9d31fabec4f4189ef1658"},
|
||||
{"name":"google-cloud-storage_transfer-v1","version":"0.8.0","platform":"ruby","checksum":"9dbef80275db556e046bb24139ca6559affe641d1e38b2537b8caaf2f8896176"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"aarch64-linux","checksum":"d155538358d03af4bcac908811d2c8b287573005f0549d8cf55354ad0c0928ff"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"arm64-darwin","checksum":"6d39a99a7910fc6b03479c298f38be9497938f78c0f08c89d7542bc8205be8c7"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"java","checksum":"475bd51efa276fa3668abcd3978d8937bae5894ffe9d963c0a9e5cf151a1ee35"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"ruby","checksum":"a1c594ca9d99c894e558f984d70731a8935ec639e75865f0181cab126a0aef0e"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x64-mingw-ucrt","checksum":"4c2e26a244f639aa658a33d74ab1a3ff74210756c14588b0bbf0d6b93ff388aa"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x64-mingw32","checksum":"343134507de2602079837727cc1121af39bce3e382e91f3aa14a259ae78be7d6"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86-linux","checksum":"7721d1b40f3edd951484b448f4b404bdc954159026c93ba5ee37a3a0e386a92c"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86-mingw32","checksum":"fb00901bb3803ed361eb8e667af4d1ab2136c43ae870cc8b3a2ded08ceee2072"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86_64-darwin","checksum":"bf53084c00d78a8a960af5a3fc5175c59f1f4708ddd00398781a2c3a3370c977"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86_64-linux","checksum":"9e8e66fb5a00cf90f88f37b07e7da10ca9e176e28a3314fc80c4e7fdab120aeb"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"aarch64-linux","checksum":"60d96b033a4eb0d0f107d8390208ee611abcfdf6cb876e7802c9c112fcf8f07e"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"arm64-darwin","checksum":"02be442a2fe498ce7eaba48d332c8f19b516126b1facd0710079f9da0bc781d2"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"java","checksum":"724cdc8ece1a96b86af0acc90f016402739f1a2d1ba889c05bd53390b58231e7"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"ruby","checksum":"4333fe2e9009131d8bec9b4ffcfae7b5a0a2d1bd18061e8aaaf0fd3d5c835639"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x64-mingw-ucrt","checksum":"4f211d1e1f75f518db3aca478998321aa3703b3da829291a6c3f08adece5348d"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x64-mingw32","checksum":"15aff5a3316ea3d1a9cc4958e562af3ac0119bec3d5742a8d9eb230939cb6f70"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86-linux","checksum":"7bc46ce7838064c2d2eb8ea7afc9a9ec71f2c659f76941af2e383246443fd2fd"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86-mingw32","checksum":"a6a648bfddfb0dae66d849a42eaeb8cfed8bf95eebb205ca93f038bb6e1531da"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86_64-darwin","checksum":"5792cb1c742ce54950e83c454ce6c9f4f73b05017643a88a67dda2556d96f429"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86_64-linux","checksum":"d5174f864440e724d2cc84ef183cd19625086db45351c9e81eeea48008db1c3d"},
|
||||
{"name":"googleapis-common-protos","version":"1.4.0","platform":"ruby","checksum":"da2380fb5ab1563580816c74e8d684ac17512c3654c829a3ee84f6d6139de382"},
|
||||
{"name":"googleapis-common-protos-types","version":"1.5.0","platform":"ruby","checksum":"5769cf7376abc86ef7f5897a4aaca1d5c5a3c49ddabeddd2c251fcf8155f858b"},
|
||||
{"name":"googleauth","version":"1.8.1","platform":"ruby","checksum":"814adadaaa1221dce72a67131e3ecbd6d23491a161ec84fb15fd353b87d8c9e7"},
|
||||
|
|
|
|||
|
|
@ -862,7 +862,7 @@ GEM
|
|||
google-cloud-storage_transfer-v1 (0.8.0)
|
||||
gapic-common (>= 0.20.0, < 2.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-protobuf (3.25.4)
|
||||
google-protobuf (3.25.5)
|
||||
googleapis-common-protos (1.4.0)
|
||||
google-protobuf (~> 3.14)
|
||||
googleapis-common-protos-types (~> 1.2)
|
||||
|
|
|
|||
|
|
@ -270,16 +270,16 @@
|
|||
{"name":"google-cloud-storage","version":"1.45.0","platform":"ruby","checksum":"f280abda4e608f9e91433f9dd907be4a45cdbf251ffeb275d713548e515c6300"},
|
||||
{"name":"google-cloud-storage_transfer","version":"1.2.0","platform":"ruby","checksum":"132901f50889e02a0d378e6117c6408cbfc4fdbd15c9d31fabec4f4189ef1658"},
|
||||
{"name":"google-cloud-storage_transfer-v1","version":"0.8.0","platform":"ruby","checksum":"9dbef80275db556e046bb24139ca6559affe641d1e38b2537b8caaf2f8896176"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"aarch64-linux","checksum":"d155538358d03af4bcac908811d2c8b287573005f0549d8cf55354ad0c0928ff"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"arm64-darwin","checksum":"6d39a99a7910fc6b03479c298f38be9497938f78c0f08c89d7542bc8205be8c7"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"java","checksum":"475bd51efa276fa3668abcd3978d8937bae5894ffe9d963c0a9e5cf151a1ee35"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"ruby","checksum":"a1c594ca9d99c894e558f984d70731a8935ec639e75865f0181cab126a0aef0e"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x64-mingw-ucrt","checksum":"4c2e26a244f639aa658a33d74ab1a3ff74210756c14588b0bbf0d6b93ff388aa"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x64-mingw32","checksum":"343134507de2602079837727cc1121af39bce3e382e91f3aa14a259ae78be7d6"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86-linux","checksum":"7721d1b40f3edd951484b448f4b404bdc954159026c93ba5ee37a3a0e386a92c"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86-mingw32","checksum":"fb00901bb3803ed361eb8e667af4d1ab2136c43ae870cc8b3a2ded08ceee2072"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86_64-darwin","checksum":"bf53084c00d78a8a960af5a3fc5175c59f1f4708ddd00398781a2c3a3370c977"},
|
||||
{"name":"google-protobuf","version":"3.25.4","platform":"x86_64-linux","checksum":"9e8e66fb5a00cf90f88f37b07e7da10ca9e176e28a3314fc80c4e7fdab120aeb"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"aarch64-linux","checksum":"60d96b033a4eb0d0f107d8390208ee611abcfdf6cb876e7802c9c112fcf8f07e"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"arm64-darwin","checksum":"02be442a2fe498ce7eaba48d332c8f19b516126b1facd0710079f9da0bc781d2"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"java","checksum":"724cdc8ece1a96b86af0acc90f016402739f1a2d1ba889c05bd53390b58231e7"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"ruby","checksum":"4333fe2e9009131d8bec9b4ffcfae7b5a0a2d1bd18061e8aaaf0fd3d5c835639"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x64-mingw-ucrt","checksum":"4f211d1e1f75f518db3aca478998321aa3703b3da829291a6c3f08adece5348d"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x64-mingw32","checksum":"15aff5a3316ea3d1a9cc4958e562af3ac0119bec3d5742a8d9eb230939cb6f70"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86-linux","checksum":"7bc46ce7838064c2d2eb8ea7afc9a9ec71f2c659f76941af2e383246443fd2fd"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86-mingw32","checksum":"a6a648bfddfb0dae66d849a42eaeb8cfed8bf95eebb205ca93f038bb6e1531da"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86_64-darwin","checksum":"5792cb1c742ce54950e83c454ce6c9f4f73b05017643a88a67dda2556d96f429"},
|
||||
{"name":"google-protobuf","version":"3.25.5","platform":"x86_64-linux","checksum":"d5174f864440e724d2cc84ef183cd19625086db45351c9e81eeea48008db1c3d"},
|
||||
{"name":"googleapis-common-protos","version":"1.4.0","platform":"ruby","checksum":"da2380fb5ab1563580816c74e8d684ac17512c3654c829a3ee84f6d6139de382"},
|
||||
{"name":"googleapis-common-protos-types","version":"1.5.0","platform":"ruby","checksum":"5769cf7376abc86ef7f5897a4aaca1d5c5a3c49ddabeddd2c251fcf8155f858b"},
|
||||
{"name":"googleauth","version":"1.8.1","platform":"ruby","checksum":"814adadaaa1221dce72a67131e3ecbd6d23491a161ec84fb15fd353b87d8c9e7"},
|
||||
|
|
|
|||
|
|
@ -872,7 +872,7 @@ GEM
|
|||
google-cloud-storage_transfer-v1 (0.8.0)
|
||||
gapic-common (>= 0.20.0, < 2.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-protobuf (3.25.4)
|
||||
google-protobuf (3.25.5)
|
||||
googleapis-common-protos (1.4.0)
|
||||
google-protobuf (~> 3.14)
|
||||
googleapis-common-protos-types (~> 1.2)
|
||||
|
|
|
|||
|
|
@ -149,10 +149,8 @@ export default {
|
|||
>
|
||||
<div class="gl-flex gl-flex-col gl-self-center">
|
||||
<h2
|
||||
:class="[
|
||||
'gl-m-0 gl-inline-flex gl-items-start gl-gap-3 gl-text-base gl-font-bold gl-leading-normal',
|
||||
titleClass,
|
||||
]"
|
||||
class="gl-m-0 gl-inline-flex gl-items-center gl-gap-3 gl-text-base gl-font-bold gl-leading-normal"
|
||||
:class="titleClass"
|
||||
data-testid="crud-title"
|
||||
>
|
||||
<gl-link
|
||||
|
|
@ -166,7 +164,7 @@ export default {
|
|||
|
||||
<span
|
||||
v-if="displayedCount || $scopedSlots.count"
|
||||
class="gl-inline-flex gl-items-center gl-gap-2 gl-text-sm gl-text-subtle"
|
||||
class="gl-inline-flex gl-items-center gl-gap-2 gl-self-start gl-text-sm gl-text-subtle"
|
||||
data-testid="crud-count"
|
||||
>
|
||||
<template v-if="displayedCount">
|
||||
|
|
|
|||
|
|
@ -49,11 +49,11 @@ html {
|
|||
}
|
||||
}
|
||||
|
||||
.alert-wrapper {
|
||||
&:not(:empty) {
|
||||
@apply gl-mt-3;
|
||||
}
|
||||
.alert-wrapper-top-space:not(:empty) {
|
||||
@apply gl-mt-3;
|
||||
}
|
||||
|
||||
.alert-wrapper {
|
||||
.alert-link-group {
|
||||
float: right;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,10 +22,8 @@ module Packages
|
|||
def group_packages
|
||||
if Feature.enabled?(:maven_remove_permissions_check_from_finder, @project_or_group)
|
||||
packages_for(@current_user, within_group: @project_or_group)
|
||||
elsif ::Feature.enabled?(:allow_anyone_to_pull_public_maven_packages_on_group_level, @project_or_group)
|
||||
packages_visible_to_user_including_public_registries(@current_user, within_group: @project_or_group)
|
||||
else
|
||||
super
|
||||
packages_visible_to_user_including_public_registries(@current_user, within_group: @project_or_group)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ module Types
|
|||
field :merge_after, ::Types::TimeType,
|
||||
null: true,
|
||||
description: 'Date after which the merge request can be merged.',
|
||||
alpha: { milestone: '17.4' }
|
||||
alpha: { milestone: '17.5' }
|
||||
|
||||
field :detailed_merge_status, ::Types::MergeRequests::DetailedMergeStatusEnum, null: true,
|
||||
calls_gitaly: true,
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
= yield :group_invite_members_banner
|
||||
|
||||
-# Alerts
|
||||
.alert-wrapper.gl-flex.gl-flex-col.gl-gap-3.container-fluid{ class: alert_class }
|
||||
.alert-wrapper.alert-wrapper-top-space.gl-flex.gl-flex-col.gl-gap-3.container-fluid{ class: alert_class }
|
||||
= dispensable_render 'shared/outdated_browser'
|
||||
= dispensable_render_if_exists "layouts/header/licensed_user_count_threshold"
|
||||
= dispensable_render_if_exists "layouts/header/token_expiry_notification"
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
name: allow_anyone_to_pull_public_maven_packages_on_group_level
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/468059
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164380
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/481768
|
||||
milestone: '17.4'
|
||||
group: group::package registry
|
||||
type: gitlab_com_derisk
|
||||
default_enabled: false
|
||||
|
|
@ -6,7 +6,7 @@ feature_categories:
|
|||
- code_review_workflow
|
||||
description: Stores timestamps for scheduled merges
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165092
|
||||
milestone: '17.4'
|
||||
milestone: '17.5'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class CreateMergeRequestMergeSchedules < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.4'
|
||||
milestone '17.5'
|
||||
|
||||
def change
|
||||
create_table :merge_request_merge_schedules do |t| # rubocop:disable Migration/EnsureFactoryForTable -- factory exists in spec/factories/merge_request_merge_schedule.rb
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class CreateMergeRequestMergeSchedulesShardingKeyFk < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.4'
|
||||
milestone '17.5'
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ReplaceFkOnApprovalMergeRequestRulesApprovalPolicyRuleId < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
milestone '17.5'
|
||||
|
||||
NEW_CONSTRAINT_NAME = 'fk_approval_merge_request_rules_on_approval_policy_rule_id'
|
||||
|
||||
def up
|
||||
add_concurrent_foreign_key(
|
||||
:approval_merge_request_rules,
|
||||
:approval_policy_rules,
|
||||
column: :approval_policy_rule_id,
|
||||
on_delete: :nullify,
|
||||
validate: false,
|
||||
name: NEW_CONSTRAINT_NAME)
|
||||
end
|
||||
|
||||
def down
|
||||
with_lock_retries do
|
||||
remove_foreign_key_if_exists(:approval_merge_request_rules,
|
||||
column: :approval_policy_rule_id,
|
||||
on_delete: :nullify,
|
||||
name: NEW_CONSTRAINT_NAME)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ValidateFkOnApprovalMergeRequestRulesApprovalPolicyRuleId < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.5'
|
||||
|
||||
NEW_CONSTRAINT_NAME = 'fk_approval_merge_request_rules_on_approval_policy_rule_id'
|
||||
|
||||
# foreign key added in db/migrate/20240918130318_replace_fk_on_approval_merge_request_rules_approval_policy_rule_id.rb
|
||||
def up
|
||||
validate_foreign_key(:approval_merge_request_rules, :approval_policy_rule_id, name: NEW_CONSTRAINT_NAME)
|
||||
end
|
||||
|
||||
def down
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RemoveOldFkOnApprovalMergeRequestRulesApprovalPolicyRuleId < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
milestone '17.5'
|
||||
|
||||
OLD_CONSTRAINT_NAME = 'fk_73fec3d7e5'
|
||||
|
||||
# new foreign key added in
|
||||
# db/migrate/20240918130318_replace_fk_on_approval_merge_request_rules_approval_policy_rule_id.rb
|
||||
# and validated in db/migrate/20240918130409_validate_fk_on_approval_merge_request_rules_approval_policy_rule_id.rb
|
||||
def up
|
||||
remove_foreign_key_if_exists(
|
||||
:approval_merge_request_rules,
|
||||
column: :approval_policy_rule_id,
|
||||
on_delete: :cascade,
|
||||
name: OLD_CONSTRAINT_NAME)
|
||||
end
|
||||
|
||||
def down
|
||||
add_concurrent_foreign_key(
|
||||
:approval_merge_request_rules,
|
||||
:approval_policy_rules,
|
||||
column: :approval_policy_rule_id,
|
||||
on_delete: :cascade,
|
||||
validate: true,
|
||||
name: OLD_CONSTRAINT_NAME)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
f34ae6373ca2954ee3f56b939ed3df85542dd4b132560cb48ac65604ea11eb5b
|
||||
|
|
@ -0,0 +1 @@
|
|||
1447b359f2cd606a0066ea3e5cfb94b192ddea6b0f514aeff6b963245503c11b
|
||||
|
|
@ -0,0 +1 @@
|
|||
8cfa7f47ebf121fc3e6cb326c79368021fd9f70604fa4ff20b2b9e0f51dc7d04
|
||||
|
|
@ -34043,9 +34043,6 @@ ALTER TABLE ONLY subscription_user_add_on_assignments
|
|||
ALTER TABLE ONLY packages_conan_metadata
|
||||
ADD CONSTRAINT fk_7302a29cd9 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY approval_merge_request_rules
|
||||
ADD CONSTRAINT fk_73fec3d7e5 FOREIGN KEY (approval_policy_rule_id) REFERENCES approval_policy_rules(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY index_statuses
|
||||
ADD CONSTRAINT fk_74b2492545 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
|
||||
|
||||
|
|
@ -34394,6 +34391,9 @@ ALTER TABLE ONLY dast_profile_schedules
|
|||
ALTER TABLE ONLY analytics_cycle_analytics_group_stages
|
||||
ADD CONSTRAINT fk_analytics_cycle_analytics_group_stages_group_value_stream_id FOREIGN KEY (group_value_stream_id) REFERENCES analytics_cycle_analytics_group_value_streams(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY approval_merge_request_rules
|
||||
ADD CONSTRAINT fk_approval_merge_request_rules_on_approval_policy_rule_id FOREIGN KEY (approval_policy_rule_id) REFERENCES approval_policy_rules(id) ON DELETE SET NULL;
|
||||
|
||||
ALTER TABLE ONLY approval_merge_request_rules
|
||||
ADD CONSTRAINT fk_approval_merge_request_rules_on_scan_result_policy_id FOREIGN KEY (scan_result_policy_id) REFERENCES scan_result_policies(id) ON DELETE SET NULL;
|
||||
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@ have a high degree of confidence in being able to perform them accurately.
|
|||
|
||||
## Not all data is automatically replicated
|
||||
|
||||
If you are using any GitLab features that Geo [doesn't support](../replication/datatypes.md#limitations-on-replicationverification),
|
||||
If you are using any GitLab features that Geo doesn't support,
|
||||
you must make separate provisions to ensure that the **secondary** site has an
|
||||
up-to-date copy of any data associated with that feature. This may extend the
|
||||
required scheduled maintenance period significantly.
|
||||
required scheduled maintenance period significantly. A list of features supported by Geo can be found in the [replicated data types table](../replication/datatypes.md#replicated-data-types).
|
||||
|
||||
A common strategy for keeping this period as short as possible for data stored
|
||||
in files is to use `rsync` to transfer the data. An initial `rsync` can be
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ follow these steps to avoid unnecessary data loss:
|
|||
[what is excluded](../planned_failover.md#not-all-data-is-automatically-replicated).
|
||||
|
||||
1. If you are manually replicating any
|
||||
[data not managed by Geo](../../replication/datatypes.md#limitations-on-replicationverification),
|
||||
[data not managed by Geo](../../replication/datatypes.md#replicated-data-types),
|
||||
trigger the final replication process now.
|
||||
1. On the **primary** site:
|
||||
1. On the left sidebar, at the bottom, select **Admin**.
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ follow these steps to avoid unnecessary data loss:
|
|||
[what is excluded](../planned_failover.md#not-all-data-is-automatically-replicated).
|
||||
|
||||
1. If you are manually replicating any
|
||||
[data not managed by Geo](../../replication/datatypes.md#limitations-on-replicationverification),
|
||||
[data not managed by Geo](../../replication/datatypes.md#replicated-data-types),
|
||||
trigger the final replication process now.
|
||||
1. On the **primary** site:
|
||||
1. On the left sidebar, at the bottom, select **Admin**.
|
||||
|
|
|
|||
|
|
@ -230,9 +230,10 @@ This list of limitations only reflects the latest version of GitLab. If you are
|
|||
- Git clone and fetch requests with option `--depth` over SSH against a secondary site does not work and hangs indefinitely if the secondary site is not up to date at the time the request is initiated. This is due to problems related to translating Git SSH to Git https during proxying. For more information, see [issue 391980](https://gitlab.com/gitlab-org/gitlab/-/issues/391980). A new workflow that does not involve the aforementioned translation step is now available for Linux-packaged GitLab Geo secondary sites which can be enabled with a feature flag. For more details, see [comment in issue 454707](https://gitlab.com/gitlab-org/gitlab/-/issues/454707#note_2102067451). The fix for Cloud Native GitLab Geo secondary sites is tracked in [issue 5641](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/5641).
|
||||
- Some customers have reported that `git fetch` over SSH when the secondary site is out of date hangs and/or times out and fails. `git clone` requests over SSH are not impacted. For more information, see [issue 454707](https://gitlab.com/gitlab-org/gitlab/-/issues/454707). A fix available for Linux-packaged GitLab Geo secondary sites which can be enabled with a feature flag. For more details, see [comment in issue 454707](https://gitlab.com/gitlab-org/gitlab/-/issues/454707#note_2102067451). The fix for Cloud Native GitLab Geo secondary sites is tracked in [issue 5641](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/5641).
|
||||
|
||||
### Limitations on replication/verification
|
||||
### Replicated data types
|
||||
|
||||
There is a complete list of all GitLab [data types](replication/datatypes.md) and [existing support for replication and verification](replication/datatypes.md#limitations-on-replicationverification).
|
||||
There is a complete list of all GitLab [data types](replication/datatypes.md) and
|
||||
[replicated data types](replication/datatypes.md#replicated-data-types).
|
||||
|
||||
## Setup instructions
|
||||
|
||||
|
|
|
|||
|
|
@ -147,15 +147,7 @@ Elasticsearch is an optional database for advanced search. It can improve search
|
|||
in both source-code level, and user generated content in issues, merge requests, and discussions.
|
||||
Elasticsearch is not supported in Geo.
|
||||
|
||||
## Limitations on replication/verification
|
||||
|
||||
The following table lists the GitLab features along with their replication
|
||||
and verification status on a **secondary** site.
|
||||
|
||||
You can keep track of the progress to implement the missing items in
|
||||
these epics/issues:
|
||||
|
||||
- [Geo: Improve the self-service Geo replication framework](https://gitlab.com/groups/gitlab-org/-/epics/3761)
|
||||
## Replicated data types
|
||||
|
||||
### Replicated data types behind a feature flag
|
||||
|
||||
|
|
|
|||
|
|
@ -553,6 +553,17 @@ If Git fetch fails at exactly three hours while syncing a Git repository:
|
|||
sudo gitlab-ctl reconfigure
|
||||
```
|
||||
|
||||
### Error `Failed to open TCP connection to localhost:5000` on secondary when configuring registry replication
|
||||
|
||||
You may face the following error when configuring container registry replication on the secondary site:
|
||||
|
||||
```plaintext
|
||||
Failed to open TCP connection to localhost:5000 (Connection refused - connect(2) for \"localhost\" port 5000)"
|
||||
```
|
||||
|
||||
It happens if the container registry is not enabled on the secondary site. To fix it, check that the container registry
|
||||
is [enabled on the secondary site](../../../packages/container_registry.md#enable-the-container-registry). Note that if [Let’s Encrypt integration is disabled](https://docs.gitlab.com/omnibus/settings/ssl/#configure-https-manually), container registry is disabled as well, and you must [configure it manually](../../../packages/container_registry.md#configure-container-registry-under-its-own-domain).
|
||||
|
||||
## Investigate causes of database replication lag
|
||||
|
||||
If the output of `sudo gitlab-rake geo:status` shows that `Database replication lag` remains significantly high over time, the primary node in database replication can be checked to determine the status of lag for
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ While GitLab Geo helps remote teams work more efficiently by using a local GitLa
|
|||
Learn more about using [Geo as a disaster recovery solution](../administration/geo/disaster_recovery/index.md).
|
||||
|
||||
Geo replicates your database, your Git repositories, and a few other assets.
|
||||
Learn more about [replication limitations](../administration/geo/replication/datatypes.md#limitations-on-replicationverification).
|
||||
Learn more about the [data types Geo replicates](../administration/geo/replication/datatypes.md#replicated-data-types).
|
||||
|
||||
## Support for GitLab self-managed
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ If your availability needs to span multiple zones or multiple locations, read ab
|
|||
|
||||
| Capability | Availability | Recoverability | Data Resiliency | Performance | Risks/Trade-offs|
|
||||
|------------|--------------|----------------|-----------------|-------------|-----------------|
|
||||
|Geo| Depends on the architecture of the Geo site. It is possible to deploy secondaries in single and multiple node configurations. | Eventually consistent. Recovery point depends on replication lag, which depends on a number of factors such as network speeds. Geo supports failover from a primary to secondary site using manual commands that are scriptable. | Geo replicates 100% of planned data types and verifies 50%. See [limitations table](../geo/replication/datatypes.md#limitations-on-replicationverification) for more detail. | Improves read/clone times for users of a secondary. | Geo is not intended to replace other backup/restore solutions. Because of replication lag and the possibility of replicating bad data from a primary, customers should also take regular backups of their primary site and test the restore process. |
|
||||
|Geo| Depends on the architecture of the Geo site. It is possible to deploy secondaries in single and multiple node configurations. | Eventually consistent. Recovery point depends on replication lag, which depends on a number of factors such as network speeds. Geo supports failover from a primary to secondary site using manual commands that are scriptable. | Geo replicates and verifies 100% of planned data types. See the [replicated data types table](../geo/replication/datatypes.md#replicated-data-types) for more detail. | Improves read/clone times for users of a secondary. | Geo is not intended to replace other backup/restore solutions. Because of replication lag and the possibility of replicating bad data from a primary, customers should also take regular backups of their primary site and test the restore process. |
|
||||
|
||||
## Scenarios for failure modes and available mitigation paths
|
||||
|
||||
|
|
|
|||
|
|
@ -271,7 +271,7 @@ Gitaly Cluster and [Geo](../geo/index.md) both provide redundancy. However the r
|
|||
not aware when Gitaly Cluster is used.
|
||||
- Geo provides [replication](../geo/index.md) and [disaster recovery](../geo/disaster_recovery/index.md) for
|
||||
an entire instance of GitLab. Users know when they are using Geo for
|
||||
[replication](../geo/index.md). Geo [replicates multiple data types](../geo/replication/datatypes.md#limitations-on-replicationverification),
|
||||
[replication](../geo/index.md). Geo [replicates multiple data types](../geo/replication/datatypes.md#replicated-data-types),
|
||||
including Git data.
|
||||
|
||||
The following table outlines the major differences between Gitaly Cluster and Geo:
|
||||
|
|
|
|||
|
|
@ -25814,7 +25814,7 @@ Defines which user roles, users, or groups can merge into a protected branch.
|
|||
| <a id="mergerequestiid"></a>`iid` | [`String!`](#string) | Internal ID of the merge request. |
|
||||
| <a id="mergerequestinprogressmergecommitsha"></a>`inProgressMergeCommitSha` | [`String`](#string) | Commit SHA of the merge request if merge is in progress. |
|
||||
| <a id="mergerequestlabels"></a>`labels` | [`LabelConnection`](#labelconnection) | Labels of the merge request. (see [Connections](#connections)) |
|
||||
| <a id="mergerequestmergeafter"></a>`mergeAfter` **{warning-solid}** | [`Time`](#time) | **Introduced** in GitLab 17.4. **Status**: Experiment. Date after which the merge request can be merged. |
|
||||
| <a id="mergerequestmergeafter"></a>`mergeAfter` **{warning-solid}** | [`Time`](#time) | **Introduced** in GitLab 17.5. **Status**: Experiment. Date after which the merge request can be merged. |
|
||||
| <a id="mergerequestmergecommitsha"></a>`mergeCommitSha` | [`String`](#string) | SHA of the merge request commit (set once merged). |
|
||||
| <a id="mergerequestmergeerror"></a>`mergeError` | [`String`](#string) | Error message due to a merge error. |
|
||||
| <a id="mergerequestmergeongoing"></a>`mergeOngoing` | [`Boolean!`](#boolean) | Indicates if a merge is currently occurring. |
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ DETAILS:
|
|||
> - `with_merge_status_recheck` [changed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115948) in GitLab 15.11 [with a flag](../administration/feature_flags.md) named `restrict_merge_status_recheck` to be ignored for requests from users insufficient permissions. Disabled by default.
|
||||
> - `approvals_before_merge` [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119503) in GitLab 16.0.
|
||||
> - `prepared_at` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122001) in GitLab 16.1.
|
||||
> - `merge_after` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165092) in GitLab 17.4.
|
||||
> - `merge_after` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165092) in GitLab 17.5.
|
||||
|
||||
All API calls to non-public information require authentication.
|
||||
|
||||
|
|
|
|||
|
|
@ -148,10 +148,6 @@ The steps:
|
|||
1. [Add a post-deployment migration](#add-a-post-deployment-migration-release-m) (release M)
|
||||
1. [Remove the ignore rule](#remove-the-ignore-rule-release-m1) (release M+1)
|
||||
|
||||
NOTE:
|
||||
It's not possible to rename columns with default values. For more details, see
|
||||
[this merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52032#default-values).
|
||||
|
||||
### Add the regular migration (release M)
|
||||
|
||||
First we need to create the regular migration. This migration should use
|
||||
|
|
|
|||
|
|
@ -152,6 +152,7 @@ Registry disables all package registry operations.
|
|||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/385994) in GitLab 15.7.
|
||||
> - [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/468058) in GitLab 17.4 to support NuGet group endpoints.
|
||||
> - [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/468059) in GitLab 17.5 to support Maven group endpoint.
|
||||
|
||||
To allow anyone to pull from the package registry, regardless of project visibility:
|
||||
|
||||
|
|
@ -179,6 +180,7 @@ Several known issues exist when you allow anyone to pull from the package regist
|
|||
|
||||
- Endpoints for projects are supported.
|
||||
- NuGet registry endpoints for groups are supported. However, because of how NuGet clients send the authentication credentials, anonymous downloads are not allowed. Only GitLab users can pull from the package registry, even if this feature is enabled.
|
||||
- Maven registry endpoint for groups are supported.
|
||||
- Other group and instance endpoints are not fully supported. Support for group endpoints is proposed in [epic 14234](https://gitlab.com/groups/gitlab-org/-/epics/14234).
|
||||
- It does not work with the [Composer](../composer_repository/index.md#install-a-composer-package), because Composer only has a group endpoint.
|
||||
- It works with Conan, but using [`conan search`](../conan_repository/index.md#search-for-conan-packages-in-the-package-registry) does not work.
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ To archive multiple designs at once:
|
|||
|
||||
### Replicate design management data
|
||||
|
||||
Design Management data [can be replicated](../../../administration/geo/replication/datatypes.md#limitations-on-replicationverification)
|
||||
Design Management data [can be replicated](../../../administration/geo/replication/datatypes.md#replicated-data-types)
|
||||
and in GitLab 16.1 and later it can be [verified by Geo as well](https://gitlab.com/gitlab-org/gitlab/-/issues/355660).
|
||||
|
||||
## Markdown and rich text editors for descriptions
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ The Repository X-Ray searches a maximum of two directory levels from the reposit
|
|||
| ---------- |-----------------| -------------------- | -------------- |
|
||||
| C++ | Conan | `conanfile.py` | 17.5 or later |
|
||||
| C++ | Conan | `conanfile.txt` | 17.4 or later |
|
||||
| C# | NuGet | `*.csproj` | 17.5 or later |
|
||||
| Go | Go Modules | `go.mod` | 17.4 or later |
|
||||
| Java | Gradle | `build.gradle` | 17.4 or later |
|
||||
| Java | Maven | `pom.xml` | 17.4 or later |
|
||||
|
|
|
|||
|
|
@ -157,14 +157,8 @@ module API
|
|||
end
|
||||
route_setting :authentication, job_token_allowed: true, deploy_token_allowed: true, basic_auth_personal_access_token: true
|
||||
get ':id/-/packages/maven/*path/:file_name', requirements: MAVEN_ENDPOINT_REQUIREMENTS do
|
||||
action = if ::Feature.enabled?(:allow_anyone_to_pull_public_maven_packages_on_group_level, find_group(params[:id]))
|
||||
:read_package_within_public_registries
|
||||
else
|
||||
:read_group
|
||||
end
|
||||
|
||||
# return a similar failure to group = find_group(params[:id])
|
||||
group = find_authorized_group!(action: action)
|
||||
group = find_authorized_group!(action: :read_package_within_public_registries)
|
||||
|
||||
if Feature.disabled?(:maven_central_request_forwarding, group&.root_ancestor)
|
||||
not_found!('Group') unless path_exists?(params[:path])
|
||||
|
|
|
|||
|
|
@ -125,16 +125,6 @@ RSpec.describe ::Packages::Maven::PackageFinder, feature_category: :package_regi
|
|||
end
|
||||
|
||||
it_behaves_like 'handling valid and invalid paths'
|
||||
|
||||
context 'when the FF allow_anyone_to_pull_public_maven_packages_on_group_level disabled' do
|
||||
let(:param_path) { package.maven_metadatum.path }
|
||||
|
||||
before do
|
||||
stub_feature_flags(allow_anyone_to_pull_public_maven_packages_on_group_level: false)
|
||||
end
|
||||
|
||||
it { is_expected.to be_empty }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -753,15 +753,6 @@ RSpec.describe API::MavenPackages, feature_category: :package_registry do
|
|||
end
|
||||
|
||||
it_behaves_like 'successfully returning the file'
|
||||
|
||||
context 'when the FF allow_anyone_to_pull_public_maven_packages_on_group_level disabled' do
|
||||
before do
|
||||
stub_feature_flags(allow_anyone_to_pull_public_maven_packages_on_group_level: false)
|
||||
stub_feature_flags(maven_central_request_forwarding: false)
|
||||
end
|
||||
|
||||
it_behaves_like 'returning response status', :not_found
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue