diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-20 15:10:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-20 15:10:59 +0300 |
commit | 34c88d512f2697cd96dd3788e8ffaf1b9c8935b4 (patch) | |
tree | e7fb4118737b248dedc4111e71fc9514490cb6ea /app | |
parent | 9fa24e4f9c5440e2ddc27cd787df5f5e669bed25 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/sentry/sentry_browser_wrapper.js | 16 | ||||
-rw-r--r-- | app/assets/javascripts/sidebar/mount_sidebar.js | 3 | ||||
-rw-r--r-- | app/controllers/projects/incidents_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/projects/issues_controller.rb | 3 | ||||
-rw-r--r-- | app/controllers/projects/merge_requests_controller.rb | 3 | ||||
-rw-r--r-- | app/controllers/projects/ml/models_controller.rb | 19 | ||||
-rw-r--r-- | app/controllers/search_controller.rb | 4 | ||||
-rw-r--r-- | app/finders/ci/runners_finder.rb | 11 | ||||
-rw-r--r-- | app/graphql/resolvers/ci/runners_resolver.rb | 8 | ||||
-rw-r--r-- | app/helpers/merge_requests_helper.rb | 2 | ||||
-rw-r--r-- | app/models/ci/runner.rb | 2 | ||||
-rw-r--r-- | app/models/ci/runner_manager.rb | 21 | ||||
-rw-r--r-- | app/models/commit_status.rb | 12 | ||||
-rw-r--r-- | app/policies/project_policy.rb | 4 |
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 |