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>2019-12-16 15:07:43 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-16 15:07:43 +0300
commitd10a462fedbd7794a83abdba9b4526600f71de5b (patch)
tree4dbd21cb89013d9e07b05bac5101cd13585a8be5 /app
parent13867d66e92c2fd8962a126db4fbdc32891343c9 (diff)
Add latest changes from gitlab-org/gitlab@masterogolowinski-master-patch-80898
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/blob/openapi/index.js19
-rw-r--r--app/assets/javascripts/blob/openapi_viewer.js3
-rw-r--r--app/assets/javascripts/blob/viewer/index.js3
-rw-r--r--app/assets/javascripts/lib/utils/axios_utils.js4
-rw-r--r--app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js4
-rw-r--r--app/assets/stylesheets/framework/files.scss5
-rw-r--r--app/controllers/application_controller.rb4
-rw-r--r--app/controllers/concerns/issuable_actions.rb2
-rw-r--r--app/controllers/projects/ci/lints_controller.rb10
-rw-r--r--app/helpers/application_settings_helper.rb1
-rw-r--r--app/helpers/icons_helper.rb2
-rw-r--r--app/helpers/users_helper.rb2
-rw-r--r--app/models/application_setting.rb6
-rw-r--r--app/models/application_setting_implementation.rb3
-rw-r--r--app/models/blob.rb1
-rw-r--r--app/models/blob_viewer/open_api.rb15
-rw-r--r--app/models/ci/build.rb2
-rw-r--r--app/models/ci/persistent_ref.rb4
-rw-r--r--app/models/ci/pipeline.rb1
-rw-r--r--app/models/clusters/cluster.rb2
-rw-r--r--app/models/clusters/concerns/application_core.rb2
-rw-r--r--app/models/concerns/group_descendant.rb2
-rw-r--r--app/models/concerns/storage/legacy_namespace.rb2
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--app/models/upload.rb2
-rw-r--r--app/models/uploads/local.rb2
-rw-r--r--app/models/user.rb5
-rw-r--r--app/services/ci/archive_trace_service.rb2
-rw-r--r--app/services/ci/generate_exposed_artifacts_report_service.rb2
-rw-r--r--app/services/ci/prepare_build_service.rb2
-rw-r--r--app/services/ci/register_job_service.rb2
-rw-r--r--app/services/clusters/applications/base_helm_service.rb2
-rw-r--r--app/services/projects/container_repository/delete_tags_service.rb2
-rw-r--r--app/services/projects/fork_service.rb18
-rw-r--r--app/services/projects/import_service.rb4
-rw-r--r--app/services/prometheus/proxy_variable_substitution_service.rb2
-rw-r--r--app/services/users/build_service.rb2
-rw-r--r--app/views/admin/application_settings/_signup.html.haml6
-rw-r--r--app/views/projects/blob/viewers/_openapi.html.haml1
-rw-r--r--app/workers/delete_stored_files_worker.rb2
-rw-r--r--app/workers/pages_domain_removal_cron_worker.rb2
-rw-r--r--app/workers/run_pipeline_schedule_worker.rb2
-rw-r--r--app/workers/stuck_ci_jobs_worker.rb2
43 files changed, 118 insertions, 45 deletions
diff --git a/app/assets/javascripts/blob/openapi/index.js b/app/assets/javascripts/blob/openapi/index.js
new file mode 100644
index 00000000000..a6f28de799f
--- /dev/null
+++ b/app/assets/javascripts/blob/openapi/index.js
@@ -0,0 +1,19 @@
+import { SwaggerUIBundle } from 'swagger-ui-dist';
+import flash from '~/flash';
+import { __ } from '~/locale';
+
+export default () => {
+ const el = document.getElementById('js-openapi-viewer');
+
+ Promise.all([import(/* webpackChunkName: 'openapi' */ 'swagger-ui-dist/swagger-ui.css')])
+ .then(() => {
+ SwaggerUIBundle({
+ url: el.dataset.endpoint,
+ dom_id: '#js-openapi-viewer',
+ });
+ })
+ .catch(error => {
+ flash(__('Something went wrong while initializing the OpenAPI viewer'));
+ throw error;
+ });
+};
diff --git a/app/assets/javascripts/blob/openapi_viewer.js b/app/assets/javascripts/blob/openapi_viewer.js
new file mode 100644
index 00000000000..0cacc33571f
--- /dev/null
+++ b/app/assets/javascripts/blob/openapi_viewer.js
@@ -0,0 +1,3 @@
+import renderOpenApi from './openapi';
+
+export default renderOpenApi;
diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js
index 07e4dde41d9..742404da46c 100644
--- a/app/assets/javascripts/blob/viewer/index.js
+++ b/app/assets/javascripts/blob/viewer/index.js
@@ -39,6 +39,9 @@ export default class BlobViewer {
case 'notebook':
initViewer(import(/* webpackChunkName: 'notebook_viewer' */ '../notebook_viewer'));
break;
+ case 'openapi':
+ initViewer(import(/* webpackChunkName: 'openapi_viewer' */ '../openapi_viewer'));
+ break;
case 'pdf':
initViewer(import(/* webpackChunkName: 'pdf_viewer' */ '../pdf_viewer'));
break;
diff --git a/app/assets/javascripts/lib/utils/axios_utils.js b/app/assets/javascripts/lib/utils/axios_utils.js
index a04fe609015..4eec5bffc66 100644
--- a/app/assets/javascripts/lib/utils/axios_utils.js
+++ b/app/assets/javascripts/lib/utils/axios_utils.js
@@ -33,11 +33,9 @@ window.addEventListener('beforeunload', () => {
// Ignore AJAX errors caused by requests
// being cancelled due to browser navigation
-const { gon } = window;
-const featureFlagEnabled = gon && gon.features && gon.features.suppressAjaxNavigationErrors;
axios.interceptors.response.use(
response => response,
- err => suppressAjaxErrorsDuringNavigation(err, isUserNavigating, featureFlagEnabled),
+ err => suppressAjaxErrorsDuringNavigation(err, isUserNavigating),
);
export default axios;
diff --git a/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js b/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js
index 4c61da9b862..fb4d9b7de9c 100644
--- a/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js
+++ b/app/assets/javascripts/lib/utils/suppress_ajax_errors_during_navigation.js
@@ -2,8 +2,8 @@
* An Axios error interceptor that suppresses AJAX errors caused
* by the request being cancelled when the user navigates to a new page
*/
-export default (err, isUserNavigating, featureFlagEnabled) => {
- if (featureFlagEnabled && isUserNavigating && err.code === 'ECONNABORTED') {
+export default (err, isUserNavigating) => {
+ if (isUserNavigating && err.code === 'ECONNABORTED') {
// If the user is navigating away from the current page,
// prevent .then() and .catch() handlers from being
// called by returning a Promise that never resolves
diff --git a/app/assets/stylesheets/framework/files.scss b/app/assets/stylesheets/framework/files.scss
index e7b5629b999..8e0314bc6da 100644
--- a/app/assets/stylesheets/framework/files.scss
+++ b/app/assets/stylesheets/framework/files.scss
@@ -486,3 +486,8 @@ span.idiff {
overflow-y: auto;
max-height: 20rem;
}
+
+#js-openapi-viewer pre.version {
+ background-color: transparent;
+ border: transparent;
+}
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index ba986c495e2..f5306801c04 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -165,7 +165,7 @@ class ApplicationController < ActionController::Base
end
def log_exception(exception)
- Gitlab::Sentry.track_exception(exception)
+ Gitlab::ErrorTracking.track_exception(exception)
backtrace_cleaner = request.env["action_dispatch.backtrace_cleaner"]
application_trace = ActionDispatch::ExceptionWrapper.new(backtrace_cleaner, exception).application_trace
@@ -533,7 +533,7 @@ class ApplicationController < ActionController::Base
end
def sentry_context(&block)
- Gitlab::Sentry.with_context(current_user, &block)
+ Gitlab::ErrorTracking.with_context(current_user, &block)
end
def allow_gitaly_ref_name_caching
diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb
index 4a1b06bf01f..c4abaacd573 100644
--- a/app/controllers/concerns/issuable_actions.rb
+++ b/app/controllers/concerns/issuable_actions.rb
@@ -98,7 +98,7 @@ module IssuableActions
error_message = "Destroy confirmation not provided for #{issuable.human_class_name}"
exception = RuntimeError.new(error_message)
- Gitlab::Sentry.track_exception(
+ Gitlab::ErrorTracking.track_exception(
exception,
project_path: issuable.project.full_path,
issuable_type: issuable.class.name,
diff --git a/app/controllers/projects/ci/lints_controller.rb b/app/controllers/projects/ci/lints_controller.rb
index d7a0b7ece14..812420e9708 100644
--- a/app/controllers/projects/ci/lints_controller.rb
+++ b/app/controllers/projects/ci/lints_controller.rb
@@ -8,11 +8,13 @@ class Projects::Ci::LintsController < Projects::ApplicationController
def create
@content = params[:content]
- @error = Gitlab::Ci::YamlProcessor.validation_message(@content, yaml_processor_options)
- @status = @error.blank?
+ result = Gitlab::Ci::YamlProcessor.new_with_validation_errors(@content, yaml_processor_options)
- if @error.blank?
- @config_processor = Gitlab::Ci::YamlProcessor.new(@content, yaml_processor_options)
+ @error = result.errors.join(', ')
+ @status = result.valid?
+
+ if result.valid?
+ @config_processor = result.content
@stages = @config_processor.stages
@builds = @config_processor.builds
@jobs = @config_processor.jobs
diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb
index d9416cb10c4..71e4195c50f 100644
--- a/app/helpers/application_settings_helper.rb
+++ b/app/helpers/application_settings_helper.rb
@@ -232,6 +232,7 @@ module ApplicationSettingsHelper
:metrics_port,
:metrics_sample_interval,
:metrics_timeout,
+ :minimum_password_length,
:mirror_available,
:pages_domain_verification_enabled,
:password_authentication_enabled_for_web,
diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb
index cacb4113cb2..876789e0d4a 100644
--- a/app/helpers/icons_helper.rb
+++ b/app/helpers/icons_helper.rb
@@ -44,7 +44,7 @@ module IconsHelper
def sprite_icon(icon_name, size: nil, css_class: nil)
if known_sprites&.exclude?(icon_name)
exception = ArgumentError.new("#{icon_name} is not a known icon in @gitlab-org/gitlab-svg")
- Gitlab::Sentry.track_and_raise_for_dev_exception(exception)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception)
end
css_classes = []
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index ee3c03905ef..195e4154c67 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -57,7 +57,7 @@ module UsersHelper
unless user.association(:status).loaded?
exception = RuntimeError.new("Status was not preloaded")
- Gitlab::Sentry.track_and_raise_for_dev_exception(exception, user: user.inspect)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception, user: user.inspect)
end
return unless user.status
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index e764b6c56b0..456b6430088 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -46,6 +46,12 @@ class ApplicationSetting < ApplicationRecord
presence: true,
numericality: { only_integer: true, greater_than_or_equal_to: 0 }
+ validates :minimum_password_length,
+ presence: true,
+ numericality: { only_integer: true,
+ greater_than_or_equal_to: DEFAULT_MINIMUM_PASSWORD_LENGTH,
+ less_than_or_equal_to: Devise.password_length.max }
+
validates :home_page_url,
allow_blank: true,
addressable_url: true,
diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb
index e1eb8d429bb..98d8bb43b93 100644
--- a/app/models/application_setting_implementation.rb
+++ b/app/models/application_setting_implementation.rb
@@ -30,6 +30,8 @@ module ApplicationSettingImplementation
'/admin/session'
].freeze
+ DEFAULT_MINIMUM_PASSWORD_LENGTH = 8
+
class_methods do
def defaults
{
@@ -106,6 +108,7 @@ module ApplicationSettingImplementation
sourcegraph_enabled: false,
sourcegraph_url: nil,
sourcegraph_public_only: true,
+ minimum_password_length: DEFAULT_MINIMUM_PASSWORD_LENGTH,
terminal_max_session_time: 0,
throttle_authenticated_api_enabled: false,
throttle_authenticated_api_period_in_seconds: 3600,
diff --git a/app/models/blob.rb b/app/models/blob.rb
index cc089715b06..c0f26ee64f8 100644
--- a/app/models/blob.rb
+++ b/app/models/blob.rb
@@ -26,6 +26,7 @@ class Blob < SimpleDelegator
BlobViewer::Markup,
BlobViewer::Notebook,
BlobViewer::SVG,
+ BlobViewer::OpenApi,
BlobViewer::Image,
BlobViewer::Sketch,
diff --git a/app/models/blob_viewer/open_api.rb b/app/models/blob_viewer/open_api.rb
new file mode 100644
index 00000000000..963b7336c8d
--- /dev/null
+++ b/app/models/blob_viewer/open_api.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module BlobViewer
+ class OpenApi < Base
+ include Rich
+ include ClientSide
+
+ self.partial_name = 'openapi'
+ self.file_types = %i(openapi)
+ self.binary = false
+ # TODO: get an icon for OpenAPI
+ self.switcher_icon = 'file-pdf-o'
+ self.switcher_title = 'OpenAPI'
+ end
+end
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 2e6b5d68747..4077a868373 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -289,7 +289,7 @@ module Ci
begin
build.deployment.drop!
rescue => e
- Gitlab::Sentry.track_and_raise_for_dev_exception(e, build_id: build.id)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, build_id: build.id)
end
true
diff --git a/app/models/ci/persistent_ref.rb b/app/models/ci/persistent_ref.rb
index 634c03e0326..76139f5d676 100644
--- a/app/models/ci/persistent_ref.rb
+++ b/app/models/ci/persistent_ref.rb
@@ -26,7 +26,7 @@ module Ci
create_ref(sha, path)
rescue => e
- Gitlab::Sentry
+ Gitlab::ErrorTracking
.track_exception(e, pipeline_id: pipeline.id)
end
@@ -37,7 +37,7 @@ module Ci
rescue Gitlab::Git::Repository::NoRepository
# no-op
rescue => e
- Gitlab::Sentry
+ Gitlab::ErrorTracking
.track_exception(e, pipeline_id: pipeline.id)
end
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index ce263566ea6..29ec41ef1a1 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -638,6 +638,7 @@ module Ci
variables.append(key: 'CI_COMMIT_BEFORE_SHA', value: before_sha)
variables.append(key: 'CI_COMMIT_REF_NAME', value: source_ref)
variables.append(key: 'CI_COMMIT_REF_SLUG', value: source_ref_slug)
+ variables.append(key: 'CI_COMMIT_BRANCH', value: ref) if branch?
variables.append(key: 'CI_COMMIT_TAG', value: ref) if tag?
variables.append(key: 'CI_COMMIT_MESSAGE', value: git_commit_message.to_s)
variables.append(key: 'CI_COMMIT_TITLE', value: git_commit_full_title.to_s)
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb
index 2d5b4905bf5..d2eee78f3df 100644
--- a/app/models/clusters/cluster.rb
+++ b/app/models/clusters/cluster.rb
@@ -335,7 +335,7 @@ module Clusters
rescue Kubeclient::HttpError => e
kubeclient_error_status(e.message)
rescue => e
- Gitlab::Sentry.track_exception(e, cluster_id: id)
+ Gitlab::ErrorTracking.track_exception(e, cluster_id: id)
:unknown_failure
else
diff --git a/app/models/clusters/concerns/application_core.rb b/app/models/clusters/concerns/application_core.rb
index cc9eafbcdd6..f6431f5bac3 100644
--- a/app/models/clusters/concerns/application_core.rb
+++ b/app/models/clusters/concerns/application_core.rb
@@ -76,7 +76,7 @@ module Clusters
message: error.message
})
- Gitlab::Sentry.track_exception(error, cluster_id: cluster&.id, application_id: id)
+ Gitlab::ErrorTracking.track_exception(error, cluster_id: cluster&.id, application_id: id)
end
end
end
diff --git a/app/models/concerns/group_descendant.rb b/app/models/concerns/group_descendant.rb
index 18f6a7a9c58..67953105bed 100644
--- a/app/models/concerns/group_descendant.rb
+++ b/app/models/concerns/group_descendant.rb
@@ -52,7 +52,7 @@ module GroupDescendant
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/49404'
}
- Gitlab::Sentry.track_and_raise_for_dev_exception(exception, extras)
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception, extras)
end
if parent.nil? && hierarchy_top.present?
diff --git a/app/models/concerns/storage/legacy_namespace.rb b/app/models/concerns/storage/legacy_namespace.rb
index b9081f9bbf2..da4f2a79895 100644
--- a/app/models/concerns/storage/legacy_namespace.rb
+++ b/app/models/concerns/storage/legacy_namespace.rb
@@ -37,7 +37,7 @@ module Storage
send_update_instructions
write_projects_repository_config
rescue => e
- Gitlab::Sentry.track_and_raise_for_dev_exception(e,
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e,
full_path_before_last_save: full_path_before_last_save,
full_path: full_path,
action: 'move_dir')
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 1671b1e2d55..2280c5280d5 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -1514,7 +1514,7 @@ class MergeRequest < ApplicationRecord
end
end
rescue ActiveRecord::LockWaitTimeout => e
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_exception(e)
raise RebaseLockTimeout, REBASE_LOCK_MESSAGE
end
diff --git a/app/models/upload.rb b/app/models/upload.rb
index 12917f85431..46ae924bf8c 100644
--- a/app/models/upload.rb
+++ b/app/models/upload.rb
@@ -104,7 +104,7 @@ class Upload < ApplicationRecord
# Help sysadmins find missing upload files
if persisted? && !exist
exception = RuntimeError.new("Uploaded file does not exist")
- Gitlab::Sentry.track_exception(exception, self.attributes)
+ Gitlab::ErrorTracking.track_exception(exception, self.attributes)
Gitlab::Metrics.counter(:upload_file_does_not_exist_total, _('The number of times an upload record could not find its file')).increment
end
diff --git a/app/models/uploads/local.rb b/app/models/uploads/local.rb
index f1f25dfb584..bd295a66838 100644
--- a/app/models/uploads/local.rb
+++ b/app/models/uploads/local.rb
@@ -23,7 +23,7 @@ module Uploads
unless in_uploads?(path)
message = "Path '#{path}' is not in uploads dir, skipping"
logger.warn(message)
- Gitlab::Sentry.track_and_raise_for_dev_exception(
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(
RuntimeError.new(message), uploads_dir: storage_dir)
return
end
diff --git a/app/models/user.rb b/app/models/user.rb
index b6ed550e441..441ad1e70be 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -381,6 +381,11 @@ class User < ApplicationRecord
# Class methods
#
class << self
+ # Devise method overridden to allow support for dynamic password lengths
+ def password_length
+ Gitlab::CurrentSettings.minimum_password_length..Devise.password_length.max
+ end
+
# Devise method overridden to allow sign in with email or username
def find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
diff --git a/app/services/ci/archive_trace_service.rb b/app/services/ci/archive_trace_service.rb
index 75c7eee2f72..f143736ddc1 100644
--- a/app/services/ci/archive_trace_service.rb
+++ b/app/services/ci/archive_trace_service.rb
@@ -46,7 +46,7 @@ module Ci
message: "Failed to archive trace. message: #{error.message}.",
job_id: job.id)
- Gitlab::Sentry
+ Gitlab::ErrorTracking
.track_and_raise_for_dev_exception(error,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/51502',
job_id: job.id )
diff --git a/app/services/ci/generate_exposed_artifacts_report_service.rb b/app/services/ci/generate_exposed_artifacts_report_service.rb
index af6331341ff..1dbcd192279 100644
--- a/app/services/ci/generate_exposed_artifacts_report_service.rb
+++ b/app/services/ci/generate_exposed_artifacts_report_service.rb
@@ -15,7 +15,7 @@ module Ci
data: data
}
rescue => e
- Gitlab::Sentry.track_exception(e, project_id: project.id)
+ Gitlab::ErrorTracking.track_exception(e, project_id: project.id)
{
status: :error,
key: key(base_pipeline, head_pipeline),
diff --git a/app/services/ci/prepare_build_service.rb b/app/services/ci/prepare_build_service.rb
index 8ace7914f8e..5d024c45e5f 100644
--- a/app/services/ci/prepare_build_service.rb
+++ b/app/services/ci/prepare_build_service.rb
@@ -13,7 +13,7 @@ module Ci
build.enqueue!
rescue => e
- Gitlab::Sentry.track_exception(e, build_id: build.id)
+ Gitlab::ErrorTracking.track_exception(e, build_id: build.id)
build.drop(:unmet_prerequisites)
end
diff --git a/app/services/ci/register_job_service.rb b/app/services/ci/register_job_service.rb
index 24597579d9e..57c0cdd0602 100644
--- a/app/services/ci/register_job_service.rb
+++ b/app/services/ci/register_job_service.rb
@@ -128,7 +128,7 @@ module Ci
end
def track_exception_for_build(ex, build)
- Gitlab::Sentry.track_exception(ex,
+ Gitlab::ErrorTracking.track_exception(ex,
build_id: build.id,
build_name: build.name,
build_stage: build.stage,
diff --git a/app/services/clusters/applications/base_helm_service.rb b/app/services/clusters/applications/base_helm_service.rb
index 2b51de71934..f38051bcad2 100644
--- a/app/services/clusters/applications/base_helm_service.rb
+++ b/app/services/clusters/applications/base_helm_service.rb
@@ -21,7 +21,7 @@ module Clusters
group_ids: app.cluster.group_ids
}
- Gitlab::Sentry.track_exception(error, meta)
+ Gitlab::ErrorTracking.track_exception(error, meta)
end
def log_event(event)
diff --git a/app/services/projects/container_repository/delete_tags_service.rb b/app/services/projects/container_repository/delete_tags_service.rb
index 0da3ddea9f7..88ff3c2c9df 100644
--- a/app/services/projects/container_repository/delete_tags_service.rb
+++ b/app/services/projects/container_repository/delete_tags_service.rb
@@ -51,7 +51,7 @@ module Projects
digests = deleted_tags.values.uniq
# rubocop: disable CodeReuse/ActiveRecord
- Gitlab::Sentry.track_and_raise_for_dev_exception(ArgumentError.new('multiple tag digests')) if digests.many?
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(ArgumentError.new('multiple tag digests')) if digests.many?
deleted_tags
end
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index 47ab7f9a8a0..e66a0ed181a 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -3,11 +3,16 @@
module Projects
class ForkService < BaseService
def execute(fork_to_project = nil)
- if fork_to_project
- link_existing_project(fork_to_project)
- else
- fork_new_project
- end
+ forked_project =
+ if fork_to_project
+ link_existing_project(fork_to_project)
+ else
+ fork_new_project
+ end
+
+ refresh_forks_count if forked_project&.saved?
+
+ forked_project
end
private
@@ -92,8 +97,7 @@ module Projects
def link_fork_network(fork_to_project)
return if fork_to_project.errors.any?
- fork_to_project.fork_network_member.save &&
- refresh_forks_count
+ fork_to_project.fork_network_member.save
end
def refresh_forks_count
diff --git a/app/services/projects/import_service.rb b/app/services/projects/import_service.rb
index bef4897baec..cc12aacaf02 100644
--- a/app/services/projects/import_service.rb
+++ b/app/services/projects/import_service.rb
@@ -25,13 +25,13 @@ module Projects
success
rescue Gitlab::UrlBlocker::BlockedUrlError => e
- Gitlab::Sentry.track_exception(e, project_path: project.full_path, importer: project.import_type)
+ Gitlab::ErrorTracking.track_exception(e, project_path: project.full_path, importer: project.import_type)
error(s_("ImportProjects|Error importing repository %{project_safe_import_url} into %{project_full_path} - %{message}") % { project_safe_import_url: project.safe_import_url, project_full_path: project.full_path, message: e.message })
rescue => e
message = Projects::ImportErrorFilter.filter_message(e.message)
- Gitlab::Sentry.track_exception(e, project_path: project.full_path, importer: project.import_type)
+ Gitlab::ErrorTracking.track_exception(e, project_path: project.full_path, importer: project.import_type)
error(s_("ImportProjects|Error importing repository %{project_safe_import_url} into %{project_full_path} - %{message}") % { project_safe_import_url: project.safe_import_url, project_full_path: project.full_path, message: message })
end
diff --git a/app/services/prometheus/proxy_variable_substitution_service.rb b/app/services/prometheus/proxy_variable_substitution_service.rb
index 4a6678ec237..ca56292e9d6 100644
--- a/app/services/prometheus/proxy_variable_substitution_service.rb
+++ b/app/services/prometheus/proxy_variable_substitution_service.rb
@@ -32,7 +32,7 @@ module Prometheus
success(result)
rescue TypeError, ArgumentError => exception
log_error(exception.message)
- Gitlab::Sentry.track_exception(exception, extra: {
+ Gitlab::ErrorTracking.track_exception(exception, extra: {
template_string: query,
variables: predefined_context
})
diff --git a/app/services/users/build_service.rb b/app/services/users/build_service.rb
index 8c85ad9ffd8..ea4d11e728e 100644
--- a/app/services/users/build_service.rb
+++ b/app/services/users/build_service.rb
@@ -23,7 +23,7 @@ module Users
@reset_token = user.generate_reset_token if params[:reset_password]
if user_params[:force_random_password]
- random_password = Devise.friendly_token.first(Devise.password_length.min)
+ random_password = Devise.friendly_token.first(User.password_length.min)
user.password = user.password_confirmation = random_password
end
end
diff --git a/app/views/admin/application_settings/_signup.html.haml b/app/views/admin/application_settings/_signup.html.haml
index 7c1df78f30c..b9d9d86ca30 100644
--- a/app/views/admin/application_settings/_signup.html.haml
+++ b/app/views/admin/application_settings/_signup.html.haml
@@ -13,6 +13,12 @@
= f.label :send_user_confirmation_email, class: 'form-check-label' do
Send confirmation email on sign-up
.form-group
+ = f.label :minimum_password_length, _('Minimum password length (number of characters)'), class: 'label-bold'
+ = f.number_field :minimum_password_length, class: 'form-control', rows: 4, min: ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH, max: Devise.password_length.max
+ - password_policy_guidelines_link = link_to _('Password Policy Guidelines'), 'https://about.gitlab.com/handbook/security/#gitlab-password-policy-guidelines', target: '_blank', rel: 'noopener noreferrer nofollow'
+ .form-text.text-muted
+ = _("See GitLab's %{password_policy_guidelines}").html_safe % { password_policy_guidelines: password_policy_guidelines_link }
+ .form-group
= f.label :domain_whitelist, 'Whitelisted domains for sign-ups', class: 'label-bold'
= f.text_area :domain_whitelist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8
.form-text.text-muted ONLY users with e-mail addresses that match these domain(s) will be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com
diff --git a/app/views/projects/blob/viewers/_openapi.html.haml b/app/views/projects/blob/viewers/_openapi.html.haml
new file mode 100644
index 00000000000..ce8030cf2d2
--- /dev/null
+++ b/app/views/projects/blob/viewers/_openapi.html.haml
@@ -0,0 +1 @@
+.file-content#js-openapi-viewer{ data: { endpoint: blob_raw_path } }
diff --git a/app/workers/delete_stored_files_worker.rb b/app/workers/delete_stored_files_worker.rb
index 1d52f71c866..e1e2f66f573 100644
--- a/app/workers/delete_stored_files_worker.rb
+++ b/app/workers/delete_stored_files_worker.rb
@@ -15,7 +15,7 @@ class DeleteStoredFilesWorker
unless klass
message = "Unknown class '#{class_name}'"
logger.error(message)
- Gitlab::Sentry.track_and_raise_for_dev_exception(RuntimeError.new(message))
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(RuntimeError.new(message))
return
end
diff --git a/app/workers/pages_domain_removal_cron_worker.rb b/app/workers/pages_domain_removal_cron_worker.rb
index ba3c89d0e70..07ecde55922 100644
--- a/app/workers/pages_domain_removal_cron_worker.rb
+++ b/app/workers/pages_domain_removal_cron_worker.rb
@@ -11,7 +11,7 @@ class PagesDomainRemovalCronWorker
PagesDomain.for_removal.find_each do |domain|
domain.destroy!
rescue => e
- Gitlab::Sentry.track_exception(e)
+ Gitlab::ErrorTracking.track_exception(e)
end
end
end
diff --git a/app/workers/run_pipeline_schedule_worker.rb b/app/workers/run_pipeline_schedule_worker.rb
index 450dee0e83e..f8f8a2fe7ae 100644
--- a/app/workers/run_pipeline_schedule_worker.rb
+++ b/app/workers/run_pipeline_schedule_worker.rb
@@ -38,7 +38,7 @@ class RunPipelineScheduleWorker
Rails.logger.error "Failed to create a scheduled pipeline. " \
"schedule_id: #{schedule.id} message: #{error.message}"
- Gitlab::Sentry
+ Gitlab::ErrorTracking
.track_and_raise_for_dev_exception(error,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/41231',
schedule_id: schedule.id)
diff --git a/app/workers/stuck_ci_jobs_worker.rb b/app/workers/stuck_ci_jobs_worker.rb
index 99eff044eae..d08cea9e494 100644
--- a/app/workers/stuck_ci_jobs_worker.rb
+++ b/app/workers/stuck_ci_jobs_worker.rb
@@ -80,7 +80,7 @@ class StuckCiJobsWorker
end
def track_exception_for_build(ex, build)
- Gitlab::Sentry.track_exception(ex,
+ Gitlab::ErrorTracking.track_exception(ex,
build_id: build.id,
build_name: build.name,
build_stage: build.stage,