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>2020-02-21 15:09:07 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-21 15:09:07 +0300
commit2a040e2655fe0a99df61ad0a7bd0c27e68af0c38 (patch)
treea245cd0d6dd10f185e2fd098e371adc1ea03b72b /app
parenta53d2c37c4934f564caa94543dd4cf5af1703e2d (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/import_projects/components/import_projects_table.vue4
-rw-r--r--app/assets/javascripts/notes.js8
-rw-r--r--app/presenters/projects/prometheus/alert_presenter.rb13
-rw-r--r--app/services/concerns/incident_management/settings.rb15
-rw-r--r--app/services/issues/close_service.rb14
-rw-r--r--app/services/projects/alerting/notify_service.rb14
-rw-r--r--app/views/dashboard/merge_requests.html.haml4
7 files changed, 61 insertions, 11 deletions
diff --git a/app/assets/javascripts/import_projects/components/import_projects_table.vue b/app/assets/javascripts/import_projects/components/import_projects_table.vue
index e5ac3cbafe5..849bda28d03 100644
--- a/app/assets/javascripts/import_projects/components/import_projects_table.vue
+++ b/app/assets/javascripts/import_projects/components/import_projects_table.vue
@@ -1,5 +1,5 @@
<script>
-import _ from 'underscore';
+import { throttle } from 'lodash';
import { mapActions, mapState, mapGetters } from 'vuex';
import { GlLoadingIcon } from '@gitlab/ui';
import LoadingButton from '~/vue_shared/components/loading_button.vue';
@@ -67,7 +67,7 @@ export default {
this.setFilter(target.value);
},
- throttledFetchRepos: _.throttle(function fetch() {
+ throttledFetchRepos: throttle(function fetch() {
eventHub.$off('importAll');
this.fetchRepos();
}, reposFetchThrottleDelay),
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index b3b189c1114..9e2231922b7 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -1808,11 +1808,7 @@ export default class Notes {
$editingNote.removeClass('is-editing fade-in-full').addClass('being-posted fade-in-half');
$editingNote
.find('.note-headline-meta a')
- .html(
- `<i class="fa fa-spinner fa-spin" aria-label="${__(
- 'Comment is being updated',
- )}" aria-hidden="true"></i>`,
- );
+ .html('<span class="spinner align-text-bottom"></span>');
// Make request to update comment on server
axios
@@ -1825,7 +1821,7 @@ export default class Notes {
// Submission failed, revert back to original note
$noteBodyText.html(escape(cachedNoteBodyText));
$editingNote.removeClass('being-posted fade-in');
- $editingNote.find('.fa.fa-spinner').remove();
+ $editingNote.find('.spinner').remove();
// Show Flash message about failure
this.updateNoteError();
diff --git a/app/presenters/projects/prometheus/alert_presenter.rb b/app/presenters/projects/prometheus/alert_presenter.rb
index 8988c567c5c..7416b76b65d 100644
--- a/app/presenters/projects/prometheus/alert_presenter.rb
+++ b/app/presenters/projects/prometheus/alert_presenter.rb
@@ -6,6 +6,7 @@ module Projects
RESERVED_ANNOTATIONS = %w(gitlab_incident_markdown title).freeze
GENERIC_ALERT_SUMMARY_ANNOTATIONS = %w(monitoring_tool service hosts).freeze
MARKDOWN_LINE_BREAK = " \n".freeze
+ INCIDENT_LABEL_NAME = IncidentManagement::CreateIssueService::INCIDENT_LABEL[:title].freeze
def full_title
[environment_name, alert_title].compact.join(': ')
@@ -31,6 +32,18 @@ module Projects
end
end
+ def show_performance_dashboard_link?
+ gitlab_alert.present?
+ end
+
+ def show_incident_issues_link?
+ project.incident_management_setting&.create_issue?
+ end
+
+ def incident_issues_link
+ project_issues_url(project, label_name: INCIDENT_LABEL_NAME)
+ end
+
def starts_at
super&.rfc3339
end
diff --git a/app/services/concerns/incident_management/settings.rb b/app/services/concerns/incident_management/settings.rb
new file mode 100644
index 00000000000..5f56d6e7f53
--- /dev/null
+++ b/app/services/concerns/incident_management/settings.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+module IncidentManagement
+ module Settings
+ def incident_management_setting
+ strong_memoize(:incident_management_setting) do
+ project.incident_management_setting ||
+ project.build_incident_management_setting
+ end
+ end
+
+ def process_issues?
+ incident_management_setting.create_issue?
+ end
+ end
+end
diff --git a/app/services/issues/close_service.rb b/app/services/issues/close_service.rb
index 14585c2850b..ce955b07648 100644
--- a/app/services/issues/close_service.rb
+++ b/app/services/issues/close_service.rb
@@ -36,6 +36,8 @@ module Issues
execute_hooks(issue, 'close')
invalidate_cache_counts(issue, users: issue.assignees)
issue.update_project_counter_caches
+
+ store_first_mentioned_in_commit_at(issue, closed_via) if closed_via.is_a?(MergeRequest)
end
issue
@@ -46,5 +48,17 @@ module Issues
def create_note(issue, current_commit)
SystemNoteService.change_status(issue, issue.project, current_user, issue.state, current_commit)
end
+
+ def store_first_mentioned_in_commit_at(issue, merge_request)
+ return unless Feature.enabled?(:store_first_mentioned_in_commit_on_issue_close, issue.project)
+
+ metrics = issue.metrics
+ return if metrics.nil? || metrics.first_mentioned_in_commit_at
+
+ first_commit_timestamp = merge_request.commits(limit: 1).first&.date
+ return unless first_commit_timestamp
+
+ metrics.update!(first_mentioned_in_commit_at: first_commit_timestamp)
+ end
end
end
diff --git a/app/services/projects/alerting/notify_service.rb b/app/services/projects/alerting/notify_service.rb
index 4ca3b154e4b..d34d6f6a915 100644
--- a/app/services/projects/alerting/notify_service.rb
+++ b/app/services/projects/alerting/notify_service.rb
@@ -4,12 +4,14 @@ module Projects
module Alerting
class NotifyService < BaseService
include Gitlab::Utils::StrongMemoize
+ include IncidentManagement::Settings
def execute(token)
return forbidden unless alerts_service_activated?
return unauthorized unless valid_token?(token)
- process_incident_issues
+ process_incident_issues if process_issues?
+ send_alert_email if send_email?
ServiceResponse.success
rescue Gitlab::Alerting::NotificationPayloadParser::BadPayloadError
@@ -20,11 +22,21 @@ module Projects
delegate :alerts_service, :alerts_service_activated?, to: :project
+ def send_email?
+ incident_management_setting.send_email?
+ end
+
def process_incident_issues
IncidentManagement::ProcessAlertWorker
.perform_async(project.id, parsed_payload)
end
+ def send_alert_email
+ notification_service
+ .async
+ .prometheus_alerts_fired(project, [parsed_payload])
+ end
+
def parsed_payload
Gitlab::Alerting::NotificationPayloadParser.call(params.to_h)
end
diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml
index 3956f03a3c8..dd9fd34f284 100644
--- a/app/views/dashboard/merge_requests.html.haml
+++ b/app/views/dashboard/merge_requests.html.haml
@@ -4,11 +4,11 @@
= render_dashboard_gold_trial(current_user)
-.page-title-holder.d-flex.align-items-center
+.page-title-holder.d-flex.align-items-start.flex-column.flex-sm-row.align-items-sm-center
%h1.page-title= _('Merge Requests')
- if current_user
- .page-title-controls
+ .page-title-controls.ml-0.mb-3.ml-sm-auto.mb-sm-0
= render 'shared/new_project_item_select', path: 'merge_requests/new', label: "New merge request", with_feature_enabled: 'merge_requests', type: :merge_requests
.top-area