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-02 21:11:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-10-02 21:11:51 +0300
commit11ece334ec544e2a6f6213ce63ba9efcf819050b (patch)
tree1c336c73ed43a16cf3a0c4ce41dce93da61f9906 /app
parentf9adc222bc1b5085e36baf7745b436e7c12ce026 (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.vue24
-rw-r--r--app/assets/javascripts/ci/job_details/store/utils.js6
-rw-r--r--app/controllers/concerns/renders_projects_list.rb8
-rw-r--r--app/graphql/types/ci/job_trace_type.rb2
-rw-r--r--app/models/concerns/vulnerability_finding_helpers.rb1
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--app/models/pages_deployment.rb1
-rw-r--r--app/models/user.rb4
-rw-r--r--app/services/projects/update_pages_service.rb5
-rw-r--r--app/views/groups/_home_panel.html.haml2
-rw-r--r--app/views/groups/settings/_general.html.haml2
-rw-r--r--app/workers/all_queues.yml9
-rw-r--r--app/workers/pages/deactivated_deployments_delete_cron_worker.rb19
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