diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-02 21:11:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-02 21:11:51 +0300 |
commit | 11ece334ec544e2a6f6213ce63ba9efcf819050b (patch) | |
tree | 1c336c73ed43a16cf3a0c4ce41dce93da61f9906 /app | |
parent | f9adc222bc1b5085e36baf7745b436e7c12ce026 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue | 24 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/utils.js | 6 | ||||
-rw-r--r-- | app/controllers/concerns/renders_projects_list.rb | 8 | ||||
-rw-r--r-- | app/graphql/types/ci/job_trace_type.rb | 2 | ||||
-rw-r--r-- | app/models/concerns/vulnerability_finding_helpers.rb | 1 | ||||
-rw-r--r-- | app/models/merge_request.rb | 2 | ||||
-rw-r--r-- | app/models/pages_deployment.rb | 1 | ||||
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | app/services/projects/update_pages_service.rb | 5 | ||||
-rw-r--r-- | app/views/groups/_home_panel.html.haml | 2 | ||||
-rw-r--r-- | app/views/groups/settings/_general.html.haml | 2 | ||||
-rw-r--r-- | app/workers/all_queues.yml | 9 | ||||
-rw-r--r-- | app/workers/pages/deactivated_deployments_delete_cron_worker.rb | 19 |
13 files changed, 60 insertions, 25 deletions
diff --git a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue index ddfc6baafa9..662451c5eb4 100644 --- a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue +++ b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue @@ -1,6 +1,6 @@ <script> import { GlButton, GlIcon, GlAvatar, GlCollapsibleListbox, GlTruncate } from '@gitlab/ui'; -import { debounce } from 'lodash'; +import { debounce, unionBy } from 'lodash'; import { filterBySearchTerm } from '~/analytics/shared/utils'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { AVATAR_SHAPE_OPTION_RECT } from '~/vue_shared/constants'; @@ -8,6 +8,8 @@ import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants'; import { n__, s__, __ } from '~/locale'; import getProjects from '../graphql/projects.query.graphql'; +const MIN_SEARCH_CHARS = 3; + const sortByProjectName = (projects = []) => projects.sort((a, b) => a.name.localeCompare(b.name)); const mapItemToListboxFormat = (item) => ({ ...item, value: item.id, text: item.name }); @@ -98,10 +100,6 @@ export default { availableProjects() { return filterBySearchTerm(this.projects, this.searchTerm); }, - noResultsAvailable() { - const { loading, availableProjects } = this; - return !loading && !availableProjects.length; - }, selectedItems() { return sortByProjectName(this.selectedProjects); }, @@ -152,6 +150,9 @@ export default { singleSelectedProject(selectedObj, isMarking) { return isMarking ? [selectedObj] : []; }, + getSelectedProjects(projects, selectedProjectIds) { + return projects.filter(({ id }) => selectedProjectIds.includes(id)); + }, setSelectedProjects(payload) { this.selectedProjects = this.multiSelect ? payload @@ -163,8 +164,10 @@ export default { this.handleUpdatedSelectedProjects(); }, onMultiSelectClick(projectIds) { - const projects = this.availableProjects.filter(({ id }) => projectIds.includes(id)); - this.setSelectedProjects(projects); + const newlySelectedProjects = this.getSelectedProjects(this.availableProjects, projectIds); + const selectedProjects = this.getSelectedProjects(this.selectedProjects, projectIds); + + this.setSelectedProjects(unionBy(newlySelectedProjects, selectedProjects, 'id')); this.isDirty = true; }, onSelected(payload) { @@ -219,7 +222,12 @@ export default { return getIdFromGraphQLId(project.id); }, setSearchTerm(val) { - this.searchTerm = val; + if (val && val.length >= MIN_SEARCH_CHARS) { + this.searchTerm = val; + return; + } + + this.searchTerm = ''; }, }, AVATAR_SHAPE_OPTION_RECT, diff --git a/app/assets/javascripts/ci/job_details/store/utils.js b/app/assets/javascripts/ci/job_details/store/utils.js index bc76901026d..ccd04d52e30 100644 --- a/app/assets/javascripts/ci/job_details/store/utils.js +++ b/app/assets/javascripts/ci/job_details/store/utils.js @@ -118,10 +118,10 @@ export const getIncrementalLineNumber = (acc) => { * @param Array accumulator * @returns Array parsed log lines */ -export const logLinesParser = (lines = [], accumulator = [], hash = '') => +export const logLinesParser = (lines = [], prevLogLines = [], hash = '') => lines.reduce( (acc, line, index) => { - const lineNumber = accumulator.length > 0 ? getIncrementalLineNumber(acc) : index; + const lineNumber = acc.length > 0 ? getIncrementalLineNumber(acc) : index; const last = acc[acc.length - 1]; @@ -142,7 +142,7 @@ export const logLinesParser = (lines = [], accumulator = [], hash = '') => return acc; }, - [...accumulator], + [...prevLogLines], ); /** diff --git a/app/controllers/concerns/renders_projects_list.rb b/app/controllers/concerns/renders_projects_list.rb index 2d37bc3f9a5..56383658696 100644 --- a/app/controllers/concerns/renders_projects_list.rb +++ b/app/controllers/concerns/renders_projects_list.rb @@ -5,7 +5,7 @@ module RendersProjectsList def prepare_projects_for_rendering(projects) preload_max_member_access_for_collection(Project, projects) - current_user.preloaded_member_roles_for_projects(projects) if current_user + preload_member_roles(projects) if current_user # Call the count methods on every project, so the BatchLoader would load them all at # once when the entities are rendered @@ -15,4 +15,10 @@ module RendersProjectsList projects end + + def preload_member_roles(projects) + # overridden in EE + end end + +RendersProjectsList.prepend_mod diff --git a/app/graphql/types/ci/job_trace_type.rb b/app/graphql/types/ci/job_trace_type.rb index 405c640115d..62fb9340b53 100644 --- a/app/graphql/types/ci/job_trace_type.rb +++ b/app/graphql/types/ci/job_trace_type.rb @@ -21,7 +21,7 @@ module Types def html_summary(last_lines:) object.html( last_lines: last_lines.clamp(1, 100), - max_size: Feature.enabled?(:graphql_job_trace_html_summary_max_size) ? MAX_SIZE_B : nil + max_size: MAX_SIZE_B ).html_safe end end diff --git a/app/models/concerns/vulnerability_finding_helpers.rb b/app/models/concerns/vulnerability_finding_helpers.rb index e8a50497b20..94d091e8459 100644 --- a/app/models/concerns/vulnerability_finding_helpers.rb +++ b/app/models/concerns/vulnerability_finding_helpers.rb @@ -50,6 +50,7 @@ module VulnerabilityFindingHelpers finding_data = report_finding.to_hash.except( :compare_key, :identifiers, :location, :scanner, :links, :signatures, :flags, :evidence ) + identifiers = report_finding.identifiers.uniq(&:fingerprint).map do |identifier| Vulnerabilities::Identifier.new(identifier.to_hash.merge({ project: project })) end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 52ae1c6d81d..5629baa4f88 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -1723,7 +1723,7 @@ class MergeRequest < ApplicationRecord end def has_terraform_reports? - actual_head_pipeline&.complete_and_has_reports?(Ci::JobArtifact.of_report_type(:terraform)) + actual_head_pipeline&.has_reports?(Ci::JobArtifact.of_report_type(:terraform)) end def compare_accessibility_reports diff --git a/app/models/pages_deployment.rb b/app/models/pages_deployment.rb index de7b2416258..ad7660b17f1 100644 --- a/app/models/pages_deployment.rb +++ b/app/models/pages_deployment.rb @@ -21,6 +21,7 @@ class PagesDeployment < ApplicationRecord scope :with_files_stored_remotely, -> { where(file_store: ::ObjectStorage::Store::REMOTE) } scope :project_id_in, ->(ids) { where(project_id: ids) } scope :active, -> { where(deleted_at: nil) } + scope :deactivated, -> { where('deleted_at < ?', Time.now.utc) } validates :file, presence: true validates :file_store, presence: true, inclusion: { in: ObjectStorage::SUPPORTED_STORES } diff --git a/app/models/user.rb b/app/models/user.rb index 9634907867a..e17803af135 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1235,10 +1235,6 @@ class User < MainClusterwide::ApplicationRecord authorized_projects(Gitlab::Access::REPORTER).non_archived.with_issues_enabled end - def preloaded_member_roles_for_projects(projects) - # overridden in EE - end - # rubocop: disable CodeReuse/ServiceClass def require_ssh_key? count = Users::KeysCountService.new(self).count diff --git a/app/services/projects/update_pages_service.rb b/app/services/projects/update_pages_service.rb index dc92c501b8c..ab38efff7c9 100644 --- a/app/services/projects/update_pages_service.rb +++ b/app/services/projects/update_pages_service.rb @@ -109,11 +109,6 @@ module Projects PagesDeployment.deactivate_deployments_older_than( deployment, time: OLD_DEPLOYMENTS_DESTRUCTION_DELAY.from_now) - - DestroyPagesDeploymentsWorker.perform_in( - OLD_DEPLOYMENTS_DESTRUCTION_DELAY, - project.id, - deployment.id) end def register_attempt diff --git a/app/views/groups/_home_panel.html.haml b/app/views/groups/_home_panel.html.haml index f87db07d751..ca7798257cb 100644 --- a/app/views/groups/_home_panel.html.haml +++ b/app/views/groups/_home_panel.html.haml @@ -40,7 +40,7 @@ - if @group.description.present? .group-home-desc.mt-1 - .home-panel-description.text-break + .home-panel-description .home-panel-description-markdown.read-more-container{ itemprop: 'description' } = markdown_field(@group, :description) = render Pajamas::ButtonComponent.new(variant: :link, button_options: { class: 'js-read-more-trigger gl-lg-display-none' }) do diff --git a/app/views/groups/settings/_general.html.haml b/app/views/groups/settings/_general.html.haml index 115ed0f0fa4..22ed6ea4403 100644 --- a/app/views/groups/settings/_general.html.haml +++ b/app/views/groups/settings/_general.html.haml @@ -17,7 +17,7 @@ .row.gl-mt-3 .form-group.col-md-9 = f.label :description, s_('Groups|Group description (optional)'), class: 'label-bold' - = f.text_area :description, class: 'form-control', rows: 3 + = f.text_area :description, class: 'form-control', rows: 3, maxlength: 250 .row.gl-mt-3 .form-group.col-md-5 diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 7bc36803845..da05824be4f 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -651,6 +651,15 @@ :weight: 1 :idempotent: true :tags: [] +- :name: cronjob:pages_deactivated_deployments_delete_cron + :worker_name: Pages::DeactivatedDeploymentsDeleteCronWorker + :feature_category: :pages + :has_external_dependencies: false + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: true + :tags: [] - :name: cronjob:pages_domain_removal_cron :worker_name: PagesDomainRemovalCronWorker :feature_category: :pages diff --git a/app/workers/pages/deactivated_deployments_delete_cron_worker.rb b/app/workers/pages/deactivated_deployments_delete_cron_worker.rb new file mode 100644 index 00000000000..7ee6327cea7 --- /dev/null +++ b/app/workers/pages/deactivated_deployments_delete_cron_worker.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Pages + class DeactivatedDeploymentsDeleteCronWorker + include ApplicationWorker + include CronjobQueue # rubocop: disable Scalability/CronWorkerContext + + idempotent! + data_consistency :always # rubocop: disable SidekiqLoadBalancing/WorkerDataConsistency + + feature_category :pages + + def perform + PagesDeployment.deactivated.each_batch do |deployments| # rubocop: disable Style/SymbolProc + deployments.delete_all + end + end + end +end |