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>2019-09-25 15:06:15 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-09-25 15:06:15 +0300
commitaabf412bc1f30cb12d97a077458d002c57cad8e9 (patch)
tree1e06ef9d3a5b1b835be6cb75ef8c5a7e362ee3ed
parent1cfd8874ee6702184d5608f533b30bab722b4f9d (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.rubocop.yml6
-rw-r--r--app/assets/stylesheets/framework/typography.scss4
-rw-r--r--app/helpers/nav_helper.rb1
-rw-r--r--app/models/clusters/platforms/kubernetes.rb7
-rw-r--r--app/models/project_services/jira_service.rb8
-rw-r--r--app/services/issues/close_service.rb2
-rw-r--r--changelogs/unreleased/31728-nullify-cluster-namespace-if-blank.yml5
-rw-r--r--changelogs/unreleased/32396-collapsible-markdown-formatted-weirdly.yml5
-rw-r--r--changelogs/unreleased/pages-per-project-size-limit-db.yml5
-rw-r--r--db/migrate/20190911115056_add_projects_max_pages_size.rb9
-rw-r--r--db/migrate/20190911115109_add_namespaces_max_pages_size.rb9
-rw-r--r--db/migrate/20190911115207_add_projects_max_artifacts_size.rb9
-rw-r--r--db/migrate/20190911115222_add_namespaces_max_artifacts_size.rb9
-rw-r--r--db/schema.rb4
-rw-r--r--lib/api/helpers/services_helpers.rb2
-rw-r--r--lib/gitlab/import_export/import_export.yml2
-rw-r--r--lib/gitlab/jira/http_client.rb4
-rw-r--r--locale/gitlab.pot6
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml1
-rw-r--r--spec/models/clusters/platforms/kubernetes_spec.rb15
-rw-r--r--spec/support/shared_contexts/services_shared_context.rb28
21 files changed, 119 insertions, 22 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 693ee0ae847..45464ca3318 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -218,6 +218,12 @@ ActiveRecordAssociationReload:
- 'spec/**/*'
- 'ee/spec/**/*'
+Naming/PredicateName:
+ Enabled: true
+ Exclude:
+ - 'spec/**/*'
+ - 'ee/spec/**/*'
+
RSpec/FactoriesInMigrationSpecs:
Enabled: true
Include:
diff --git a/app/assets/stylesheets/framework/typography.scss b/app/assets/stylesheets/framework/typography.scss
index ba123ff9a67..03ddbfd9194 100644
--- a/app/assets/stylesheets/framework/typography.scss
+++ b/app/assets/stylesheets/framework/typography.scss
@@ -73,10 +73,6 @@
summary {
margin-bottom: $gl-padding;
}
-
- *:first-child:not(summary) {
- margin-top: $gl-padding;
- }
}
// Single code lines should wrap
diff --git a/app/helpers/nav_helper.rb b/app/helpers/nav_helper.rb
index 6aa910e6c3f..c6e9a20c5b2 100644
--- a/app/helpers/nav_helper.rb
+++ b/app/helpers/nav_helper.rb
@@ -20,7 +20,6 @@ module NavHelper
def page_gutter_class
if page_has_markdown?
-
if cookies[:collapsed_gutter] == 'true'
%w[page-gutter right-sidebar-collapsed]
else
diff --git a/app/models/clusters/platforms/kubernetes.rb b/app/models/clusters/platforms/kubernetes.rb
index aa2a7f3d7f1..d00a2984a60 100644
--- a/app/models/clusters/platforms/kubernetes.rb
+++ b/app/models/clusters/platforms/kubernetes.rb
@@ -23,11 +23,12 @@ module Clusters
key: Settings.attr_encrypted_db_key_base_truncated,
algorithm: 'aes-256-cbc'
+ before_validation :nullify_blank_namespace
before_validation :enforce_namespace_to_lower_case
before_validation :enforce_ca_whitespace_trimming
validates :namespace,
- allow_blank: true,
+ allow_nil: true,
length: 1..63,
format: {
with: Gitlab::Regex.kubernetes_namespace_regex,
@@ -190,6 +191,10 @@ module Clusters
true
end
+
+ def nullify_blank_namespace
+ self.namespace = nil if namespace.blank?
+ end
end
end
end
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index 86139c62f68..4a02da975f2 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -137,10 +137,9 @@ class JiraService < IssueTrackerService
return if issue.nil? || has_resolution?(issue) || !jira_issue_transition_id.present?
- commit_id = if entity.is_a?(Commit)
- entity.id
- elsif entity.is_a?(MergeRequest)
- entity.diff_head_sha
+ commit_id = case entity
+ when Commit then entity.id
+ when MergeRequest then entity.diff_head_sha
end
commit_url = build_entity_url(:commit, commit_id)
@@ -331,7 +330,6 @@ class JiraService < IssueTrackerService
# Handle errors when doing Jira API calls
def jira_request
yield
-
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, URI::InvalidURIError, JIRA::HTTPError, OpenSSL::SSL::SSLError => e
@error = e.message
log_error("Error sending message", client_url: client_url, error: @error)
diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb
index 805721212ba..965351b5b6c 100644
--- a/app/services/issues/close_service.rb
+++ b/app/services/issues/close_service.rb
@@ -18,7 +18,7 @@ module Issues
# The code calling this method is responsible for ensuring that a user is
# allowed to close the given issue.
def close_issue(issue, closed_via: nil, notifications: true, system_note: true)
- if project.jira_tracker? && project.jira_service.active && issue.is_a?(ExternalIssue)
+ if project.jira_tracker_active? && issue.is_a?(ExternalIssue)
project.jira_service.close_issue(closed_via, issue)
todo_service.close_issue(issue, current_user)
return issue
diff --git a/changelogs/unreleased/31728-nullify-cluster-namespace-if-blank.yml b/changelogs/unreleased/31728-nullify-cluster-namespace-if-blank.yml
new file mode 100644
index 00000000000..362d0c88eea
--- /dev/null
+++ b/changelogs/unreleased/31728-nullify-cluster-namespace-if-blank.yml
@@ -0,0 +1,5 @@
+---
+title: Nullify platform Kubernetes namespace if blank
+merge_request: 17657
+author:
+type: fixed
diff --git a/changelogs/unreleased/32396-collapsible-markdown-formatted-weirdly.yml b/changelogs/unreleased/32396-collapsible-markdown-formatted-weirdly.yml
new file mode 100644
index 00000000000..49ee7ea6c0a
--- /dev/null
+++ b/changelogs/unreleased/32396-collapsible-markdown-formatted-weirdly.yml
@@ -0,0 +1,5 @@
+---
+title: Fix css selector for details in issue description
+merge_request: 17557
+author:
+type: fixed
diff --git a/changelogs/unreleased/pages-per-project-size-limit-db.yml b/changelogs/unreleased/pages-per-project-size-limit-db.yml
new file mode 100644
index 00000000000..97a24b356e6
--- /dev/null
+++ b/changelogs/unreleased/pages-per-project-size-limit-db.yml
@@ -0,0 +1,5 @@
+---
+title: Add columns for per project/group max pages/artifacts sizes
+merge_request: 17231
+author:
+type: added
diff --git a/db/migrate/20190911115056_add_projects_max_pages_size.rb b/db/migrate/20190911115056_add_projects_max_pages_size.rb
new file mode 100644
index 00000000000..175c66953ed
--- /dev/null
+++ b/db/migrate/20190911115056_add_projects_max_pages_size.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddProjectsMaxPagesSize < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :projects, :max_pages_size, :integer
+ end
+end
diff --git a/db/migrate/20190911115109_add_namespaces_max_pages_size.rb b/db/migrate/20190911115109_add_namespaces_max_pages_size.rb
new file mode 100644
index 00000000000..c14dfa74a5a
--- /dev/null
+++ b/db/migrate/20190911115109_add_namespaces_max_pages_size.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddNamespacesMaxPagesSize < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :namespaces, :max_pages_size, :integer
+ end
+end
diff --git a/db/migrate/20190911115207_add_projects_max_artifacts_size.rb b/db/migrate/20190911115207_add_projects_max_artifacts_size.rb
new file mode 100644
index 00000000000..41cab7e5282
--- /dev/null
+++ b/db/migrate/20190911115207_add_projects_max_artifacts_size.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddProjectsMaxArtifactsSize < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :projects, :max_artifacts_size, :integer
+ end
+end
diff --git a/db/migrate/20190911115222_add_namespaces_max_artifacts_size.rb b/db/migrate/20190911115222_add_namespaces_max_artifacts_size.rb
new file mode 100644
index 00000000000..60c594c47a6
--- /dev/null
+++ b/db/migrate/20190911115222_add_namespaces_max_artifacts_size.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddNamespacesMaxArtifactsSize < ActiveRecord::Migration[5.2]
+ DOWNTIME = false
+
+ def change
+ add_column :namespaces, :max_artifacts_size, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 7703628d433..a4d244e556f 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -2317,6 +2317,8 @@ ActiveRecord::Schema.define(version: 2019_09_19_162036) do
t.integer "last_ci_minutes_usage_notification_level"
t.integer "subgroup_creation_level", default: 1
t.boolean "emails_disabled"
+ t.integer "max_pages_size"
+ t.integer "max_artifacts_size"
t.index ["created_at"], name: "index_namespaces_on_created_at"
t.index ["custom_project_templates_group_id", "type"], name: "index_namespaces_on_custom_project_templates_group_id_and_type", where: "(custom_project_templates_group_id IS NOT NULL)"
t.index ["file_template_project_id"], name: "index_namespaces_on_file_template_project_id"
@@ -2909,6 +2911,8 @@ ActiveRecord::Schema.define(version: 2019_09_19_162036) do
t.boolean "merge_requests_disable_committers_approval"
t.boolean "require_password_to_approve"
t.boolean "emails_disabled"
+ t.integer "max_pages_size"
+ t.integer "max_artifacts_size"
t.index ["archived", "pending_delete", "merge_requests_require_code_owner_approval"], name: "projects_requiring_code_owner_approval", where: "((pending_delete = false) AND (archived = false) AND (merge_requests_require_code_owner_approval = true))"
t.index ["created_at"], name: "index_projects_on_created_at"
t.index ["creator_id"], name: "index_projects_on_creator_id"
diff --git a/lib/api/helpers/services_helpers.rb b/lib/api/helpers/services_helpers.rb
index eba4ebb4b6e..2475e384a50 100644
--- a/lib/api/helpers/services_helpers.rb
+++ b/lib/api/helpers/services_helpers.rb
@@ -155,6 +155,7 @@ module API
def self.services
{
+ 'alerts' => [],
'asana' => [
{
required: true,
@@ -696,6 +697,7 @@ module API
def self.service_classes
[
+ ::AlertsService,
::AsanaService,
::AssemblaService,
::BambooService,
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml
index 511b702553e..994aa95dc5e 100644
--- a/lib/gitlab/import_export/import_export.yml
+++ b/lib/gitlab/import_export/import_export.yml
@@ -143,6 +143,8 @@ excluded_attributes:
- :mirror_last_update_at
- :mirror_last_successful_update_at
- :emails_disabled
+ - :max_pages_size
+ - :max_artifacts_size
namespaces:
- :runners_token
- :runners_token_encrypted
diff --git a/lib/gitlab/jira/http_client.rb b/lib/gitlab/jira/http_client.rb
index 11a33a7b358..0c8b509740c 100644
--- a/lib/gitlab/jira/http_client.rb
+++ b/lib/gitlab/jira/http_client.rb
@@ -4,7 +4,7 @@ module Gitlab
module Jira
# Gitlab JIRA HTTP client to be used with jira-ruby gem, this subclasses JIRA::HTTPClient.
# Uses Gitlab::HTTP to make requests to JIRA REST API.
- # The parent class implementation can be found at: https://github.com/sumoheavy/jira-ruby/blob/v1.4.0/lib/jira/http_client.rb
+ # The parent class implementation can be found at: https://github.com/sumoheavy/jira-ruby/blob/v1.7.0/lib/jira/http_client.rb
class HttpClient < JIRA::HttpClient
extend ::Gitlab::Utils::Override
@@ -24,7 +24,7 @@ module Gitlab
password: @options.delete(:password)
}.to_json
- make_request(:post, @options[:context_path] + '/rest/auth/1/session', body, { 'Content-Type' => 'application/json' })
+ make_request(:post, @options[:context_path] + '/rest/auth/1/session', body, 'Content-Type' => 'application/json')
end
override :make_request
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 5ac4a2f1e32..ca62f137ac3 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -1234,6 +1234,9 @@ msgstr ""
msgid "Alerts"
msgstr ""
+msgid "Alerts endpoint"
+msgstr ""
+
msgid "All"
msgstr ""
@@ -12760,6 +12763,9 @@ msgstr ""
msgid "Receive alerts from manually configured Prometheus servers."
msgstr ""
+msgid "Receive alerts on GitLab from any source"
+msgstr ""
+
msgid "Receive notifications about your own activity"
msgstr ""
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index 3315dd3b974..d9272afadf2 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -411,6 +411,7 @@ project:
- project_aliases
- external_pull_requests
- pages_metadatum
+- alerts_service
award_emoji:
- awardable
- user
diff --git a/spec/models/clusters/platforms/kubernetes_spec.rb b/spec/models/clusters/platforms/kubernetes_spec.rb
index 64de6a8ab9b..40ea248c448 100644
--- a/spec/models/clusters/platforms/kubernetes_spec.rb
+++ b/spec/models/clusters/platforms/kubernetes_spec.rb
@@ -19,14 +19,23 @@ describe Clusters::Platforms::Kubernetes do
it_behaves_like 'having unique enum values'
describe 'before_validation' do
+ let(:kubernetes) { create(:cluster_platform_kubernetes, :configured, namespace: namespace) }
+
context 'when namespace includes upper case' do
- let(:kubernetes) { create(:cluster_platform_kubernetes, :configured, namespace: namespace) }
let(:namespace) { 'ABC' }
it 'converts to lower case' do
expect(kubernetes.namespace).to eq('abc')
end
end
+
+ context 'when namespace is blank' do
+ let(:namespace) { '' }
+
+ it 'nullifies the namespace' do
+ expect(kubernetes.namespace).to be_nil
+ end
+ end
end
describe 'validation' do
@@ -35,8 +44,8 @@ describe Clusters::Platforms::Kubernetes do
context 'when validates namespace' do
let(:kubernetes) { build(:cluster_platform_kubernetes, :configured, namespace: namespace) }
- context 'when namespace is blank' do
- let(:namespace) { '' }
+ context 'when namespace is nil' do
+ let(:namespace) { nil }
it { is_expected.to be_truthy }
end
diff --git a/spec/support/shared_contexts/services_shared_context.rb b/spec/support/shared_contexts/services_shared_context.rb
index 4d176ab5fca..113bcc2af9c 100644
--- a/spec/support/shared_contexts/services_shared_context.rb
+++ b/spec/support/shared_contexts/services_shared_context.rb
@@ -28,12 +28,17 @@ Service.available_services_names.each do |service|
end
end
+ let(:licensed_features) do
+ {
+ 'github' => :github_project_service_integration,
+ 'jenkins' => :jenkins_integration,
+ 'jenkins_deprecated' => :jenkins_integration,
+ 'alerts' => :incident_management
+ }
+ end
+
before do
- if service == 'github' && respond_to?(:stub_licensed_features)
- stub_licensed_features(github_project_service_integration: true)
- project.clear_memoization(:disabled_services)
- project.clear_memoization(:licensed_feature_available)
- end
+ enable_license_for_service(service)
end
def initialize_service(service)
@@ -42,5 +47,18 @@ Service.available_services_names.each do |service|
service_item.save!
service_item
end
+
+ private
+
+ def enable_license_for_service(service)
+ return unless respond_to?(:stub_licensed_features)
+
+ licensed_feature = licensed_features[service]
+ return unless licensed_feature
+
+ stub_licensed_features(licensed_feature => true)
+ project.clear_memoization(:disabled_services)
+ project.clear_memoization(:licensed_feature_available)
+ end
end
end