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
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-05 03:08:41 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-05 03:08:41 +0300
commite40710ab8a30f36d7c82d7d6497033291840eec9 (patch)
treeaea450b24cb1bd8023c1d297e4f01de4e88926b2
parent51612d3ef5be853289008694c40973b479e8547c (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/controllers/dashboard/projects_controller.rb7
-rw-r--r--app/workers/all_queues.yml2
-rw-r--r--app/workers/remove_unreferenced_lfs_objects_worker.rb2
-rw-r--r--changelogs/unreleased/25970-mirror-pull-for-archived-projects.yml5
-rw-r--r--changelogs/unreleased/38096-splitmr-add-resource-milestone-events-table-pd.yml5
-rw-r--r--changelogs/unreleased/dast-deploy-bump-0-9-1.yml5
-rw-r--r--changelogs/unreleased/fix_graphiql_relative_url.yml5
-rw-r--r--changelogs/unreleased/nicolasdular-change-broadcast-index.yml5
-rw-r--r--changelogs/unreleased/reschedule-issue-tracker-migration.yml5
-rw-r--r--config/feature_categories.yml11
-rw-r--r--config/initializers/1_settings.rb1
-rw-r--r--config/initializers/graphql.rb2
-rw-r--r--config/routes/api.rb2
-rw-r--r--db/migrate/20200129133716_add_resource_milestone_events_table.rb25
-rw-r--r--db/migrate/20200204131054_change_broadcast_message_index.rb19
-rw-r--r--db/post_migrate/20200130145430_reschedule_migrate_issue_trackers_data.rb44
-rw-r--r--db/schema.rb25
-rw-r--r--doc/.linting/vale/styles/gitlab/SentenceSpacing.yml32
-rw-r--r--doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md12
-rw-r--r--doc/administration/troubleshooting/ssl.md27
-rw-r--r--lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml2
-rw-r--r--spec/features/graphiql_spec.rb32
-rw-r--r--spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb2
-rw-r--r--spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb104
24 files changed, 370 insertions, 11 deletions
diff --git a/app/controllers/dashboard/projects_controller.rb b/app/controllers/dashboard/projects_controller.rb
index d5ccec28fdd..039991e07a2 100644
--- a/app/controllers/dashboard/projects_controller.rb
+++ b/app/controllers/dashboard/projects_controller.rb
@@ -66,7 +66,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
@total_user_projects_count = ProjectsFinder.new(params: { non_public: true }, current_user: current_user).execute
@total_starred_projects_count = ProjectsFinder.new(params: { starred: true }, current_user: current_user).execute
- finder_params[:use_cte] = Feature.enabled?(:use_cte_for_projects_finder, default_enabled: true)
+ finder_params[:use_cte] = true if use_cte_for_finder?
projects = ProjectsFinder
.new(params: finder_params, current_user: current_user)
@@ -79,6 +79,11 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
end
# rubocop: enable CodeReuse/ActiveRecord
+ def use_cte_for_finder?
+ # The starred action loads public projects, which causes the CTE to be less efficient
+ action_name == 'index' && Feature.enabled?(:use_cte_for_projects_finder, default_enabled: true)
+ end
+
def load_events
projects = load_projects(params.merge(non_public: true))
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml
index 7de237edd36..c93c312438b 100644
--- a/app/workers/all_queues.yml
+++ b/app/workers/all_queues.yml
@@ -160,7 +160,7 @@
:resource_boundary: :cpu
:weight: 1
- :name: cronjob:remove_unreferenced_lfs_objects
- :feature_category: :source_code_management
+ :feature_category: :git_lfs
:has_external_dependencies:
:latency_sensitive:
:resource_boundary: :unknown
diff --git a/app/workers/remove_unreferenced_lfs_objects_worker.rb b/app/workers/remove_unreferenced_lfs_objects_worker.rb
index 486f8f12014..b2d2223c64d 100644
--- a/app/workers/remove_unreferenced_lfs_objects_worker.rb
+++ b/app/workers/remove_unreferenced_lfs_objects_worker.rb
@@ -4,7 +4,7 @@ class RemoveUnreferencedLfsObjectsWorker
include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
- feature_category :source_code_management
+ feature_category :git_lfs
def perform
LfsObject.destroy_unreferenced
diff --git a/changelogs/unreleased/25970-mirror-pull-for-archived-projects.yml b/changelogs/unreleased/25970-mirror-pull-for-archived-projects.yml
new file mode 100644
index 00000000000..fefba03ac8a
--- /dev/null
+++ b/changelogs/unreleased/25970-mirror-pull-for-archived-projects.yml
@@ -0,0 +1,5 @@
+---
+title: Disable pull mirror importing for archived projects
+merge_request: 24029
+author:
+type: fixed
diff --git a/changelogs/unreleased/38096-splitmr-add-resource-milestone-events-table-pd.yml b/changelogs/unreleased/38096-splitmr-add-resource-milestone-events-table-pd.yml
new file mode 100644
index 00000000000..a5a8000dd76
--- /dev/null
+++ b/changelogs/unreleased/38096-splitmr-add-resource-milestone-events-table-pd.yml
@@ -0,0 +1,5 @@
+---
+title: Add migration to create resource milestone events table
+merge_request: 23965
+author:
+type: added
diff --git a/changelogs/unreleased/dast-deploy-bump-0-9-1.yml b/changelogs/unreleased/dast-deploy-bump-0-9-1.yml
new file mode 100644
index 00000000000..20952a2df4a
--- /dev/null
+++ b/changelogs/unreleased/dast-deploy-bump-0-9-1.yml
@@ -0,0 +1,5 @@
+---
+title: Bump DAST deploy auto-deploy-image to 0.9.1
+merge_request: 24232
+author:
+type: other
diff --git a/changelogs/unreleased/fix_graphiql_relative_url.yml b/changelogs/unreleased/fix_graphiql_relative_url.yml
new file mode 100644
index 00000000000..e43ef7c96e0
--- /dev/null
+++ b/changelogs/unreleased/fix_graphiql_relative_url.yml
@@ -0,0 +1,5 @@
+---
+title: Fix GraphiQL when GitLab is installed under a relative URL
+merge_request: 23143
+author: Mathieu Parent
+type: fixed
diff --git a/changelogs/unreleased/nicolasdular-change-broadcast-index.yml b/changelogs/unreleased/nicolasdular-change-broadcast-index.yml
new file mode 100644
index 00000000000..eadf152d6a9
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-change-broadcast-index.yml
@@ -0,0 +1,5 @@
+---
+title: Change broadcast message index
+merge_request: 23986
+author:
+type: performance
diff --git a/changelogs/unreleased/reschedule-issue-tracker-migration.yml b/changelogs/unreleased/reschedule-issue-tracker-migration.yml
new file mode 100644
index 00000000000..79056175eed
--- /dev/null
+++ b/changelogs/unreleased/reschedule-issue-tracker-migration.yml
@@ -0,0 +1,5 @@
+---
+title: Migrate issue tracker data to data field tables
+merge_request: 24076
+author:
+type: other
diff --git a/config/feature_categories.yml b/config/feature_categories.yml
index 1cae9875eac..ce6bc891d10 100644
--- a/config/feature_categories.yml
+++ b/config/feature_categories.yml
@@ -21,6 +21,7 @@
- cloud_native_installation
- cluster_cost_optimization
- cluster_monitoring
+- code_analytics
- code_quality
- code_review
- collection
@@ -31,8 +32,8 @@
- container_scanning
- continuous_delivery
- continuous_integration
-- data_loss_prevention
- ddos_protection
+- dependency_firewall
- dependency_proxy
- dependency_scanning
- design_management
@@ -42,8 +43,11 @@
- epics
- error_tracking
- feature_flags
+- frontend_foundation
- fuzzing
+- gdk
- geo_replication
+- git_lfs
- gitaly
- gitlab_handbook
- gitter
@@ -52,11 +56,11 @@
- incident_management
- incremental_rollout
- infrastructure_as_code
-- integration_testing
- integrations
- interactive_application_security_testing
- internationalization
- issue_tracking
+- jupyter_notebooks
- kanban_boards
- kubernetes_management
- language_specific
@@ -65,6 +69,7 @@
- load_testing
- logging
- malware_scanning
+- merge_trains
- metrics
- omnibus_package
- package_registry
@@ -93,6 +98,7 @@
- subgroups
- synthetic_monitoring
- system_testing
+- teams
- templates
- threat_detection
- time_tracking
@@ -107,3 +113,4 @@
- web_ide
- web_performance
- wiki
+- workspaces
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index d7d4bd9d3a1..a6fbb8608b3 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -192,6 +192,7 @@ Settings.gitlab['username_changing_enabled'] = true if Settings.gitlab['username
Settings.gitlab['issue_closing_pattern'] = '\b((?:[Cc]los(?:e[sd]?|ing)|\b[Ff]ix(?:e[sd]|ing)?|\b[Rr]esolv(?:e[sd]?|ing)|\b[Ii]mplement(?:s|ed|ing)?)(:?) +(?:(?:issues? +)?%{issue_ref}(?:(?: *,? +and +| *,? *)?)|([A-Z][A-Z0-9_]+-\d+))+)' if Settings.gitlab['issue_closing_pattern'].nil?
Settings.gitlab['default_projects_features'] ||= {}
Settings.gitlab['webhook_timeout'] ||= 10
+Settings.gitlab['graphql_timeout'] ||= 30
Settings.gitlab['max_attachment_size'] ||= 10
Settings.gitlab['session_expire_delay'] ||= 10080
Settings.gitlab['unauthenticated_session_expire_delay'] ||= 2.hours.to_i
diff --git a/config/initializers/graphql.rb b/config/initializers/graphql.rb
index 206c4daceac..44a9644f481 100644
--- a/config/initializers/graphql.rb
+++ b/config/initializers/graphql.rb
@@ -7,7 +7,7 @@ GraphQL::Schema::Object.accepts_definition(:authorize)
GraphQL::Schema::Field.accepts_definition(:authorize)
Gitlab::Application.config.after_initialize do
- GitlabSchema.middleware << GraphQL::Schema::TimeoutMiddleware.new(max_seconds: ENV.fetch('GITLAB_RAILS_GRAPHQL_TIMEOUT', 30).to_i) do |timeout_error, query|
+ GitlabSchema.middleware << GraphQL::Schema::TimeoutMiddleware.new(max_seconds: Gitlab.config.gitlab.graphql_timeout) do |timeout_error, query|
Gitlab::GraphqlLogger.error(message: timeout_error.to_s, query: query.query_string, query_variables: query.provided_variables)
end
end
diff --git a/config/routes/api.rb b/config/routes/api.rb
index d55bbdf6776..5dbfcc98f0f 100644
--- a/config/routes/api.rb
+++ b/config/routes/api.rb
@@ -1,5 +1,5 @@
post '/api/graphql', to: 'graphql#execute'
-mount GraphiQL::Rails::Engine, at: '/-/graphql-explorer', graphql_path: '/api/graphql'
+mount GraphiQL::Rails::Engine, at: '/-/graphql-explorer', graphql_path: Gitlab::Utils.append_path(Gitlab.config.gitlab.relative_url_root, '/api/graphql')
::API::API.logger Rails.logger # rubocop:disable Gitlab/RailsLogger
mount ::API::API => '/'
diff --git a/db/migrate/20200129133716_add_resource_milestone_events_table.rb b/db/migrate/20200129133716_add_resource_milestone_events_table.rb
new file mode 100644
index 00000000000..0ead21820c2
--- /dev/null
+++ b/db/migrate/20200129133716_add_resource_milestone_events_table.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class AddResourceMilestoneEventsTable < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ create_table :resource_milestone_events, id: :bigserial do |t|
+ t.references :user, null: false, foreign_key: { on_delete: :nullify },
+ index: { name: 'index_resource_milestone_events_on_user_id' }
+ t.references :issue, null: true, foreign_key: { on_delete: :cascade },
+ index: { name: 'index_resource_milestone_events_on_issue_id' }
+ t.references :merge_request, null: true, foreign_key: { on_delete: :cascade },
+ index: { name: 'index_resource_milestone_events_on_merge_request_id' }
+ t.references :milestone, foreign_key: { on_delete: :cascade },
+ index: { name: 'index_resource_milestone_events_on_milestone_id' }
+
+ t.integer :action, limit: 2, null: false
+ t.integer :state, limit: 2, null: false
+ t.integer :cached_markdown_version
+ t.text :reference
+ t.text :reference_html
+ t.datetime_with_timezone :created_at, null: false
+ end
+ end
+end
diff --git a/db/migrate/20200204131054_change_broadcast_message_index.rb b/db/migrate/20200204131054_change_broadcast_message_index.rb
new file mode 100644
index 00000000000..9545eacd3a1
--- /dev/null
+++ b/db/migrate/20200204131054_change_broadcast_message_index.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class ChangeBroadcastMessageIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :broadcast_messages, %i(ends_at broadcast_type id), name: 'index_broadcast_message_on_ends_at_and_broadcast_type_and_id'
+ remove_concurrent_index_by_name :broadcast_messages, :index_broadcast_messages_on_starts_at_and_ends_at_and_id
+ end
+
+ def down
+ add_concurrent_index :broadcast_messages, %i(starts_at ends_at id), name: 'index_broadcast_messages_on_starts_at_and_ends_at_and_id'
+ remove_concurrent_index_by_name :broadcast_messages, :index_broadcast_message_on_ends_at_and_broadcast_type_and_id
+ end
+end
diff --git a/db/post_migrate/20200130145430_reschedule_migrate_issue_trackers_data.rb b/db/post_migrate/20200130145430_reschedule_migrate_issue_trackers_data.rb
new file mode 100644
index 00000000000..312a8c95b92
--- /dev/null
+++ b/db/post_migrate/20200130145430_reschedule_migrate_issue_trackers_data.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+class RescheduleMigrateIssueTrackersData < ActiveRecord::Migration[5.1]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INTERVAL = 3.minutes.to_i
+ BATCH_SIZE = 5_000
+ MIGRATION = 'MigrateIssueTrackersSensitiveData'
+
+ disable_ddl_transaction!
+
+ class Service < ActiveRecord::Base
+ self.table_name = 'services'
+ self.inheritance_column = :_type_disabled
+
+ include ::EachBatch
+ end
+
+ def up
+ relation = Service.where(category: 'issue_tracker').where("properties IS NOT NULL AND properties != '{}' AND properties != ''")
+ queue_background_migration_jobs_by_range_at_intervals(relation,
+ MIGRATION,
+ INTERVAL,
+ batch_size: BATCH_SIZE)
+ end
+
+ def down
+ remove_issue_tracker_data_sql = "DELETE FROM issue_tracker_data WHERE \
+ (length(encrypted_issues_url) > 0 AND encrypted_issues_url_iv IS NULL) \
+ OR (length(encrypted_new_issue_url) > 0 AND encrypted_new_issue_url_iv IS NULL) \
+ OR (length(encrypted_project_url) > 0 AND encrypted_project_url_iv IS NULL)"
+
+ execute(remove_issue_tracker_data_sql)
+
+ remove_jira_tracker_data_sql = "DELETE FROM jira_tracker_data WHERE \
+ (length(encrypted_api_url) > 0 AND encrypted_api_url_iv IS NULL) \
+ OR (length(encrypted_url) > 0 AND encrypted_url_iv IS NULL) \
+ OR (length(encrypted_username) > 0 AND encrypted_username_iv IS NULL) \
+ OR (length(encrypted_password) > 0 AND encrypted_password_iv IS NULL)"
+
+ execute(remove_jira_tracker_data_sql)
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index ecc65944bd8..a61a5533ccf 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2020_02_03_025821) do
+ActiveRecord::Schema.define(version: 2020_02_04_131054) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_trgm"
@@ -564,7 +564,7 @@ ActiveRecord::Schema.define(version: 2020_02_03_025821) do
t.integer "cached_markdown_version"
t.string "target_path", limit: 255
t.integer "broadcast_type", limit: 2, default: 1, null: false
- t.index ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id"
+ t.index ["ends_at", "broadcast_type", "id"], name: "index_broadcast_message_on_ends_at_and_broadcast_type_and_id"
end
create_table "chat_names", id: :serial, force: :cascade do |t|
@@ -3680,6 +3680,23 @@ ActiveRecord::Schema.define(version: 2020_02_03_025821) do
t.index ["user_id"], name: "index_resource_label_events_on_user_id"
end
+ create_table "resource_milestone_events", force: :cascade do |t|
+ t.bigint "user_id", null: false
+ t.bigint "issue_id"
+ t.bigint "merge_request_id"
+ t.bigint "milestone_id"
+ t.integer "action", limit: 2, null: false
+ t.integer "state", limit: 2, null: false
+ t.integer "cached_markdown_version"
+ t.text "reference"
+ t.text "reference_html"
+ t.datetime_with_timezone "created_at", null: false
+ t.index ["issue_id"], name: "index_resource_milestone_events_on_issue_id"
+ t.index ["merge_request_id"], name: "index_resource_milestone_events_on_merge_request_id"
+ t.index ["milestone_id"], name: "index_resource_milestone_events_on_milestone_id"
+ t.index ["user_id"], name: "index_resource_milestone_events_on_user_id"
+ end
+
create_table "resource_weight_events", force: :cascade do |t|
t.bigint "user_id", null: false
t.bigint "issue_id", null: false
@@ -4842,6 +4859,10 @@ ActiveRecord::Schema.define(version: 2020_02_03_025821) do
add_foreign_key "resource_label_events", "labels", on_delete: :nullify
add_foreign_key "resource_label_events", "merge_requests", on_delete: :cascade
add_foreign_key "resource_label_events", "users", on_delete: :nullify
+ add_foreign_key "resource_milestone_events", "issues", on_delete: :cascade
+ add_foreign_key "resource_milestone_events", "merge_requests", on_delete: :cascade
+ add_foreign_key "resource_milestone_events", "milestones", on_delete: :cascade
+ add_foreign_key "resource_milestone_events", "users", on_delete: :nullify
add_foreign_key "resource_weight_events", "issues", on_delete: :cascade
add_foreign_key "resource_weight_events", "users", on_delete: :nullify
add_foreign_key "reviews", "merge_requests", on_delete: :cascade
diff --git a/doc/.linting/vale/styles/gitlab/SentenceSpacing.yml b/doc/.linting/vale/styles/gitlab/SentenceSpacing.yml
new file mode 100644
index 00000000000..5efc6ceeef5
--- /dev/null
+++ b/doc/.linting/vale/styles/gitlab/SentenceSpacing.yml
@@ -0,0 +1,32 @@
+---
+# `extends` indicates the Vale extension point being used.
+# Full list of styles: https://errata-ai.github.io/vale/styles/
+extends: existence
+
+# Existence rules can display the matched strings in the user message.
+message: "'%s' should have one space between sentences."
+
+# Should a result be flagged as a suggestion, warning, or error?
+# Results that fall below the MinAlertLevel set in
+# https://gitlab.com/gitlab-org/gitlab/blob/master/.vale.ini won't be shown.
+level: suggestion
+
+# Should a match be case-insensitive or case-sensitive?
+# Acceptable values are 'true' or 'false'
+# This value is irrelevant when testing non-alphabetical characters
+#ignorecase: true
+
+# Should this rule be limited to a specific scope? If yes, uncomment the line.
+# Possible scopes: https://errata-ai.github.io/vale/formats/#available-scopes
+# scope: heading
+
+# Should this rule ignore normal word boundaries, such as \b ?
+# Acceptable values are 'true' or 'false'
+nonword: true
+
+# What is the source for this rule?
+link: https://docs.gitlab.com/ee/development/documentation/styleguide.html#punctuation
+
+tokens:
+ - '[a-z][.?!][A-Z]'
+ - '[.?!] {2,}[A-Z]'
diff --git a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
index 7bffe00a969..49f42ed1238 100644
--- a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
+++ b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
@@ -126,6 +126,18 @@ Benchmark.bm do |x|
end
```
+## Feature flags
+
+### Show all feature flags that are enabled
+
+```ruby
+# Regular output
+Feature.all
+
+# Nice output
+Feature.all.map {|f| [f.name, f.state]}
+```
+
## Command Line
### Check the GitLab version fast
diff --git a/doc/administration/troubleshooting/ssl.md b/doc/administration/troubleshooting/ssl.md
index 98d144e012f..ea17116d422 100644
--- a/doc/administration/troubleshooting/ssl.md
+++ b/doc/administration/troubleshooting/ssl.md
@@ -46,6 +46,21 @@ After configuring a GitLab instance with an internal CA certificate, you might n
If you have the problems listed above, add your certificate to `/etc/gitlab/trusted-certs` and run `sudo gitlab-ctl reconfigure`.
+## Using GitLab Runner with a GitLab instance configured with internal CA certificate or self-signed certificate
+
+Besides getting the errors mentioned in
+[Using an internal CA certificate with GitLab](ssl.md#using-an-internal-ca-certificate-with-gitlab),
+your CI pipelines may stuck stuck in `Pending` status. In the runner logs you may see the below error:
+
+```shell
+Dec 6 02:43:17 runner-host01 gitlab-runner[15131]: #033[0;33mWARNING: Checking for jobs... failed
+#033[0;m #033[0;33mrunner#033[0;m=Bfkz1fyb #033[0;33mstatus#033[0;m=couldn't execute POST against
+https://gitlab.domain.tld/api/v4/jobs/request: Post https://gitlab.domain.tld/api/v4/jobs/request:
+x509: certificate signed by unknown authority
+```
+
+If you face similar problem, add your certificate to `/etc/gitlab-runner/certs` and restart the runner via `gitlab-runner restart`.
+
## Mirroring a remote GitLab repository that uses a self-signed SSL certificate
**Scenario:** When configuring a local GitLab instance to [mirror a repository](../../user/project/repository/repository_mirroring.md) from a remote GitLab instance that uses a self-signed certificate, you may see the `SSL certificate problem: self signed certificate` error in the UI.
@@ -79,6 +94,18 @@ To fix this problem:
- Add the self-signed certificate from the remote GitLab instance to the `/etc/gitlab/trusted-certs` directory on the local GitLab instance and run `sudo gitlab-ctl reconfigure` as per the instructions for [installing custom public certificates](https://docs.gitlab.com/omnibus/settings/ssl.html#install-custom-public-certificates).
- If your local GitLab instance was installed using the Helm Charts, you can [add your self-signed certificate to your GitLab instance](https://docs.gitlab.com/runner/install/kubernetes.html#providing-a-custom-certificate-for-accessing-gitlab).
+You may also get another error when trying to mirror a repository from a remote GitLab instance that uses a self-signed certificate:
+
+```shell
+2:Fetching remote upstream failed: fatal: unable to access &amp;#39;https://gitlab.domain.tld/root/test-repo/&amp;#39;:
+SSL: unable to obtain common name from peer certificate
+```
+
+In this case, the problem can be related to the certificate itself:
+
+- Double check that your self-signed certificate is not missing a common name. If it is then regenerate a valid certificate
+- add it to `/etc/gitlab/trusted-certs` and run `sudo gitlab-ctl reconfigure`
+
## Unable to perform Git operations due to an internal or self-signed certificate
If your GitLab instance is using a self-signed certificate, or the certificate is signed by an internal certificate authority (CA), you might run into the following errors when attempting to perform Git operations:
diff --git a/lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml b/lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml
index feedb0994c2..78ee9b28605 100644
--- a/lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml
@@ -1,5 +1,5 @@
.dast-auto-deploy:
- image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-deploy-image:v0.8.3"
+ image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-deploy-image:v0.9.1"
dast_environment_deploy:
extends: .dast-auto-deploy
diff --git a/spec/features/graphiql_spec.rb b/spec/features/graphiql_spec.rb
new file mode 100644
index 00000000000..329758113ab
--- /dev/null
+++ b/spec/features/graphiql_spec.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'GraphiQL' do
+ context 'without relative_url_root' do
+ before do
+ visit '/-/graphql-explorer'
+ end
+
+ it 'has the correct graphQLEndpoint' do
+ expect(page.body).to include('var graphQLEndpoint = "/api/graphql";')
+ end
+ end
+
+ context 'with relative_url_root' do
+ before do
+ stub_config_setting(relative_url_root: '/gitlab/root')
+ Rails.application.reload_routes!
+
+ visit '/-/graphql-explorer'
+ end
+
+ after do
+ Rails.application.reload_routes!
+ end
+
+ it 'has the correct graphQLEndpoint' do
+ expect(page.body).to include('var graphQLEndpoint = "/gitlab/root/api/graphql";')
+ end
+ end
+end
diff --git a/spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb b/spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb
index 664e3810fc9..4c70877befe 100644
--- a/spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb
+++ b/spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'spec_helper'
-describe Gitlab::BackgroundMigration::MigrateIssueTrackersSensitiveData, :migration, schema: 20190924152703 do
+describe Gitlab::BackgroundMigration::MigrateIssueTrackersSensitiveData, :migration, schema: 20200130145430 do
let(:services) { table(:services) }
# we need to define the classes due to encryption
diff --git a/spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb b/spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb
new file mode 100644
index 00000000000..4f947358991
--- /dev/null
+++ b/spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb
@@ -0,0 +1,104 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20200130145430_reschedule_migrate_issue_trackers_data.rb')
+
+describe RescheduleMigrateIssueTrackersData, :migration, :sidekiq do
+ let(:services) { table(:services) }
+ let(:migration_class) { Gitlab::BackgroundMigration::MigrateIssueTrackersSensitiveData }
+ let(:migration_name) { migration_class.to_s.demodulize }
+
+ let(:properties) do
+ {
+ 'url' => 'http://example.com'
+ }
+ end
+ let!(:jira_service) do
+ services.create(id: 10, type: 'JiraService', properties: properties, category: 'issue_tracker')
+ end
+ let!(:jira_service_nil) do
+ services.create(id: 11, type: 'JiraService', properties: nil, category: 'issue_tracker')
+ end
+ let!(:bugzilla_service) do
+ services.create(id: 12, type: 'BugzillaService', properties: properties, category: 'issue_tracker')
+ end
+ let!(:youtrack_service) do
+ services.create(id: 13, type: 'YoutrackService', properties: properties, category: 'issue_tracker')
+ end
+ let!(:youtrack_service_empty) do
+ services.create(id: 14, type: 'YoutrackService', properties: '', category: 'issue_tracker')
+ end
+ let!(:gitlab_service) do
+ services.create(id: 15, type: 'GitlabIssueTrackerService', properties: properties, category: 'issue_tracker')
+ end
+ let!(:gitlab_service_empty) do
+ services.create(id: 16, type: 'GitlabIssueTrackerService', properties: {}, category: 'issue_tracker')
+ end
+ let!(:other_service) do
+ services.create(id: 17, type: 'OtherService', properties: properties, category: 'other_category')
+ end
+
+ before do
+ stub_const("#{described_class}::BATCH_SIZE", 2)
+ end
+
+ describe "#up" do
+ it 'schedules background migrations at correct time' do
+ Sidekiq::Testing.fake! do
+ Timecop.freeze do
+ migrate!
+
+ expect(migration_name).to be_scheduled_delayed_migration(3.minutes, jira_service.id, bugzilla_service.id)
+ expect(migration_name).to be_scheduled_delayed_migration(6.minutes, youtrack_service.id, gitlab_service.id)
+ expect(BackgroundMigrationWorker.jobs.size).to eq(2)
+ end
+ end
+ end
+ end
+
+ describe "#down" do
+ let(:issue_tracker_data) { table(:issue_tracker_data) }
+ let(:jira_tracker_data) { table(:jira_tracker_data) }
+
+ let!(:valid_issue_tracker_data) do
+ issue_tracker_data.create(
+ service_id: bugzilla_service.id,
+ encrypted_issues_url: 'http://url.com',
+ encrypted_issues_url_iv: 'somevalue'
+ )
+ end
+ let!(:invalid_issue_tracker_data) do
+ issue_tracker_data.create(
+ service_id: bugzilla_service.id,
+ encrypted_issues_url: 'http:url.com',
+ encrypted_issues_url_iv: nil
+ )
+ end
+ let!(:valid_jira_tracker_data) do
+ jira_tracker_data.create(
+ service_id: bugzilla_service.id,
+ encrypted_url: 'http://url.com',
+ encrypted_url_iv: 'somevalue'
+ )
+ end
+ let!(:invalid_jira_tracker_data) do
+ jira_tracker_data.create(
+ service_id: bugzilla_service.id,
+ encrypted_url: 'http://url.com',
+ encrypted_url_iv: nil
+ )
+ end
+
+ it 'removes the invalid jira tracker data' do
+ expect { described_class.new.down }.to change { jira_tracker_data.count }.from(2).to(1)
+
+ expect(jira_tracker_data.all).to eq([valid_jira_tracker_data])
+ end
+
+ it 'removes the invalid issue tracker data' do
+ expect { described_class.new.down }.to change { issue_tracker_data.count }.from(2).to(1)
+
+ expect(issue_tracker_data.all).to eq([valid_issue_tracker_data])
+ end
+ end
+end