Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-11-15 15:11:26 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-11-15 15:11:26 +0300
commitd221a274982118d92d424ce382646a7ef2f5887a (patch)
tree91d783f452f98fe604a8fd17e385661defa5f006 /app
parent10a4185528def44f9db4cc2f3ebb1ad406884625 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/observability/client.js2
-rw-r--r--app/models/ci/bridge.rb27
-rw-r--r--app/models/ci/pipeline.rb4
-rw-r--r--app/models/concerns/ci/contextable.rb19
-rw-r--r--app/models/concerns/ci/partitionable.rb4
-rw-r--r--app/models/user.rb9
-rw-r--r--app/services/merge_requests/mergeability/check_broken_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/check_ci_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/check_conflict_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/check_discussions_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/check_draft_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/check_open_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/check_rebase_status_service.rb2
-rw-r--r--app/services/merge_requests/mergeability/detailed_merge_status_service.rb8
-rw-r--r--app/services/merge_requests/mergeability/run_checks_service.rb8
-rw-r--r--app/services/notes/create_service.rb2
16 files changed, 69 insertions, 28 deletions
diff --git a/app/assets/javascripts/observability/client.js b/app/assets/javascripts/observability/client.js
index 32ff7fff128..be13e69f225 100644
--- a/app/assets/javascripts/observability/client.js
+++ b/app/assets/javascripts/observability/client.js
@@ -147,7 +147,7 @@ function filterObjToQueryParams(filterObj) {
const filterParams = new URLSearchParams();
Object.keys(SUPPORTED_FILTERS).forEach((filterName) => {
- const filterValues = filterObj[filterName] || [];
+ const filterValues = Array.isArray(filterObj[filterName]) ? filterObj[filterName] : [];
const validFilters = filterValues.filter((f) =>
SUPPORTED_FILTERS[filterName].includes(f.operator),
);
diff --git a/app/models/ci/bridge.rb b/app/models/ci/bridge.rb
index cf6401dc1da..89f8520b331 100644
--- a/app/models/ci/bridge.rb
+++ b/app/models/ci/bridge.rb
@@ -220,8 +220,19 @@ module Ci
def variables
strong_memoize(:variables) do
+ bridge_variables =
+ if ::Feature.disabled?(:exclude_protected_variables_from_multi_project_pipeline_triggers, project) ||
+ (expose_protected_project_variables? && expose_protected_group_variables?)
+ scoped_variables
+ else
+ unprotected_scoped_variables(
+ expose_project_variables: expose_protected_project_variables?,
+ expose_group_variables: expose_protected_group_variables?
+ )
+ end
+
Gitlab::Ci::Variables::Collection.new
- .concat(scoped_variables)
+ .concat(bridge_variables)
.concat(pipeline.persisted_variables)
end
end
@@ -260,6 +271,20 @@ module Ci
private
+ def expose_protected_group_variables?
+ return true if downstream_project.nil?
+ return true if project.group.present? && project.group == downstream_project.group
+
+ false
+ end
+
+ def expose_protected_project_variables?
+ return true if downstream_project.nil?
+ return true if project.id == downstream_project.id
+
+ false
+ end
+
def cross_project_params
{
project: downstream_project,
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index cf3efc5998f..54aa3d78cf3 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -35,6 +35,8 @@ module Ci
CANCELABLE_STATUSES = (Ci::HasStatus::CANCELABLE_STATUSES + ['manual']).freeze
UNLOCKABLE_STATUSES = (Ci::Pipeline.completed_statuses + [:manual]).freeze
+ INITIAL_PARTITION_VALUE = 100
+ NEXT_PARTITION_VALUE = 101
paginates_per 15
@@ -596,7 +598,7 @@ module Ci
end
def self.current_partition_value
- 100
+ INITIAL_PARTITION_VALUE
end
def self.object_hierarchy(relation, options = {})
diff --git a/app/models/concerns/ci/contextable.rb b/app/models/concerns/ci/contextable.rb
index 88b7bb89b89..dcbee529637 100644
--- a/app/models/concerns/ci/contextable.rb
+++ b/app/models/concerns/ci/contextable.rb
@@ -17,6 +17,25 @@ module Ci
end
end
+ def unprotected_scoped_variables(
+ expose_project_variables:,
+ expose_group_variables:,
+ environment: expanded_environment_name,
+ dependencies: true)
+
+ track_duration do
+ pipeline
+ .variables_builder
+ .unprotected_scoped_variables(
+ self,
+ expose_project_variables: expose_project_variables,
+ expose_group_variables: expose_group_variables,
+ environment: environment,
+ dependencies: dependencies
+ )
+ end
+ end
+
def track_duration
start_time = ::Gitlab::Metrics::System.monotonic_time
result = yield
diff --git a/app/models/concerns/ci/partitionable.rb b/app/models/concerns/ci/partitionable.rb
index c4b1281fa72..aaf07bfee3a 100644
--- a/app/models/concerns/ci/partitionable.rb
+++ b/app/models/concerns/ci/partitionable.rb
@@ -106,7 +106,9 @@ module Ci
partitioned_by :partition_id,
strategy: :ci_sliding_list,
- next_partition_if: proc { false },
+ next_partition_if: ->(latest_partition) do
+ latest_partition.blank? || Ci::Pipeline::NEXT_PARTITION_VALUE > latest_partition.value
+ end,
detach_partition_if: proc { false },
# Most of the db tasks are run in a weekly basis, e.g. execute_batched_migrations.
# Therefore, let's start with 1.week and see how it'd go.
diff --git a/app/models/user.rb b/app/models/user.rb
index 25f22563136..fbdaa110435 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -22,7 +22,6 @@ class User < MainClusterwide::ApplicationRecord
include FromUnion
include BatchDestroyDependentAssociations
include BatchNullifyDependentAssociations
- include IgnorableColumns
include UpdateHighestRole
include HasUserType
include Gitlab::Auth::Otp::Fortinet
@@ -31,16 +30,8 @@ class User < MainClusterwide::ApplicationRecord
include StripAttribute
include EachBatch
include CrossDatabaseIgnoredTables
- include IgnorableColumns
include UseSqlFunctionForPrimaryKeyLookups
- ignore_column %i[
- email_opted_in
- email_opted_in_ip
- email_opted_in_source_id
- email_opted_in_at
- ], remove_with: '16.6', remove_after: '2023-10-22'
-
# `ensure_namespace_correct` needs to be moved to an after_commit (?)
cross_database_ignore_tables %w[namespaces namespace_settings], url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/424279'
diff --git a/app/services/merge_requests/mergeability/check_broken_status_service.rb b/app/services/merge_requests/mergeability/check_broken_status_service.rb
index 25293c53bb5..ae637b4e19d 100644
--- a/app/services/merge_requests/mergeability/check_broken_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_broken_status_service.rb
@@ -8,7 +8,7 @@ module MergeRequests
def execute
if merge_request.broken?
- failure(reason: failure_reason)
+ failure
else
success
end
diff --git a/app/services/merge_requests/mergeability/check_ci_status_service.rb b/app/services/merge_requests/mergeability/check_ci_status_service.rb
index b4e60e964b7..9c57e61b07d 100644
--- a/app/services/merge_requests/mergeability/check_ci_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_ci_status_service.rb
@@ -12,7 +12,7 @@ module MergeRequests
if merge_request.mergeable_ci_state?
success
else
- failure(reason: failure_reason)
+ failure
end
end
diff --git a/app/services/merge_requests/mergeability/check_conflict_status_service.rb b/app/services/merge_requests/mergeability/check_conflict_status_service.rb
index 2bc253322c9..c59b3efff31 100644
--- a/app/services/merge_requests/mergeability/check_conflict_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_conflict_status_service.rb
@@ -11,7 +11,7 @@ module MergeRequests
if merge_request.can_be_merged?
success
else
- failure(reason: failure_reason)
+ failure
end
end
diff --git a/app/services/merge_requests/mergeability/check_discussions_status_service.rb b/app/services/merge_requests/mergeability/check_discussions_status_service.rb
index f9cff5d1e5f..45b6f64762b 100644
--- a/app/services/merge_requests/mergeability/check_discussions_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_discussions_status_service.rb
@@ -12,7 +12,7 @@ module MergeRequests
if merge_request.mergeable_discussions_state?
success
else
- failure(reason: failure_reason)
+ failure
end
end
diff --git a/app/services/merge_requests/mergeability/check_draft_status_service.rb b/app/services/merge_requests/mergeability/check_draft_status_service.rb
index 85b67fdc629..5bd5c7ab305 100644
--- a/app/services/merge_requests/mergeability/check_draft_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_draft_status_service.rb
@@ -9,7 +9,7 @@ module MergeRequests
def execute
if merge_request.draft?
- failure(reason: failure_reason)
+ failure
else
success
end
diff --git a/app/services/merge_requests/mergeability/check_open_status_service.rb b/app/services/merge_requests/mergeability/check_open_status_service.rb
index f5b70f18394..587e7e7a08d 100644
--- a/app/services/merge_requests/mergeability/check_open_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_open_status_service.rb
@@ -11,7 +11,7 @@ module MergeRequests
if merge_request.open?
success
else
- failure(reason: failure_reason)
+ failure
end
end
diff --git a/app/services/merge_requests/mergeability/check_rebase_status_service.rb b/app/services/merge_requests/mergeability/check_rebase_status_service.rb
index 02cd0587be0..99fa111643d 100644
--- a/app/services/merge_requests/mergeability/check_rebase_status_service.rb
+++ b/app/services/merge_requests/mergeability/check_rebase_status_service.rb
@@ -11,7 +11,7 @@ module MergeRequests
return inactive unless merge_request.project.ff_merge_must_be_possible?
if merge_request.should_be_rebased?
- failure(reason: failure_reason)
+ failure
else
success
end
diff --git a/app/services/merge_requests/mergeability/detailed_merge_status_service.rb b/app/services/merge_requests/mergeability/detailed_merge_status_service.rb
index 92f0fb0429c..06a68466e87 100644
--- a/app/services/merge_requests/mergeability/detailed_merge_status_service.rb
+++ b/app/services/merge_requests/mergeability/detailed_merge_status_service.rb
@@ -19,12 +19,12 @@ module MergeRequests
# If everything else is mergeable, but CI is not, the frontend expects two potential states to be returned
# See discussion: gitlab.com/gitlab-org/gitlab/-/merge_requests/96778#note_1093063523
if check_ci_results.failed?
- ci_check_failure_reason
+ ci_check_failed_check
else
:mergeable
end
else
- check_results.payload[:failure_reason]
+ check_results.payload[:failed_check]
end
end
@@ -60,11 +60,11 @@ module MergeRequests
end
end
- def ci_check_failure_reason
+ def ci_check_failed_check
if merge_request.actual_head_pipeline&.running?
:ci_still_running
else
- check_ci_results.payload.fetch(:reason)
+ check_ci_results.payload.fetch(:identifier)
end
end
end
diff --git a/app/services/merge_requests/mergeability/run_checks_service.rb b/app/services/merge_requests/mergeability/run_checks_service.rb
index 92f3e5e951a..e941c11bd7c 100644
--- a/app/services/merge_requests/mergeability/run_checks_service.rb
+++ b/app/services/merge_requests/mergeability/run_checks_service.rb
@@ -32,7 +32,7 @@ module MergeRequests
message: 'Checks failed.',
payload: {
results: results,
- failure_reason: failure_reason
+ failed_check: failed_check
}
)
end
@@ -68,8 +68,10 @@ module MergeRequests
results.none?(&:failed?)
end
- def failure_reason
- results.find(&:failed?)&.payload&.fetch(:reason)&.to_sym
+ def failed_check
+ # NOTE: the identifier could be string when we retrieve it from the cache
+ # so let's make sure we always return symbols here.
+ results.find(&:failed?)&.payload&.fetch(:identifier)&.to_sym
end
end
end
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb
index a63b1cf375f..0ccb25c2335 100644
--- a/app/services/notes/create_service.rb
+++ b/app/services/notes/create_service.rb
@@ -212,7 +212,7 @@ module Notes
end
def should_track_ipynb_notes?(note)
- Feature.enabled?(:ipynbdiff_notes_tracker) && note.respond_to?(:diff_file) && note.diff_file&.ipynb?
+ note.respond_to?(:diff_file) && note.diff_file&.ipynb?
end
def track_note_creation_in_ipynb(note)