diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-15 15:11:26 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-15 15:11:26 +0300 |
commit | d221a274982118d92d424ce382646a7ef2f5887a (patch) | |
tree | 91d783f452f98fe604a8fd17e385661defa5f006 /app | |
parent | 10a4185528def44f9db4cc2f3ebb1ad406884625 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
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) |