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/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-10-17 21:09:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-10-17 21:09:13 +0300
commit5150ecc452f4cf1c899f79d35d52af978ff2d43f (patch)
treeed36b7982b574d6b4ec5b4e3f68a61a0f7e762d1 /lib
parent3884d9d7160e80a70ad327813ada6cab03cded65 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/api/merge_requests.rb1
-rw-r--r--lib/api/search.rb10
-rw-r--r--lib/gitlab/ci/config.rb4
-rw-r--r--lib/gitlab/ci/config/entry/workflow.rb7
-rw-r--r--lib/gitlab/ci/pipeline/chain/populate.rb11
-rw-r--r--lib/gitlab/ci/yaml_processor/result.rb4
-rw-r--r--lib/gitlab/gon_helper.rb1
-rw-r--r--lib/gitlab/profiler.rb31
8 files changed, 40 insertions, 29 deletions
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 800954a4311..a0e7d0b10cd 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -218,6 +218,7 @@ module API
[
current_user&.cache_key,
mr.merge_status,
+ mr.labels.map(&:cache_key),
mr.merge_request_assignees.map(&:cache_key),
mr.merge_request_reviewers.map(&:cache_key)
].join(":")
diff --git a/lib/api/search.rb b/lib/api/search.rb
index 44bb4228786..ff17696ed3e 100644
--- a/lib/api/search.rb
+++ b/lib/api/search.rb
@@ -63,7 +63,7 @@ module API
@results = search_service(additional_params).search_objects(preload_method)
end
- set_global_search_log_information
+ set_global_search_log_information(additional_params)
Gitlab::Metrics::GlobalSearchSlis.record_apdex(
elapsed: @search_duration_s,
@@ -105,7 +105,7 @@ module API
# EE, without having to modify this file directly.
end
- def search_type
+ def search_type(additional_params = {})
'basic'
end
@@ -113,10 +113,10 @@ module API
params[:scope]
end
- def set_global_search_log_information
+ def set_global_search_log_information(additional_params)
Gitlab::Instrumentation::GlobalSearchApi.set_information(
- type: search_type,
- level: search_service.level,
+ type: search_type(additional_params),
+ level: search_service(additional_params).level,
scope: search_scope,
search_duration_s: @search_duration_s
)
diff --git a/lib/gitlab/ci/config.rb b/lib/gitlab/ci/config.rb
index 438fa1cb3b2..661c6fb87e3 100644
--- a/lib/gitlab/ci/config.rb
+++ b/lib/gitlab/ci/config.rb
@@ -85,6 +85,10 @@ module Gitlab
root.workflow_entry.rules_value
end
+ def workflow_name
+ root.workflow_entry.name
+ end
+
def normalized_jobs
@normalized_jobs ||= Ci::Config::Normalizer.new(jobs).normalize_jobs
end
diff --git a/lib/gitlab/ci/config/entry/workflow.rb b/lib/gitlab/ci/config/entry/workflow.rb
index 5bc992a38a0..691d9e2d48b 100644
--- a/lib/gitlab/ci/config/entry/workflow.rb
+++ b/lib/gitlab/ci/config/entry/workflow.rb
@@ -6,12 +6,17 @@ module Gitlab
module Entry
class Workflow < ::Gitlab::Config::Entry::Node
include ::Gitlab::Config::Entry::Configurable
+ include ::Gitlab::Config::Entry::Validatable
+ include ::Gitlab::Config::Entry::Attributable
- ALLOWED_KEYS = %i[rules].freeze
+ ALLOWED_KEYS = %i[rules name].freeze
+
+ attributes :name
validations do
validates :config, type: Hash
validates :config, allowed_keys: ALLOWED_KEYS
+ validates :name, allow_nil: true, length: { minimum: 1, maximum: 255 }
end
entry :rules, Entry::Rules,
diff --git a/lib/gitlab/ci/pipeline/chain/populate.rb b/lib/gitlab/ci/pipeline/chain/populate.rb
index 654e24be8e1..4bec8355732 100644
--- a/lib/gitlab/ci/pipeline/chain/populate.rb
+++ b/lib/gitlab/ci/pipeline/chain/populate.rb
@@ -25,6 +25,8 @@ module Gitlab
return error('Failed to build the pipeline!')
end
+ set_pipeline_name
+
raise Populate::PopulateError if pipeline.persisted?
end
@@ -34,6 +36,15 @@ module Gitlab
private
+ def set_pipeline_name
+ return if Feature.disabled?(:pipeline_name, pipeline.project) ||
+ @command.yaml_processor_result.workflow_name.blank?
+
+ name = @command.yaml_processor_result.workflow_name
+
+ pipeline.build_pipeline_metadata(project: pipeline.project, title: name)
+ end
+
def stage_names
# We filter out `.pre/.post` stages, as they alone are not considered
# a complete pipeline:
diff --git a/lib/gitlab/ci/yaml_processor/result.rb b/lib/gitlab/ci/yaml_processor/result.rb
index c0097cd84de..5c3864362da 100644
--- a/lib/gitlab/ci/yaml_processor/result.rb
+++ b/lib/gitlab/ci/yaml_processor/result.rb
@@ -36,6 +36,10 @@ module Gitlab
@workflow_rules ||= @ci_config.workflow_rules
end
+ def workflow_name
+ @workflow_name ||= @ci_config.workflow_name&.strip
+ end
+
def root_variables
@root_variables ||= transform_to_array(@ci_config.variables)
end
diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb
index 29ef8d2fa74..814040d29e1 100644
--- a/lib/gitlab/gon_helper.rb
+++ b/lib/gitlab/gon_helper.rb
@@ -56,7 +56,6 @@ module Gitlab
push_frontend_feature_flag(:security_auto_fix)
push_frontend_feature_flag(:new_header_search)
push_frontend_feature_flag(:source_editor_toolbar)
- push_frontend_feature_flag(:gl_listbox_for_sort_dropdowns)
push_frontend_feature_flag(:integration_slack_app_notifications)
end
diff --git a/lib/gitlab/profiler.rb b/lib/gitlab/profiler.rb
index fd9f73d18c1..f8a85f693bc 100644
--- a/lib/gitlab/profiler.rb
+++ b/lib/gitlab/profiler.rb
@@ -43,12 +43,9 @@ module Gitlab
# - private_token: instead of providing a user instance, the token can be
# given as a string. Takes precedence over the user option.
#
- # - sampling_mode: When true, uses a sampling profiler (StackProf) instead of a tracing profiler (RubyProf).
- #
- # - profiler_options: A keyword Hash of arguments passed to the profiler. Defaults by profiler type:
- # RubyProf - {}
- # StackProf - { mode: :wall, out: <some temporary file>, interval: 1000, raw: true }
- def self.profile(url, logger: nil, post_data: nil, user: nil, private_token: nil, sampling_mode: false, profiler_options: {})
+ # - profiler_options: A keyword Hash of arguments passed to the profiler. Defaults:
+ # { mode: :wall, out: <some temporary file>, interval: 1000, raw: true }
+ def self.profile(url, logger: nil, post_data: nil, user: nil, private_token: nil, profiler_options: {})
app = ActionDispatch::Integration::Session.new(Rails.application)
verb = :get
headers = {}
@@ -80,7 +77,7 @@ module Gitlab
with_custom_logger(logger) do
with_user(user) do
- with_profiler(sampling_mode, profiler_options) do
+ with_profiler(profiler_options) do
app.public_send(verb, url, params: post_data, headers: headers) # rubocop:disable GitlabSecurity/PublicSend
end
end
@@ -174,21 +171,11 @@ module Gitlab
end
# rubocop: enable CodeReuse/ActiveRecord
- def self.print_by_total_time(result, options = {})
- default_options = { sort_method: :total_time, filter_by: :total_time }
-
- RubyProf::FlatPrinter.new(result).print($stdout, default_options.merge(options))
- end
-
- def self.with_profiler(sampling_mode, profiler_options)
- if sampling_mode
- require 'stackprof'
- args = { mode: :wall, interval: 1000, raw: true }.merge!(profiler_options)
- args[:out] ||= ::Tempfile.new(["profile-#{Time.now.to_i}-", ".dump"]).path
- ::StackProf.run(**args) { yield }
- else
- RubyProf.profile(**profiler_options) { yield }
- end
+ def self.with_profiler(profiler_options)
+ require 'stackprof'
+ args = { mode: :wall, interval: 1000, raw: true }.merge!(profiler_options)
+ args[:out] ||= ::Tempfile.new(["profile-#{Time.now.to_i}-", ".dump"]).path
+ ::StackProf.run(**args) { yield }
end
end
end