diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-21 15:09:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-21 15:09:07 +0300 |
commit | 2a040e2655fe0a99df61ad0a7bd0c27e68af0c38 (patch) | |
tree | a245cd0d6dd10f185e2fd098e371adc1ea03b72b /app | |
parent | a53d2c37c4934f564caa94543dd4cf5af1703e2d (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.vue | 4 | ||||
-rw-r--r-- | app/assets/javascripts/notes.js | 8 | ||||
-rw-r--r-- | app/presenters/projects/prometheus/alert_presenter.rb | 13 | ||||
-rw-r--r-- | app/services/concerns/incident_management/settings.rb | 15 | ||||
-rw-r--r-- | app/services/issues/close_service.rb | 14 | ||||
-rw-r--r-- | app/services/projects/alerting/notify_service.rb | 14 | ||||
-rw-r--r-- | app/views/dashboard/merge_requests.html.haml | 4 |
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 |