From 4555e1b21c365ed8303ffb7a3325d773c9b8bf31 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 19 May 2021 15:44:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-12-stable-ee --- .../analytics/cycle_analytics/stages_controller.rb | 44 ++++++++++++++++++++ .../cycle_analytics/value_streams_controller.rb | 16 ++++++++ .../projects/autocomplete_sources_controller.rb | 2 +- app/controllers/projects/blame_controller.rb | 2 +- app/controllers/projects/blob_controller.rb | 24 ++++++++--- app/controllers/projects/boards_controller.rb | 1 - .../projects/ci/pipeline_editor_controller.rb | 4 +- app/controllers/projects/commit_controller.rb | 6 +-- app/controllers/projects/compare_controller.rb | 6 ++- .../projects/environments_controller.rb | 2 +- app/controllers/projects/forks_controller.rb | 2 +- app/controllers/projects/group_links_controller.rb | 2 +- app/controllers/projects/hooks_controller.rb | 1 + app/controllers/projects/imports_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 35 ++++++---------- app/controllers/projects/logs_controller.rb | 2 +- .../merge_requests/application_controller.rb | 2 +- .../merge_requests/creations_controller.rb | 6 +-- .../projects/merge_requests/diffs_controller.rb | 5 ++- .../projects/merge_requests_controller.rb | 24 +++++++---- app/controllers/projects/milestones_controller.rb | 4 +- app/controllers/projects/mirrors_controller.rb | 2 +- app/controllers/projects/pages_controller.rb | 2 +- app/controllers/projects/pipelines_controller.rb | 39 ++++++++++++++---- .../projects/project_members_controller.rb | 2 +- .../projects/protected_branches_controller.rb | 2 +- .../projects/protected_refs_controller.rb | 2 +- app/controllers/projects/releases_controller.rb | 5 --- .../projects/repositories_controller.rb | 4 +- .../projects/runner_projects_controller.rb | 5 ++- app/controllers/projects/runners_controller.rb | 15 +------ .../projects/security/configuration_controller.rb | 2 +- app/controllers/projects/services_controller.rb | 48 +++++++++++----------- .../projects/settings/ci_cd_controller.rb | 10 ++--- .../projects/settings/operations_controller.rb | 2 +- .../settings/packages_and_registries_controller.rb | 23 +++++++++++ .../projects/settings/repository_controller.rb | 2 +- app/controllers/projects/snippets_controller.rb | 4 ++ app/controllers/projects/tags_controller.rb | 3 -- app/controllers/projects/wikis_controller.rb | 4 ++ 40 files changed, 242 insertions(+), 126 deletions(-) create mode 100644 app/controllers/projects/analytics/cycle_analytics/stages_controller.rb create mode 100644 app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb create mode 100644 app/controllers/projects/settings/packages_and_registries_controller.rb (limited to 'app/controllers/projects') diff --git a/app/controllers/projects/analytics/cycle_analytics/stages_controller.rb b/app/controllers/projects/analytics/cycle_analytics/stages_controller.rb new file mode 100644 index 00000000000..7b4f6739a9b --- /dev/null +++ b/app/controllers/projects/analytics/cycle_analytics/stages_controller.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class Projects::Analytics::CycleAnalytics::StagesController < Projects::ApplicationController + respond_to :json + + feature_category :planning_analytics + + before_action :authorize_read_cycle_analytics! + before_action :only_default_value_stream_is_allowed! + + def index + result = list_service.execute + + if result.success? + render json: cycle_analytics_configuration(result.payload[:stages]) + else + render json: { message: result.message }, status: result.http_status + end + end + + private + + def only_default_value_stream_is_allowed! + render_404 if params[:value_stream_id] != Analytics::CycleAnalytics::Stages::BaseService::DEFAULT_VALUE_STREAM_NAME + end + + def value_stream + Analytics::CycleAnalytics::ProjectValueStream.build_default_value_stream(@project) + end + + def list_params + { value_stream: value_stream } + end + + def list_service + Analytics::CycleAnalytics::Stages::ListService.new(parent: @project, current_user: current_user, params: list_params) + end + + def cycle_analytics_configuration(stages) + stage_presenters = stages.map { |s| ::Analytics::CycleAnalytics::StagePresenter.new(s) } + + Analytics::CycleAnalytics::ConfigurationEntity.new(stages: stage_presenters) + end +end diff --git a/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb b/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb new file mode 100644 index 00000000000..03dcb164d94 --- /dev/null +++ b/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class Projects::Analytics::CycleAnalytics::ValueStreamsController < Projects::ApplicationController + respond_to :json + + feature_category :planning_analytics + + before_action :authorize_read_cycle_analytics! + + def index + # FOSS users can only see the default value stream + value_streams = [Analytics::CycleAnalytics::ProjectValueStream.build_default_value_stream(@project)] + + render json: Analytics::CycleAnalytics::ValueStreamSerializer.new.represent(value_streams) + end +end diff --git a/app/controllers/projects/autocomplete_sources_controller.rb b/app/controllers/projects/autocomplete_sources_controller.rb index 001967b8bb4..7c419cac1cc 100644 --- a/app/controllers/projects/autocomplete_sources_controller.rb +++ b/app/controllers/projects/autocomplete_sources_controller.rb @@ -49,4 +49,4 @@ class Projects::AutocompleteSourcesController < Projects::ApplicationController end end -Projects::AutocompleteSourcesController.prepend_if_ee('EE::Projects::AutocompleteSourcesController') +Projects::AutocompleteSourcesController.prepend_mod_with('Projects::AutocompleteSourcesController') diff --git a/app/controllers/projects/blame_controller.rb b/app/controllers/projects/blame_controller.rb index 2c7c49b4250..1df7b9ed165 100644 --- a/app/controllers/projects/blame_controller.rb +++ b/app/controllers/projects/blame_controller.rb @@ -20,7 +20,7 @@ class Projects::BlameController < Projects::ApplicationController environment_params = @repository.branch_exists?(@ref) ? { ref: @ref } : { commit: @commit } environment_params[:find_latest] = true - @environment = EnvironmentsByDeploymentsFinder.new(@project, current_user, environment_params).execute.last + @environment = ::Environments::EnvironmentsByDeploymentsFinder.new(@project, current_user, environment_params).execute.last @blame = Gitlab::Blame.new(@blob, @commit) @blame = Gitlab::View::Presenter::Factory.new(@blame, project: @project, path: @path).fabricate! diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb index a398fc56a35..dbe628cb43a 100644 --- a/app/controllers/projects/blob_controller.rb +++ b/app/controllers/projects/blob_controller.rb @@ -31,19 +31,23 @@ class Projects::BlobController < Projects::ApplicationController before_action :editor_variables, except: [:show, :preview, :diff] before_action :validate_diff_params, only: :diff before_action :set_last_commit_sha, only: [:edit, :update] - before_action :record_experiment, only: :new + before_action :track_experiment, only: :create track_redis_hll_event :create, :update, name: 'g_edit_by_sfe' feature_category :source_code_management + before_action do + push_frontend_feature_flag(:refactor_blob_viewer, @project, default_enabled: :yaml) + end + def new commit unless @repository.empty? end def create create_commit(Files::CreateService, success_notice: _("The file has been successfully created."), - success_path: -> { project_blob_path(@project, File.join(@branch_name, @file_path)) }, + success_path: -> { create_success_path }, failure_view: :new, failure_path: project_new_blob_path(@project, @ref)) end @@ -214,7 +218,7 @@ class Projects::BlobController < Projects::ApplicationController def show_html environment_params = @repository.branch_exists?(@ref) ? { ref: @ref } : { commit: @commit } environment_params[:find_latest] = true - @environment = EnvironmentsByDeploymentsFinder.new(@project, current_user, environment_params).execute.last + @environment = ::Environments::EnvironmentsByDeploymentsFinder.new(@project, current_user, environment_params).execute.last @last_commit = @repository.last_commit_for_path(@commit.id, @blob.path, literal_pathspec: true) @code_navigation_path = Gitlab::CodeNavigationPath.new(@project, @blob.commit_id).full_json_path_for(@blob.path) @@ -262,9 +266,17 @@ class Projects::BlobController < Projects::ApplicationController current_user&.id end - def record_experiment - return unless params[:file_name] == @project.ci_config_path_or_default && @project.namespace.recent? + def create_success_path + if params[:code_quality_walkthrough] + project_pipelines_path(@project, code_quality_walkthrough: true) + else + project_blob_path(@project, File.join(@branch_name, @file_path)) + end + end + + def track_experiment + return unless params[:code_quality_walkthrough] - record_experiment_user(:ci_syntax_templates_b, namespace_id: @project.namespace_id) + experiment(:code_quality_walkthrough, namespace: @project.root_ancestor).track(:commit_created) end end diff --git a/app/controllers/projects/boards_controller.rb b/app/controllers/projects/boards_controller.rb index 349649c7b35..9a3e9437426 100644 --- a/app/controllers/projects/boards_controller.rb +++ b/app/controllers/projects/boards_controller.rb @@ -5,7 +5,6 @@ class Projects::BoardsController < Projects::ApplicationController include IssuableCollections before_action :check_issues_available! - before_action :authorize_read_board!, only: [:index, :show] before_action :assign_endpoint_vars before_action do push_frontend_feature_flag(:swimlanes_buffered_rendering, project, default_enabled: :yaml) diff --git a/app/controllers/projects/ci/pipeline_editor_controller.rb b/app/controllers/projects/ci/pipeline_editor_controller.rb index 754e2ccf4f9..6e31816bc99 100644 --- a/app/controllers/projects/ci/pipeline_editor_controller.rb +++ b/app/controllers/projects/ci/pipeline_editor_controller.rb @@ -3,11 +3,9 @@ class Projects::Ci::PipelineEditorController < Projects::ApplicationController before_action :check_can_collaborate! before_action do - push_frontend_feature_flag(:ci_config_visualization_tab, @project, default_enabled: :yaml) - push_frontend_feature_flag(:ci_config_merged_tab, @project, default_enabled: :yaml) - push_frontend_feature_flag(:pipeline_status_for_pipeline_editor, @project, default_enabled: :yaml) push_frontend_feature_flag(:pipeline_editor_empty_state_action, @project, default_enabled: :yaml) push_frontend_feature_flag(:pipeline_editor_branch_switcher, @project, default_enabled: :yaml) + push_frontend_feature_flag(:pipeline_editor_drawer, @project, default_enabled: :yaml) end feature_category :pipeline_authoring diff --git a/app/controllers/projects/commit_controller.rb b/app/controllers/projects/commit_controller.rb index 0c3ff07bc76..863715429ff 100644 --- a/app/controllers/projects/commit_controller.rb +++ b/app/controllers/projects/commit_controller.rb @@ -24,7 +24,7 @@ class Projects::CommitController < Projects::ApplicationController end BRANCH_SEARCH_LIMIT = 1000 - COMMIT_DIFFS_PER_PAGE = 75 + COMMIT_DIFFS_PER_PAGE = 20 feature_category :source_code_management @@ -49,7 +49,7 @@ class Projects::CommitController < Projects::ApplicationController end def diff_files - render json: { html: view_to_html_string('projects/commit/diff_files', diffs: @diffs, environment: @environment) } + render template: 'projects/commit/diff_files', layout: false, locals: { diffs: @diffs, environment: @environment } end # rubocop: disable CodeReuse/ActiveRecord @@ -167,7 +167,7 @@ class Projects::CommitController < Projects::ApplicationController @diffs = commit.diffs(opts) @notes_count = commit.notes.count - @environment = EnvironmentsByDeploymentsFinder.new(@project, current_user, commit: @commit, find_latest: true).execute.last + @environment = ::Environments::EnvironmentsByDeploymentsFinder.new(@project, current_user, commit: @commit, find_latest: true).execute.last end # rubocop: disable CodeReuse/ActiveRecord diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb index 221bc16e256..28a87f83451 100644 --- a/app/controllers/projects/compare_controller.rb +++ b/app/controllers/projects/compare_controller.rb @@ -26,6 +26,10 @@ class Projects::CompareController < Projects::ApplicationController feature_category :source_code_management + # Diffs may be pretty chunky, the less is better in this endpoint. + # Pagination design guides: https://design.gitlab.com/components/pagination/#behavior + COMMIT_DIFFS_PER_PAGE = 20 + def index end @@ -132,7 +136,7 @@ class Projects::CompareController < Projects::ApplicationController if compare environment_params = source_project.repository.branch_exists?(head_ref) ? { ref: head_ref } : { commit: compare.commit } environment_params[:find_latest] = true - @environment = EnvironmentsByDeploymentsFinder.new(source_project, current_user, environment_params).execute.last + @environment = ::Environments::EnvironmentsByDeploymentsFinder.new(source_project, current_user, environment_params).execute.last end end diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index 92483607e65..76de9a83c87 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -264,4 +264,4 @@ class Projects::EnvironmentsController < Projects::ApplicationController end end -Projects::EnvironmentsController.prepend_if_ee('EE::Projects::EnvironmentsController') +Projects::EnvironmentsController.prepend_mod_with('Projects::EnvironmentsController') diff --git a/app/controllers/projects/forks_controller.rb b/app/controllers/projects/forks_controller.rb index 9fc8e8c063b..8fa3635a737 100644 --- a/app/controllers/projects/forks_controller.rb +++ b/app/controllers/projects/forks_controller.rb @@ -131,4 +131,4 @@ class Projects::ForksController < Projects::ApplicationController end end -Projects::ForksController.prepend_if_ee('EE::Projects::ForksController') +Projects::ForksController.prepend_mod_with('Projects::ForksController') diff --git a/app/controllers/projects/group_links_controller.rb b/app/controllers/projects/group_links_controller.rb index c6c90ffaba2..27893fe510d 100644 --- a/app/controllers/projects/group_links_controller.rb +++ b/app/controllers/projects/group_links_controller.rb @@ -60,4 +60,4 @@ class Projects::GroupLinksController < Projects::ApplicationController end end -Projects::GroupLinksController.prepend_if_ee('EE::Projects::GroupLinksController') +Projects::GroupLinksController.prepend_mod_with('Projects::GroupLinksController') diff --git a/app/controllers/projects/hooks_controller.rb b/app/controllers/projects/hooks_controller.rb index 8dabf3e640b..b87bfc58f8b 100644 --- a/app/controllers/projects/hooks_controller.rb +++ b/app/controllers/projects/hooks_controller.rb @@ -32,6 +32,7 @@ class Projects::HooksController < Projects::ApplicationController end def edit + redirect_to(action: :index) unless hook end def update diff --git a/app/controllers/projects/imports_controller.rb b/app/controllers/projects/imports_controller.rb index c8528ad6d28..3b3f9bdcf6b 100644 --- a/app/controllers/projects/imports_controller.rb +++ b/app/controllers/projects/imports_controller.rb @@ -81,4 +81,4 @@ class Projects::ImportsController < Projects::ApplicationController end end -Projects::ImportsController.prepend_if_ee('EE::Projects::ImportsController') +Projects::ImportsController.prepend_mod_with('Projects::ImportsController') diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index cae5cc411bc..01a6de76ba5 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -56,8 +56,6 @@ class Projects::IssuesController < Projects::ApplicationController push_frontend_feature_flag(:confidential_notes, @project, default_enabled: :yaml) push_frontend_feature_flag(:issue_assignees_widget, @project, default_enabled: :yaml) - record_experiment_user(:invite_members_version_b) - experiment(:invite_members_in_comment, namespace: @project.root_ancestor) do |experiment_instance| experiment_instance.exclude! unless helpers.can_import_members? @@ -110,12 +108,12 @@ class Projects::IssuesController < Projects::ApplicationController params[:issue] ||= ActionController::Parameters.new( assignee_ids: "" ) - build_params = issue_create_params.merge( + build_params = issue_params.merge( merge_request_to_resolve_discussions_of: params[:merge_request_to_resolve_discussions_of], discussion_to_resolve: params[:discussion_to_resolve], - confidential: !!Gitlab::Utils.to_boolean(issue_create_params[:confidential]) + confidential: !!Gitlab::Utils.to_boolean(issue_params[:confidential]) ) - service = ::Issues::BuildService.new(project, current_user, build_params) + service = ::Issues::BuildService.new(project: project, current_user: current_user, params: build_params) @issue = @noteable = service.execute @@ -130,12 +128,12 @@ class Projects::IssuesController < Projects::ApplicationController end def create - create_params = issue_create_params.merge(spammable_params).merge( + create_params = issue_params.merge(spammable_params).merge( merge_request_to_resolve_discussions_of: params[:merge_request_to_resolve_discussions_of], discussion_to_resolve: params[:discussion_to_resolve] ) - service = ::Issues::CreateService.new(project, current_user, create_params) + service = ::Issues::CreateService.new(project: project, current_user: current_user, params: create_params) @issue = service.execute create_vulnerability_issue_feedback(issue) @@ -162,7 +160,7 @@ class Projects::IssuesController < Projects::ApplicationController new_project = Project.find(params[:move_to_project_id]) return render_404 unless issue.can_move?(current_user, new_project) - @issue = ::Issues::UpdateService.new(project, current_user, target_project: new_project).execute(issue) + @issue = ::Issues::UpdateService.new(project: project, current_user: current_user, params: { target_project: new_project }).execute(issue) end respond_to do |format| @@ -176,7 +174,7 @@ class Projects::IssuesController < Projects::ApplicationController end def reorder - service = ::Issues::ReorderService.new(project, current_user, reorder_params) + service = ::Issues::ReorderService.new(project: project, current_user: current_user, params: reorder_params) if service.execute(issue) head :ok @@ -187,7 +185,7 @@ class Projects::IssuesController < Projects::ApplicationController def related_branches @related_branches = ::Issues::RelatedBranchesService - .new(project, current_user) + .new(project: project, current_user: current_user) .execute(issue) .map { |branch| branch.merge(link: branch_link(branch)) } @@ -215,7 +213,7 @@ class Projects::IssuesController < Projects::ApplicationController def create_merge_request create_params = params.slice(:branch_name, :ref).merge(issue_iid: issue.iid) create_params[:target_project_id] = params[:target_project_id] - result = ::MergeRequests::CreateFromIssueService.new(project, current_user, create_params).execute + result = ::MergeRequests::CreateFromIssueService.new(project: project, current_user: current_user, mr_params: create_params).execute if result[:status] == :success render json: MergeRequestCreateSerializer.new.represent(result[:merge_request]) @@ -316,17 +314,8 @@ class Projects::IssuesController < Projects::ApplicationController task_num lock_version discussion_locked - ] + [{ label_ids: [], assignee_ids: [], update_task: [:index, :checked, :line_number, :line_source] }] - end - - def issue_create_params - create_params = %i[ issue_type - ] - - params.require(:issue).permit( - *create_params - ).merge(issue_params) + ] + [{ label_ids: [], assignee_ids: [], update_task: [:index, :checked, :line_number, :line_source] }] end def reorder_params @@ -345,7 +334,7 @@ class Projects::IssuesController < Projects::ApplicationController def update_service update_params = issue_params.merge(spammable_params) - ::Issues::UpdateService.new(project, current_user, update_params) + ::Issues::UpdateService.new(project: project, current_user: current_user, params: update_params) end def finder_type @@ -402,4 +391,4 @@ class Projects::IssuesController < Projects::ApplicationController def create_vulnerability_issue_feedback(issue); end end -Projects::IssuesController.prepend_if_ee('EE::Projects::IssuesController') +Projects::IssuesController.prepend_mod_with('Projects::IssuesController') diff --git a/app/controllers/projects/logs_controller.rb b/app/controllers/projects/logs_controller.rb index f9b8091a419..a4bdbc827e0 100644 --- a/app/controllers/projects/logs_controller.rb +++ b/app/controllers/projects/logs_controller.rb @@ -58,7 +58,7 @@ module Projects def environment strong_memoize(:environment) do if cluster_params.key?(:environment_name) - EnvironmentsFinder.new(project, current_user, name: cluster_params[:environment_name]).execute.first + ::Environments::EnvironmentsFinder.new(project, current_user, name: cluster_params[:environment_name]).execute.first else project.default_environment end diff --git a/app/controllers/projects/merge_requests/application_controller.rb b/app/controllers/projects/merge_requests/application_controller.rb index e74717a44ab..78170fab7a7 100644 --- a/app/controllers/projects/merge_requests/application_controller.rb +++ b/app/controllers/projects/merge_requests/application_controller.rb @@ -65,4 +65,4 @@ class Projects::MergeRequests::ApplicationController < Projects::ApplicationCont end end -Projects::MergeRequests::ApplicationController.prepend_if_ee('EE::Projects::MergeRequests::ApplicationController') +Projects::MergeRequests::ApplicationController.prepend_mod_with('Projects::MergeRequests::ApplicationController') diff --git a/app/controllers/projects/merge_requests/creations_controller.rb b/app/controllers/projects/merge_requests/creations_controller.rb index dc77b5e09c8..9f1e2d8236a 100644 --- a/app/controllers/projects/merge_requests/creations_controller.rb +++ b/app/controllers/projects/merge_requests/creations_controller.rb @@ -19,7 +19,7 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap end def create - @merge_request = ::MergeRequests::CreateService.new(project, current_user, merge_request_params).execute + @merge_request = ::MergeRequests::CreateService.new(project: project, current_user: current_user, params: merge_request_params).execute if @merge_request.valid? incr_count_webide_merge_request @@ -93,7 +93,7 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap # Gitaly N+1 issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/58096 Gitlab::GitalyClient.allow_n_plus_1_calls do - @merge_request = ::MergeRequests::BuildService.new(project, current_user, merge_request_params.merge(diff_options: diff_options)).execute + @merge_request = ::MergeRequests::BuildService.new(project: project, current_user: current_user, params: merge_request_params.merge(diff_options: diff_options)).execute end end @@ -141,4 +141,4 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap end end -Projects::MergeRequests::CreationsController.prepend_ee_mod +Projects::MergeRequests::CreationsController.prepend_mod diff --git a/app/controllers/projects/merge_requests/diffs_controller.rb b/app/controllers/projects/merge_requests/diffs_controller.rb index 98ef9d918ae..3eaabfbf33e 100644 --- a/app/controllers/projects/merge_requests/diffs_controller.rb +++ b/app/controllers/projects/merge_requests/diffs_controller.rb @@ -47,7 +47,7 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic diffs = @compare.diffs(diff_options) render json: DiffsMetadataSerializer.new(project: @merge_request.project, current_user: current_user) - .represent(diffs, additional_attributes) + .represent(diffs, additional_attributes.merge(only_context_commits: show_only_context_commits?)) end private @@ -92,7 +92,7 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic # rubocop: disable CodeReuse/ActiveRecord def commit return unless commit_id = params[:commit_id].presence - return unless @merge_request.all_commits.exists?(sha: commit_id) + return unless @merge_request.all_commits.exists?(sha: commit_id) || @merge_request.recent_context_commits.map(&:id).include?(commit_id) @commit ||= @project.commit(commit_id) end @@ -122,6 +122,7 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic end end + return @merge_request.context_commits_diff if show_only_context_commits? && !@merge_request.context_commits_diff.empty? return @merge_request.merge_head_diff if render_merge_ref_head_diff? if @start_sha diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 4e409b5f28f..613faa200d1 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -42,11 +42,11 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo push_frontend_feature_flag(:confidential_notes, @project, default_enabled: :yaml) push_frontend_feature_flag(:usage_data_i_testing_summary_widget_total, @project, default_enabled: :yaml) push_frontend_feature_flag(:improved_emoji_picker, project, default_enabled: :yaml) + push_frontend_feature_flag(:diffs_virtual_scrolling, project, default_enabled: :yaml) # Usage data feature flags push_frontend_feature_flag(:users_expanding_widgets_usage_data, @project, default_enabled: :yaml) - - record_experiment_user(:invite_members_version_b) + push_frontend_feature_flag(:diff_settings_usage_data, default_enabled: :yaml) experiment(:invite_members_in_comment, namespace: @project.root_ancestor) do |experiment_instance| experiment_instance.exclude! unless helpers.can_import_members? @@ -60,6 +60,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo before_action do push_frontend_feature_flag(:mr_collapsed_approval_rules, @project) + push_frontend_feature_flag(:show_relevant_approval_rule_approvers, @project, default_enabled: :yaml) end around_action :allow_gitaly_ref_name_caching, only: [:index, :show, :discussions] @@ -114,6 +115,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo @noteable = @merge_request @commits_count = @merge_request.commits_count + @merge_request.context_commits_count + @diffs_count = get_diffs_count @issuable_sidebar = serializer.represent(@merge_request, serializer: 'sidebar') @current_user_data = UserSerializer.new(project: @project).represent(current_user, {}, MergeRequestCurrentUserEntity).to_json @show_whitespace_default = current_user.nil? || current_user.show_whitespace_in_diffs @@ -244,7 +246,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo end def update - @merge_request = ::MergeRequests::UpdateService.new(project, current_user, merge_request_update_params).execute(@merge_request) + @merge_request = ::MergeRequests::UpdateService.new(project: project, current_user: current_user, params: merge_request_update_params).execute(@merge_request) respond_to do |format| format.html do @@ -273,7 +275,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo def remove_wip @merge_request = ::MergeRequests::UpdateService - .new(project, current_user, wip_event: 'unwip') + .new(project: project, current_user: current_user, params: { wip_event: 'unwip' }) .execute(@merge_request) render json: serialize_widget(@merge_request) @@ -308,7 +310,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo end def assign_related_issues - result = ::MergeRequests::AssignIssuesService.new(project, current_user, merge_request: @merge_request).execute + result = ::MergeRequests::AssignIssuesService.new(project: project, current_user: current_user, params: { merge_request: @merge_request }).execute case result[:count] when 0 @@ -386,6 +388,14 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo private + def get_diffs_count + if show_only_context_commits? + @merge_request.context_commits_diff.raw_diffs.size + else + @merge_request.diff_size + end + end + def merge_request_update_params merge_request_params.merge!(params.permit(:merge_request_diff_head_sha)) end @@ -412,7 +422,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo return :failed end - merge_service = ::MergeRequests::MergeService.new(@project, current_user, merge_params) + merge_service = ::MergeRequests::MergeService.new(project: @project, current_user: current_user, params: merge_params) unless merge_service.hooks_validation_pass?(@merge_request) return :hook_validation_error @@ -525,4 +535,4 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo end end -Projects::MergeRequestsController.prepend_if_ee('EE::Projects::MergeRequestsController') +Projects::MergeRequestsController.prepend_mod_with('Projects::MergeRequestsController') diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb index dcd3c49441e..dcdda18784d 100644 --- a/app/controllers/projects/milestones_controller.rb +++ b/app/controllers/projects/milestones_controller.rb @@ -39,7 +39,7 @@ class Projects::MilestonesController < Projects::ApplicationController end def new - @milestone = @project.milestones.new + @noteable = @milestone = @project.milestones.new respond_with(@milestone) end @@ -125,7 +125,7 @@ class Projects::MilestonesController < Projects::ApplicationController # rubocop: disable CodeReuse/ActiveRecord def milestone - @milestone ||= @project.milestones.find_by!(iid: params[:id]) + @noteable = @milestone ||= @project.milestones.find_by!(iid: params[:id]) end # rubocop: enable CodeReuse/ActiveRecord diff --git a/app/controllers/projects/mirrors_controller.rb b/app/controllers/projects/mirrors_controller.rb index 01abb72fc86..bcb6b574d5a 100644 --- a/app/controllers/projects/mirrors_controller.rb +++ b/app/controllers/projects/mirrors_controller.rb @@ -94,4 +94,4 @@ class Projects::MirrorsController < Projects::ApplicationController end end -Projects::MirrorsController.prepend_if_ee('EE::Projects::MirrorsController') +Projects::MirrorsController.prepend_mod_with('Projects::MirrorsController') diff --git a/app/controllers/projects/pages_controller.rb b/app/controllers/projects/pages_controller.rb index 0aac517e3e3..4bd33882eee 100644 --- a/app/controllers/projects/pages_controller.rb +++ b/app/controllers/projects/pages_controller.rb @@ -55,4 +55,4 @@ class Projects::PagesController < Projects::ApplicationController end end -Projects::PagesController.prepend_if_ee('EE::Projects::PagesController') +Projects::PagesController.prepend_mod_with('Projects::PagesController') diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb index 9f326ef59f5..0de8dc597ae 100644 --- a/app/controllers/projects/pipelines_controller.rb +++ b/app/controllers/projects/pipelines_controller.rb @@ -13,14 +13,12 @@ class Projects::PipelinesController < Projects::ApplicationController before_action :authorize_create_pipeline!, only: [:new, :create, :config_variables] before_action :authorize_update_pipeline!, only: [:retry, :cancel] before_action do - push_frontend_feature_flag(:new_pipeline_form, project, default_enabled: :yaml) push_frontend_feature_flag(:pipeline_graph_layers_view, project, type: :development, default_enabled: :yaml) push_frontend_feature_flag(:pipeline_filter_jobs, project, default_enabled: :yaml) push_frontend_feature_flag(:graphql_pipeline_details, project, type: :development, default_enabled: :yaml) push_frontend_feature_flag(:graphql_pipeline_details_users, current_user, type: :development, default_enabled: :yaml) - push_frontend_feature_flag(:jira_for_vulnerabilities, project, type: :development, default_enabled: :yaml) end - before_action :ensure_pipeline, only: [:show] + before_action :ensure_pipeline, only: [:show, :downloadable_artifacts] # Will be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/225596 before_action :redirect_for_legacy_scope_filter, only: [:index], if: -> { request.format.html? } @@ -33,7 +31,12 @@ class Projects::PipelinesController < Projects::ApplicationController POLLING_INTERVAL = 10_000 - feature_category :continuous_integration + feature_category :continuous_integration, [ + :charts, :show, :config_variables, :stage, :cancel, :retry, + :builds, :dag, :failures, :status, :downloadable_artifacts, + :index, :create, :new, :destroy + ] + feature_category :code_testing, [:test_report] def index @pipelines = Ci::PipelinesFinder @@ -55,6 +58,17 @@ class Projects::PipelinesController < Projects::ApplicationController e.try {} e.track(:view, value: project.namespace_id) end + experiment(:code_quality_walkthrough, namespace: project.root_ancestor) do |e| + e.exclude! unless current_user + e.exclude! unless can?(current_user, :create_pipeline, project) + e.exclude! unless project.root_ancestor.recent? + e.exclude! if @pipelines_count.to_i > 0 + e.exclude! if helpers.has_gitlab_ci?(project) + + e.use {} + e.try {} + e.track(:view, property: project.root_ancestor.id.to_s) + end end format.json do Gitlab::PollingInterval.set_header(response, interval: POLLING_INTERVAL) @@ -162,7 +176,11 @@ class Projects::PipelinesController < Projects::ApplicationController end def retry - pipeline.retry_failed(current_user) + if Gitlab::Ci::Features.background_pipeline_retry_endpoint?(@project) + ::Ci::RetryPipelineWorker.perform_async(pipeline.id, current_user.id) # rubocop:disable CodeReuse/Worker + else + pipeline.retry_failed(current_user) + end respond_to do |format| format.html do @@ -206,13 +224,20 @@ class Projects::PipelinesController < Projects::ApplicationController end end + def downloadable_artifacts + render json: Ci::DownloadableArtifactSerializer.new( + project: project, + current_user: current_user + ).represent(@pipeline) + end + private def serialize_pipelines PipelineSerializer .new(project: @project, current_user: @current_user) .with_pagination(request, response) - .represent(@pipelines, disable_coverage: true, preload: true) + .represent(@pipelines, disable_coverage: true, preload: true, code_quality_walkthrough: params[:code_quality_walkthrough].present?) end def render_show @@ -298,4 +323,4 @@ class Projects::PipelinesController < Projects::ApplicationController end end -Projects::PipelinesController.prepend_if_ee('EE::Projects::PipelinesController') +Projects::PipelinesController.prepend_mod_with('Projects::PipelinesController') diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb index 5972b29a298..cc2157a7d51 100644 --- a/app/controllers/projects/project_members_controller.rb +++ b/app/controllers/projects/project_members_controller.rb @@ -64,4 +64,4 @@ class Projects::ProjectMembersController < Projects::ApplicationController end end -Projects::ProjectMembersController.prepend_if_ee('EE::Projects::ProjectMembersController') +Projects::ProjectMembersController.prepend_mod_with('Projects::ProjectMembersController') diff --git a/app/controllers/projects/protected_branches_controller.rb b/app/controllers/projects/protected_branches_controller.rb index 84b155c8002..8c70ef446a2 100644 --- a/app/controllers/projects/protected_branches_controller.rb +++ b/app/controllers/projects/protected_branches_controller.rb @@ -29,4 +29,4 @@ class Projects::ProtectedBranchesController < Projects::ProtectedRefsController end end -Projects::ProtectedBranchesController.prepend_if_ee('EE::Projects::ProtectedBranchesController') +Projects::ProtectedBranchesController.prepend_mod_with('Projects::ProtectedBranchesController') diff --git a/app/controllers/projects/protected_refs_controller.rb b/app/controllers/projects/protected_refs_controller.rb index 4cba1a75330..abbfe9ce22a 100644 --- a/app/controllers/projects/protected_refs_controller.rb +++ b/app/controllers/projects/protected_refs_controller.rb @@ -68,4 +68,4 @@ class Projects::ProtectedRefsController < Projects::ApplicationController end end -Projects::ProtectedRefsController.prepend_if_ee('EE::Projects::ProtectedRefsController') +Projects::ProtectedRefsController.prepend_mod_with('Projects::ProtectedRefsController') diff --git a/app/controllers/projects/releases_controller.rb b/app/controllers/projects/releases_controller.rb index 26382856761..1bb50eabd1d 100644 --- a/app/controllers/projects/releases_controller.rb +++ b/app/controllers/projects/releases_controller.rb @@ -8,11 +8,6 @@ class Projects::ReleasesController < Projects::ApplicationController # We have to check `download_code` permission because detail URL path # contains git-tag name. before_action :authorize_download_code!, except: [:index] - before_action do - push_frontend_feature_flag(:graphql_release_data, project, default_enabled: true) - push_frontend_feature_flag(:graphql_milestone_stats, project, default_enabled: true) - push_frontend_feature_flag(:graphql_releases_page, project, default_enabled: true) - end before_action :authorize_update_release!, only: %i[edit update] before_action :authorize_create_release!, only: :new diff --git a/app/controllers/projects/repositories_controller.rb b/app/controllers/projects/repositories_controller.rb index da018b24836..8f64a8aa1d3 100644 --- a/app/controllers/projects/repositories_controller.rb +++ b/app/controllers/projects/repositories_controller.rb @@ -35,7 +35,7 @@ class Projects::RepositoriesController < Projects::ApplicationController return if archive_not_modified? send_git_archive @repository, **repo_params - rescue => ex + rescue StandardError => ex logger.error("#{self.class.name}: #{ex}") git_not_found! end @@ -127,4 +127,4 @@ class Projects::RepositoriesController < Projects::ApplicationController end end -Projects::RepositoriesController.prepend_if_ee('EE::Projects::RepositoriesController') +Projects::RepositoriesController.prepend_mod_with('Projects::RepositoriesController') diff --git a/app/controllers/projects/runner_projects_controller.rb b/app/controllers/projects/runner_projects_controller.rb index d225d5e104c..fa6adc9431d 100644 --- a/app/controllers/projects/runner_projects_controller.rb +++ b/app/controllers/projects/runner_projects_controller.rb @@ -17,7 +17,10 @@ class Projects::RunnerProjectsController < Projects::ApplicationController if @runner.assign_to(project, current_user) redirect_to path else - redirect_to path, alert: 'Failed adding runner to project' + assign_to_messages = @runner.errors.messages[:assign_to] + alert = assign_to_messages&.join(',') || 'Failed adding runner to project' + + redirect_to path, alert: alert end end diff --git a/app/controllers/projects/runners_controller.rb b/app/controllers/projects/runners_controller.rb index b7a5a63e642..ec1f57f090a 100644 --- a/app/controllers/projects/runners_controller.rb +++ b/app/controllers/projects/runners_controller.rb @@ -48,28 +48,17 @@ class Projects::RunnersController < Projects::ApplicationController end def show - render 'shared/runners/show' end def toggle_shared_runners if !project.shared_runners_enabled && project.group && project.group.shared_runners_setting == 'disabled_and_unoverridable' - - if Feature.enabled?(:vueify_shared_runners_toggle, @project) - render json: { error: _('Cannot enable shared runners because parent group does not allow it') }, status: :unauthorized - else - redirect_to project_runners_path(@project), alert: _('Cannot enable shared runners because parent group does not allow it') - end - + render json: { error: _('Cannot enable shared runners because parent group does not allow it') }, status: :unauthorized return end project.toggle!(:shared_runners_enabled) - if Feature.enabled?(:vueify_shared_runners_toggle, @project) - render json: {}, status: :ok - else - redirect_to project_settings_ci_cd_path(@project, anchor: 'js-runners-settings') - end + render json: {}, status: :ok end def toggle_group_runners diff --git a/app/controllers/projects/security/configuration_controller.rb b/app/controllers/projects/security/configuration_controller.rb index bc4e58e54a9..19de157357a 100644 --- a/app/controllers/projects/security/configuration_controller.rb +++ b/app/controllers/projects/security/configuration_controller.rb @@ -14,4 +14,4 @@ module Projects end end -Projects::Security::ConfigurationController.prepend_if_ee('EE::Projects::Security::ConfigurationController') +Projects::Security::ConfigurationController.prepend_mod_with('Projects::Security::ConfigurationController') diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb index ccb8b393bfe..74145a70b95 100644 --- a/app/controllers/projects/services_controller.rb +++ b/app/controllers/projects/services_controller.rb @@ -1,19 +1,16 @@ # frozen_string_literal: true class Projects::ServicesController < Projects::ApplicationController - include ServiceParams + include Integrations::Params include InternalRedirect # Authorize before_action :authorize_admin_project! before_action :ensure_service_enabled - before_action :service + before_action :integration before_action :web_hook_logs, only: [:edit, :update] before_action :set_deprecation_notice_for_prometheus_service, only: [:edit, :update] before_action :redirect_deprecated_prometheus_service, only: [:update] - before_action only: :edit do - push_frontend_feature_flag(:jira_for_vulnerabilities, @project, type: :development, default_enabled: :yaml) - end respond_to :html @@ -22,20 +19,19 @@ class Projects::ServicesController < Projects::ApplicationController feature_category :integrations def edit - @default_integration = Service.default_integration(service.type, project) + @default_integration = Integration.default_integration(service.type, project) end def update - @service.attributes = service_params[:service] - @service.inherit_from_id = nil if service_params[:service][:inherit_from_id].blank? + @integration.attributes = integration_params[:integration] + @integration.inherit_from_id = nil if integration_params[:integration][:inherit_from_id].blank? - saved = @service.save(context: :manual_change) + saved = @integration.save(context: :manual_change) respond_to do |format| format.html do if saved - target_url = safe_redirect_path(params[:redirect_to]).presence || edit_project_service_path(@project, @service) - redirect_to target_url, notice: success_message + redirect_to redirect_path, notice: success_message else render 'edit' end @@ -50,7 +46,7 @@ class Projects::ServicesController < Projects::ApplicationController end def test - if @service.can_test? + if integration.can_test? render json: service_test_response, status: :ok else render json: {}, status: :not_found @@ -59,12 +55,16 @@ class Projects::ServicesController < Projects::ApplicationController private + def redirect_path + safe_redirect_path(params[:redirect_to]).presence || edit_project_service_path(@project, @integration) + end + def service_test_response - unless @service.update(service_params[:service]) - return { error: true, message: _('Validations failed.'), service_response: @service.errors.full_messages.join(','), test_failed: false } + unless @integration.update(integration_params[:integration]) + return { error: true, message: _('Validations failed.'), service_response: @integration.errors.full_messages.join(','), test_failed: false } end - result = ::Integrations::Test::ProjectService.new(@service, current_user, params[:event]).execute + result = ::Integrations::Test::ProjectService.new(@integration, current_user, params[:event]).execute unless result[:success] return { error: true, message: s_('Integrations|Connection failed. Please check your settings.'), service_response: result[:message].to_s, test_failed: true } @@ -76,16 +76,18 @@ class Projects::ServicesController < Projects::ApplicationController end def success_message - if @service.active? - s_('Integrations|%{integration} settings saved and active.') % { integration: @service.title } + if integration.active? + s_('Integrations|%{integration} settings saved and active.') % { integration: integration.title } else - s_('Integrations|%{integration} settings saved, but not active.') % { integration: @service.title } + s_('Integrations|%{integration} settings saved, but not active.') % { integration: integration.title } end end - def service - @service ||= @project.find_or_initialize_service(params[:id]) + def integration + @integration ||= @project.find_or_initialize_service(params[:id]) + @service ||= @integration # TODO: remove references to @service end + alias_method :service, :integration def web_hook_logs return unless @service.service_hook.present? @@ -98,17 +100,17 @@ class Projects::ServicesController < Projects::ApplicationController end def serialize_as_json - @service + integration .as_json(only: @service.json_fields) .merge(errors: @service.errors.as_json) end def redirect_deprecated_prometheus_service - redirect_to edit_project_service_path(project, @service) if @service.is_a?(::PrometheusService) && Feature.enabled?(:settings_operations_prometheus_service, project) + redirect_to edit_project_service_path(project, integration) if integration.is_a?(::PrometheusService) && Feature.enabled?(:settings_operations_prometheus_service, project) end def set_deprecation_notice_for_prometheus_service - return if !@service.is_a?(::PrometheusService) || !Feature.enabled?(:settings_operations_prometheus_service, project) + return if !integration.is_a?(::PrometheusService) || !Feature.enabled?(:settings_operations_prometheus_service, project) operations_link_start = "" message = s_('PrometheusService|You can now manage your Prometheus settings on the %{operations_link_start}Operations%{operations_link_end} page. Fields on this page has been deprecated.') % { operations_link_start: operations_link_start, operations_link_end: "" } diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb index 1a465406660..3254d4129d3 100644 --- a/app/controllers/projects/settings/ci_cd_controller.rb +++ b/app/controllers/projects/settings/ci_cd_controller.rb @@ -12,7 +12,6 @@ module Projects before_action :define_variables before_action do push_frontend_feature_flag(:ajax_new_deploy_token, @project) - push_frontend_feature_flag(:vueify_shared_runners_toggle, @project) end helper_method :highlight_badge @@ -119,12 +118,13 @@ module Projects .assignable_for(project) .ordered .page(params[:specific_page]).per(NUMBER_OF_RUNNERS_PER_PAGE) + .with_tags - @shared_runners = ::Ci::Runner.instance_type.active + @shared_runners = ::Ci::Runner.instance_type.active.with_tags @shared_runners_count = @shared_runners.count(:all) - @group_runners = ::Ci::Runner.belonging_to_parent_group_of_project(@project.id) + @group_runners = ::Ci::Runner.belonging_to_parent_group_of_project(@project.id).with_tags end def define_ci_variables @@ -143,7 +143,7 @@ module Projects end def define_badges_variables - @ref = params[:ref] || @project.default_branch || 'master' + @ref = params[:ref] || @project.default_branch_or_main @badges = [Gitlab::Ci::Badge::Pipeline::Status, Gitlab::Ci::Badge::Coverage::Report] @@ -160,4 +160,4 @@ module Projects end end -Projects::Settings::CiCdController.prepend_if_ee('EE::Projects::Settings::CiCdController') +Projects::Settings::CiCdController.prepend_mod_with('Projects::Settings::CiCdController') diff --git a/app/controllers/projects/settings/operations_controller.rb b/app/controllers/projects/settings/operations_controller.rb index a05793a0283..a357227c870 100644 --- a/app/controllers/projects/settings/operations_controller.rb +++ b/app/controllers/projects/settings/operations_controller.rb @@ -155,4 +155,4 @@ module Projects end end -Projects::Settings::OperationsController.prepend_if_ee('::EE::Projects::Settings::OperationsController') +Projects::Settings::OperationsController.prepend_mod_with('Projects::Settings::OperationsController') diff --git a/app/controllers/projects/settings/packages_and_registries_controller.rb b/app/controllers/projects/settings/packages_and_registries_controller.rb new file mode 100644 index 00000000000..fee51dc1311 --- /dev/null +++ b/app/controllers/projects/settings/packages_and_registries_controller.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Projects + module Settings + class PackagesAndRegistriesController < Projects::ApplicationController + layout 'project_settings' + + before_action :authorize_admin_project! + before_action :packages_and_registries_settings_enabled! + + feature_category :package_registry + + def show + end + + private + + def packages_and_registries_settings_enabled! + render_404 unless settings_packages_and_registries_enabled?(project) + end + end + end +end diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb index bb5ad8e9aea..728231dbdbd 100644 --- a/app/controllers/projects/settings/repository_controller.rb +++ b/app/controllers/projects/settings/repository_controller.rb @@ -134,4 +134,4 @@ module Projects end end -Projects::Settings::RepositoryController.prepend_if_ee('EE::Projects::Settings::RepositoryController') +Projects::Settings::RepositoryController.prepend_mod_with('Projects::Settings::RepositoryController') diff --git a/app/controllers/projects/snippets_controller.rb b/app/controllers/projects/snippets_controller.rb index ff28c3be298..de2ab16b5b1 100644 --- a/app/controllers/projects/snippets_controller.rb +++ b/app/controllers/projects/snippets_controller.rb @@ -13,6 +13,10 @@ class Projects::SnippetsController < Projects::Snippets::ApplicationController before_action :authorize_read_snippet!, except: [:new, :index] before_action :authorize_update_snippet!, only: :edit + before_action only: [:show] do + push_frontend_feature_flag(:improved_emoji_picker, @project, default_enabled: :yaml) + end + def index @snippet_counts = ::Snippets::CountService .new(current_user, project: @project) diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb index 3bf9988ca22..94b0473e1f3 100644 --- a/app/controllers/projects/tags_controller.rb +++ b/app/controllers/projects/tags_controller.rb @@ -9,9 +9,6 @@ class Projects::TagsController < Projects::ApplicationController before_action :require_non_empty_project before_action :authorize_download_code! before_action :authorize_admin_tag!, only: [:new, :create, :destroy] - before_action do - push_frontend_feature_flag(:gldropdown_tags, default_enabled: :yaml) - end feature_category :source_code_management, [:index, :show, :new, :destroy] feature_category :release_evidence, [:create] diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb index d1486f765e4..a1493a25a1a 100644 --- a/app/controllers/projects/wikis_controller.rb +++ b/app/controllers/projects/wikis_controller.rb @@ -6,4 +6,8 @@ class Projects::WikisController < Projects::ApplicationController alias_method :container, :project feature_category :wiki + + before_action do + push_frontend_feature_flag(:wiki_content_editor, project, default_enabled: :yaml) + end end -- cgit v1.2.3