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-10-20 15:10:59 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-10-20 15:10:59 +0300
commit34c88d512f2697cd96dd3788e8ffaf1b9c8935b4 (patch)
treee7fb4118737b248dedc4111e71fc9514490cb6ea /app
parent9fa24e4f9c5440e2ddc27cd787df5f5e669bed25 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/sentry/sentry_browser_wrapper.js16
-rw-r--r--app/assets/javascripts/sidebar/mount_sidebar.js3
-rw-r--r--app/controllers/projects/incidents_controller.rb2
-rw-r--r--app/controllers/projects/issues_controller.rb3
-rw-r--r--app/controllers/projects/merge_requests_controller.rb3
-rw-r--r--app/controllers/projects/ml/models_controller.rb19
-rw-r--r--app/controllers/search_controller.rb4
-rw-r--r--app/finders/ci/runners_finder.rb11
-rw-r--r--app/graphql/resolvers/ci/runners_resolver.rb8
-rw-r--r--app/helpers/merge_requests_helper.rb2
-rw-r--r--app/models/ci/runner.rb2
-rw-r--r--app/models/ci/runner_manager.rb21
-rw-r--r--app/models/commit_status.rb12
-rw-r--r--app/policies/project_policy.rb4
14 files changed, 81 insertions, 29 deletions
diff --git a/app/assets/javascripts/sentry/sentry_browser_wrapper.js b/app/assets/javascripts/sentry/sentry_browser_wrapper.js
index 03cf53fabef..99f5adf8e89 100644
--- a/app/assets/javascripts/sentry/sentry_browser_wrapper.js
+++ b/app/assets/javascripts/sentry/sentry_browser_wrapper.js
@@ -1,15 +1,23 @@
+/* eslint-disable no-console */
+
// The _Sentry object is globally exported so it can be used here
// This hack allows us to load a single version of `@sentry/browser`
-// in the browser (or none). See app/views/layouts/_head.html.haml
-// to find how it is imported.
+// in the browser (or none).
+
+// See app/views/layouts/_head.html.haml to find how it is imported.
-// This module wraps methods used by our production code.
-// Each export is names as we cannot export the entire namespace from *.
+// This module exports Sentry methods used by our production code.
/** @type {import('@sentry/core').captureException} */
export const captureException = (...args) => {
// eslint-disable-next-line no-underscore-dangle
const Sentry = window._Sentry;
+ // When Sentry is not configured during development, show console error
+ if (process.env.NODE_ENV === 'development' && !Sentry) {
+ console.error('[Sentry stub]', 'captureException(...) called with:', { ...args });
+ return;
+ }
+
Sentry?.captureException(...args);
};
diff --git a/app/assets/javascripts/sidebar/mount_sidebar.js b/app/assets/javascripts/sidebar/mount_sidebar.js
index 4b6dbdcc2c9..12e60a9ed4e 100644
--- a/app/assets/javascripts/sidebar/mount_sidebar.js
+++ b/app/assets/javascripts/sidebar/mount_sidebar.js
@@ -799,8 +799,7 @@ export function mountAssigneesDropdown() {
});
}
-const isAssigneesWidgetShown =
- (isInIssuePage() || isInDesignPage() || isInMRPage()) && gon.features.issueAssigneesWidget;
+const isAssigneesWidgetShown = isInIssuePage() || isInDesignPage() || isInMRPage();
export function mountSidebar(mediator, store) {
mountSidebarTodoWidget();
diff --git a/app/controllers/projects/incidents_controller.rb b/app/controllers/projects/incidents_controller.rb
index bacf3192ee6..a3c1fd64a9d 100644
--- a/app/controllers/projects/incidents_controller.rb
+++ b/app/controllers/projects/incidents_controller.rb
@@ -12,7 +12,7 @@ class Projects::IncidentsController < Projects::ApplicationController
push_force_frontend_feature_flag(:work_items_mvc_2, @project&.work_items_mvc_2_feature_flag_enabled?)
push_frontend_feature_flag(:moved_mr_sidebar, project)
push_force_frontend_feature_flag(:linked_work_items, @project&.linked_work_items_feature_flag_enabled?)
- push_frontend_feature_flag(:notifications_todos_buttons, project)
+ push_frontend_feature_flag(:notifications_todos_buttons, current_user)
end
feature_category :incident_management
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index 4849cccac52..ed1712ac714 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -63,14 +63,13 @@ class Projects::IssuesController < Projects::ApplicationController
end
before_action only: :show do
- push_frontend_feature_flag(:issue_assignees_widget, project)
push_frontend_feature_flag(:work_items_mvc, project&.group)
push_force_frontend_feature_flag(:work_items_mvc, project&.work_items_mvc_feature_flag_enabled?)
push_force_frontend_feature_flag(:work_items_mvc_2, project&.work_items_mvc_2_feature_flag_enabled?)
push_frontend_feature_flag(:epic_widget_edit_confirmation, project)
push_frontend_feature_flag(:moved_mr_sidebar, project)
push_force_frontend_feature_flag(:linked_work_items, project.linked_work_items_feature_flag_enabled?)
- push_frontend_feature_flag(:notifications_todos_buttons, project)
+ push_frontend_feature_flag(:notifications_todos_buttons, current_user)
end
around_action :allow_gitaly_ref_name_caching, only: [:discussions]
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index ad7b7221e44..77e37b8e99c 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -37,7 +37,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
before_action only: [:show, :diffs] do
push_frontend_feature_flag(:core_security_mr_widget_counts, project)
- push_frontend_feature_flag(:issue_assignees_widget, @project)
push_frontend_feature_flag(:moved_mr_sidebar, project)
push_frontend_feature_flag(:sast_reports_in_inline_diff, project)
push_frontend_feature_flag(:mr_experience_survey, project)
@@ -45,7 +44,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
push_force_frontend_feature_flag(:summarize_my_code_review, summarize_my_code_review_enabled?)
push_frontend_feature_flag(:ci_job_failures_in_mr, project)
push_frontend_feature_flag(:mr_pipelines_graphql, project)
- push_frontend_feature_flag(:notifications_todos_buttons, project)
+ push_frontend_feature_flag(:notifications_todos_buttons, current_user)
end
before_action only: [:edit] do
diff --git a/app/controllers/projects/ml/models_controller.rb b/app/controllers/projects/ml/models_controller.rb
index bddad880324..795cf67ce62 100644
--- a/app/controllers/projects/ml/models_controller.rb
+++ b/app/controllers/projects/ml/models_controller.rb
@@ -3,8 +3,9 @@
module Projects
module Ml
class ModelsController < ::Projects::ApplicationController
- before_action :check_feature_enabled
- before_action :set_model, only: [:show]
+ before_action :authorize_read_model_registry!
+ before_action :authorize_write_model_registry!, only: [:destroy]
+ before_action :set_model, only: [:show, :destroy]
feature_category :mlops
MAX_MODELS_PER_PAGE = 20
@@ -21,12 +22,24 @@ module Projects
def show; end
+ def destroy
+ @model.destroy!
+
+ redirect_to project_ml_models_path(@project),
+ status: :found,
+ notice: s_("MlExperimentTracking|Model removed")
+ end
+
private
- def check_feature_enabled
+ def authorize_read_model_registry!
render_404 unless can?(current_user, :read_model_registry, @project)
end
+ def authorize_write_model_registry!
+ render_404 unless can?(current_user, :write_model_registry, @project)
+ end
+
def set_model
@model = ::Ml::Model.by_project_id_and_id(@project, params[:model_id])
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 6af1081e307..b639a9dda3f 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -40,10 +40,6 @@ class SearchController < ApplicationController
update_scope_for_code_search
end
- before_action only: :show do
- push_frontend_feature_flag(:search_notes_hide_archived_projects, current_user)
- end
-
rescue_from ActiveRecord::QueryCanceled, with: :render_timeout
layout 'search'
diff --git a/app/finders/ci/runners_finder.rb b/app/finders/ci/runners_finder.rb
index a716740ac08..945d332ff47 100644
--- a/app/finders/ci/runners_finder.rb
+++ b/app/finders/ci/runners_finder.rb
@@ -21,6 +21,7 @@ module Ci
filter_by_runner_type!
filter_by_tag_list!
filter_by_creator_id!
+ filter_by_version_prefix!
sort!
request_tag_list!
@@ -119,6 +120,16 @@ module Ci
@runners = @runners.with_creator_id(creator_id) if creator_id.present?
end
+ def filter_by_version_prefix!
+ return @runners unless @params[:version_prefix]
+
+ sanitized_prefix = @params[:version_prefix][/^[\d+.]+/]
+
+ return @runners unless sanitized_prefix
+
+ @runners = @runners.with_version_prefix(sanitized_prefix)
+ end
+
def sort!
@runners = @runners.order_by(sort_key)
end
diff --git a/app/graphql/resolvers/ci/runners_resolver.rb b/app/graphql/resolvers/ci/runners_resolver.rb
index efc692f7bab..9121c413b1f 100644
--- a/app/graphql/resolvers/ci/runners_resolver.rb
+++ b/app/graphql/resolvers/ci/runners_resolver.rb
@@ -45,6 +45,13 @@ module Resolvers
required: false,
description: 'Filter runners by creator ID.'
+ argument :version_prefix, GraphQL::Types::String,
+ required: false,
+ description: "Filter runners by version. Runners that contain runner managers with the version at " \
+ "the start of the search term are returned. For example, the search term '14.' returns " \
+ "runner managers with versions '14.11.1' and '14.2.3'.",
+ alpha: { milestone: '16.6' }
+
def resolve_with_lookahead(**args)
apply_lookahead(
::Ci::RunnersFinder
@@ -74,6 +81,7 @@ module Resolvers
sort: params[:sort]&.to_s,
creator_id:
params[:creator_id] ? ::GitlabSchema.parse_gid(params[:creator_id], expected_type: ::User).model_id : nil,
+ version_prefix: params[:version_prefix],
preload: false # we'll handle preloading ourselves
}.compact
.merge(parent_param)
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index 131cd7cd969..7eaa0d41297 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -176,7 +176,7 @@ module MergeRequestsHelper
end
def notifications_todos_buttons_enabled?
- Feature.enabled?(:notifications_todos_buttons, @project)
+ Feature.enabled?(:notifications_todos_buttons, current_user)
end
def diffs_tab_pane_data(project, merge_request, params)
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index 8a9e51ef133..9c30beeeb59 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -219,6 +219,8 @@ module Ci
validate :any_project, if: :project_type?
validate :exactly_one_group, if: :group_type?
+ scope :with_version_prefix, ->(value) { joins(:runner_managers).merge(RunnerManager.with_version_prefix(value)) }
+
acts_as_taggable
after_destroy :cleanup_runner_queue
diff --git a/app/models/ci/runner_manager.rb b/app/models/ci/runner_manager.rb
index 7d8fc097f51..e6576859827 100644
--- a/app/models/ci/runner_manager.rb
+++ b/app/models/ci/runner_manager.rb
@@ -62,6 +62,16 @@ module Ci
scope :order_id_desc, -> { order(id: :desc) }
+ scope :with_version_prefix, ->(value) do
+ regex = version_regex_expression_for_version(value)
+ value += '.' if regex.end_with?('\.') && !value.end_with?('.')
+ substring = Arel::Nodes::NamedFunction.new('substring', [
+ Ci::RunnerManager.arel_table[:version],
+ Arel.sql("'#{regex}'::text")
+ ])
+ where(substring.eq(sanitize_sql_like(value)))
+ end
+
scope :with_upgrade_status, ->(upgrade_status) do
joins(:runner_version).where(runner_version: { status: upgrade_status })
end
@@ -137,5 +147,16 @@ module Ci
Ci::Runners::ProcessRunnerVersionUpdateWorker.perform_async(new_version)
end
+
+ def self.version_regex_expression_for_version(version)
+ case version
+ when /\d+\.\d+\.\d+/
+ '^\d+\.\d+\.\d+'
+ when /\d+\.\d+(\.)?/
+ '^\d+\.\d+\.'
+ else
+ '^\d+\.'
+ end
+ end
end
end
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 3761aa81bf7..6109ead9865 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -9,19 +9,11 @@ class CommitStatus < Ci::ApplicationRecord
include BulkInsertableAssociations
include TaggableQueries
- def self.switch_table_names
- if Gitlab::Utils.to_boolean(ENV['USE_CI_BUILDS_ROUTING_TABLE'])
- :p_ci_builds
- else
- :ci_builds
- end
- end
-
- self.table_name = self.switch_table_names
+ self.table_name = :p_ci_builds
self.sequence_name = :ci_builds_id_seq
self.primary_key = :id
- partitionable scope: :pipeline
+ partitionable scope: :pipeline, partitioned: true
belongs_to :user
belongs_to :project
diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb
index ce98617033e..0a93dcdff9f 100644
--- a/app/policies/project_policy.rb
+++ b/app/policies/project_policy.rb
@@ -914,6 +914,10 @@ class ProjectPolicy < BasePolicy
enable :read_model_registry
end
+ rule { can?(:reporter_access) & model_registry_enabled }.policy do
+ enable :write_model_registry
+ end
+
rule { model_experiments_enabled }.policy do
enable :read_model_experiments
end