summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-13 21:06:45 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-13 21:06:45 +0000
commitb42f312df5aee0f1b832b69171e9d1cf92eb7416 (patch)
treecf0f4e59d45688723d3d534ddf13564fa10d3050
parent57e3d49fc0fb99f42ac178761fc6232715734020 (diff)
downloadgitlab-ce-b42f312df5aee0f1b832b69171e9d1cf92eb7416.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue18
-rw-r--r--app/assets/javascripts/error_tracking_settings/store/actions.js3
-rw-r--r--app/assets/javascripts/error_tracking_settings/store/mutation_types.js1
-rw-r--r--app/assets/javascripts/error_tracking_settings/store/mutations.js3
-rw-r--r--app/assets/javascripts/error_tracking_settings/store/state.js1
-rw-r--r--app/assets/javascripts/notes.js100
-rw-r--r--app/controllers/projects/releases_controller.rb4
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/helpers/tab_helper.rb18
-rw-r--r--app/presenters/release_presenter.rb2
-rw-r--r--changelogs/unreleased/31411-add-loading-indicator-when-connecting-to-error-tracking-server.yml5
-rw-r--r--changelogs/unreleased/remove_local_qualifier_from_geo_sync_indicators.yml5
-rw-r--r--changelogs/unreleased/remove_unused_image_screenshot.yml5
-rw-r--r--doc/README.md1
-rw-r--r--doc/administration/monitoring/prometheus/index.md25
-rw-r--r--doc/user/group/epics/index.md2
-rw-r--r--doc/user/incident_management/img/incident_management_settings.pngbin0 -> 45533 bytes
-rw-r--r--doc/user/incident_management/index.md131
-rw-r--r--doc/user/project/integrations/img/embed_metrics_issue_template.pngbin0 -> 146220 bytes
-rw-r--r--doc/user/project/integrations/prometheus.md13
-rw-r--r--doc/user/project/issues/associate_zoom_meeting.md42
-rw-r--r--doc/user/project/issues/img/select_all_designs_v12_4.pngbin1325569 -> 0 bytes
-rw-r--r--doc/user/project/issues/img/zoom-quickaction-button.pngbin117097 -> 53418 bytes
-rw-r--r--doc/user/project/issues/issue_data_and_actions.md2
-rw-r--r--lib/gitlab/ci/templates/Android-Fastlane.gitlab-ci.yml5
-rw-r--r--lib/gitlab/ci/templates/Docker.gitlab-ci.yml6
-rw-r--r--lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml27
-rw-r--r--lib/gitlab/ci/templates/Julia.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Maven.gitlab-ci.yml10
-rw-r--r--lib/gitlab/ci/templates/Mono.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/OpenShift.gitlab-ci.yml12
-rw-r--r--lib/gitlab/ci/templates/Packer.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Brunch.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Doxygen.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Harp.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Hexo.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml6
-rw-r--r--lib/gitlab/ci/templates/Pages/Hyde.gitlab-ci.yml6
-rw-r--r--lib/gitlab/ci/templates/Pages/Jekyll.gitlab-ci.yml6
-rw-r--r--lib/gitlab/ci/templates/Pages/Jigsaw.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Lektor.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Metalsmith.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Middleman.gitlab-ci.yml6
-rw-r--r--lib/gitlab/ci/templates/Pages/Nanoc.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/Octopress.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Pages/SwaggerUI.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Python.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Swift.gitlab-ci.yml3
-rw-r--r--lib/gitlab/ci/templates/Terraform.gitlab-ci.yml3
-rw-r--r--lib/gitlab/metrics/requests_rack_middleware.rb4
-rw-r--r--locale/gitlab.pot27
-rw-r--r--spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js17
-rw-r--r--spec/frontend/error_tracking_settings/store/actions_spec.js16
-rw-r--r--spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb4
56 files changed, 399 insertions, 190 deletions
diff --git a/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue b/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue
index 716acf2d676..d86116aa315 100644
--- a/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue
+++ b/app/assets/javascripts/error_tracking_settings/components/error_tracking_form.vue
@@ -1,12 +1,13 @@
<script>
import { mapActions, mapState } from 'vuex';
-import { GlButton, GlFormInput } from '@gitlab/ui';
+import { GlFormInput } from '@gitlab/ui';
import Icon from '~/vue_shared/components/icon.vue';
+import LoadingButton from '~/vue_shared/components/loading_button.vue';
export default {
- components: { GlButton, GlFormInput, Icon },
+ components: { GlFormInput, Icon, LoadingButton },
computed: {
- ...mapState(['apiHost', 'connectError', 'connectSuccessful', 'token']),
+ ...mapState(['apiHost', 'connectError', 'connectSuccessful', 'isLoadingProjects', 'token']),
tokenInputState() {
return this.connectError ? false : null;
},
@@ -27,6 +28,7 @@ export default {
<gl-form-input
id="error-tracking-api-host"
:value="apiHost"
+ :disabled="isLoadingProjects"
placeholder="https://mysentryserver.com"
@input="updateApiHost"
/>
@@ -47,13 +49,17 @@ export default {
id="error-tracking-token"
:value="token"
:state="tokenInputState"
+ :disabled="isLoadingProjects"
@input="updateToken"
/>
</div>
<div class="col-4 col-md-3 gl-pl-0">
- <gl-button class="js-error-tracking-connect prepend-left-5" @click="fetchProjects">{{
- __('Connect')
- }}</gl-button>
+ <loading-button
+ class="js-error-tracking-connect prepend-left-5 d-inline-flex"
+ :label="isLoadingProjects ? __('Connecting') : __('Connect')"
+ :loading="isLoadingProjects"
+ @click="fetchProjects"
+ />
<icon
v-show="connectSuccessful"
class="js-error-tracking-connect-success prepend-left-5 text-success align-middle"
diff --git a/app/assets/javascripts/error_tracking_settings/store/actions.js b/app/assets/javascripts/error_tracking_settings/store/actions.js
index 95105797807..6b540ea7dfd 100644
--- a/app/assets/javascripts/error_tracking_settings/store/actions.js
+++ b/app/assets/javascripts/error_tracking_settings/store/actions.js
@@ -6,17 +6,20 @@ import { transformFrontendSettings } from '../utils';
import * as types from './mutation_types';
export const requestProjects = ({ commit }) => {
+ commit(types.SET_PROJECTS_LOADING, true);
commit(types.RESET_CONNECT);
};
export const receiveProjectsSuccess = ({ commit }, projects) => {
commit(types.UPDATE_CONNECT_SUCCESS);
commit(types.RECEIVE_PROJECTS, projects);
+ commit(types.SET_PROJECTS_LOADING, false);
};
export const receiveProjectsError = ({ commit }) => {
commit(types.UPDATE_CONNECT_ERROR);
commit(types.CLEAR_PROJECTS);
+ commit(types.SET_PROJECTS_LOADING, false);
};
export const fetchProjects = ({ dispatch, state }) => {
diff --git a/app/assets/javascripts/error_tracking_settings/store/mutation_types.js b/app/assets/javascripts/error_tracking_settings/store/mutation_types.js
index b4f8a237947..bf3df383ddc 100644
--- a/app/assets/javascripts/error_tracking_settings/store/mutation_types.js
+++ b/app/assets/javascripts/error_tracking_settings/store/mutation_types.js
@@ -9,3 +9,4 @@ export const UPDATE_ENABLED = 'UPDATE_ENABLED';
export const UPDATE_SELECTED_PROJECT = 'UPDATE_SELECTED_PROJECT';
export const UPDATE_SETTINGS_LOADING = 'UPDATE_SETTINGS_LOADING';
export const UPDATE_TOKEN = 'UPDATE_TOKEN';
+export const SET_PROJECTS_LOADING = 'SET_PROJECTS_LOADING';
diff --git a/app/assets/javascripts/error_tracking_settings/store/mutations.js b/app/assets/javascripts/error_tracking_settings/store/mutations.js
index 4089d1ee94e..133f25264b9 100644
--- a/app/assets/javascripts/error_tracking_settings/store/mutations.js
+++ b/app/assets/javascripts/error_tracking_settings/store/mutations.js
@@ -58,4 +58,7 @@ export default {
state.connectSuccessful = false;
state.connectError = true;
},
+ [types.SET_PROJECTS_LOADING](state, loading) {
+ state.isLoadingProjects = loading;
+ },
};
diff --git a/app/assets/javascripts/error_tracking_settings/store/state.js b/app/assets/javascripts/error_tracking_settings/store/state.js
index 98219d33f4d..ab616f11e83 100644
--- a/app/assets/javascripts/error_tracking_settings/store/state.js
+++ b/app/assets/javascripts/error_tracking_settings/store/state.js
@@ -3,6 +3,7 @@ export default () => ({
enabled: false,
token: '',
projects: [],
+ isLoadingProjects: false,
selectedProject: null,
settingsLoading: false,
connectSuccessful: false,
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index 3715a91d599..defa278c089 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -1,8 +1,8 @@
-/* eslint-disable no-restricted-properties, func-names, no-var, camelcase,
+/* eslint-disable no-restricted-properties, no-var, camelcase,
no-unused-expressions, one-var, default-case,
-consistent-return, no-alert, no-return-assign,
-no-param-reassign, no-else-return, vars-on-top,
-no-shadow, no-useless-escape, class-methods-use-this */
+consistent-return, no-alert, no-param-reassign, no-else-return,
+vars-on-top, no-shadow, no-useless-escape,
+class-methods-use-this */
/* global ResolveService */
@@ -281,14 +281,7 @@ export default class Notes {
if (Notes.interval) {
clearInterval(Notes.interval);
}
- return (Notes.interval = setInterval(
- (function(_this) {
- return function() {
- return _this.refresh();
- };
- })(this),
- this.pollingInterval,
- ));
+ Notes.interval = setInterval(() => this.refresh(), this.pollingInterval);
}
refresh() {
@@ -847,57 +840,52 @@ export default class Notes {
var noteElId, $note;
$note = $(e.currentTarget).closest('.note');
noteElId = $note.attr('id');
- $(`.note[id="${noteElId}"]`).each(
- (function() {
- // A same note appears in the "Discussion" and in the "Changes" tab, we have
- // to remove all. Using $('.note[id='noteId']') ensure we get all the notes,
- // where $('#noteId') would return only one.
- return function(i, el) {
- var $note, $notes;
- $note = $(el);
- $notes = $note.closest('.discussion-notes');
- const discussionId = $('.notes', $notes).data('discussionId');
-
- if (typeof gl.diffNotesCompileComponents !== 'undefined') {
- if (gl.diffNoteApps[noteElId]) {
- gl.diffNoteApps[noteElId].$destroy();
- }
- }
-
- $note.remove();
+ $(`.note[id="${noteElId}"]`).each((i, el) => {
+ // A same note appears in the "Discussion" and in the "Changes" tab, we have
+ // to remove all. Using $('.note[id='noteId']') ensure we get all the notes,
+ // where $('#noteId') would return only one.
+ const $note = $(el);
+ const $notes = $note.closest('.discussion-notes');
+ const discussionId = $('.notes', $notes).data('discussionId');
+
+ if (typeof gl.diffNotesCompileComponents !== 'undefined') {
+ if (gl.diffNoteApps[noteElId]) {
+ gl.diffNoteApps[noteElId].$destroy();
+ }
+ }
- // check if this is the last note for this line
- if ($notes.find('.note').length === 0) {
- var notesTr = $notes.closest('tr');
+ $note.remove();
- // "Discussions" tab
- $notes.closest('.timeline-entry').remove();
+ // check if this is the last note for this line
+ if ($notes.find('.note').length === 0) {
+ const notesTr = $notes.closest('tr');
- $(`.js-diff-avatars-${discussionId}`).trigger('remove.vue');
+ // "Discussions" tab
+ $notes.closest('.timeline-entry').remove();
- // The notes tr can contain multiple lists of notes, like on the parallel diff
- // notesTr does not exist for image diffs
- if (notesTr.find('.discussion-notes').length > 1 || notesTr.length === 0) {
- const $diffFile = $notes.closest('.diff-file');
- if ($diffFile.length > 0) {
- const removeBadgeEvent = new CustomEvent('removeBadge.imageDiff', {
- detail: {
- // badgeNumber's start with 1 and index starts with 0
- badgeNumber: $notes.index() + 1,
- },
- });
+ $(`.js-diff-avatars-${discussionId}`).trigger('remove.vue');
- $diffFile[0].dispatchEvent(removeBadgeEvent);
- }
+ // The notes tr can contain multiple lists of notes, like on the parallel diff
+ // notesTr does not exist for image diffs
+ if (notesTr.find('.discussion-notes').length > 1 || notesTr.length === 0) {
+ const $diffFile = $notes.closest('.diff-file');
+ if ($diffFile.length > 0) {
+ const removeBadgeEvent = new CustomEvent('removeBadge.imageDiff', {
+ detail: {
+ // badgeNumber's start with 1 and index starts with 0
+ badgeNumber: $notes.index() + 1,
+ },
+ });
- $notes.remove();
- } else if (notesTr.length > 0) {
- notesTr.remove();
- }
+ $diffFile[0].dispatchEvent(removeBadgeEvent);
}
- };
- })(this),
- );
+
+ $notes.remove();
+ } else if (notesTr.length > 0) {
+ notesTr.remove();
+ }
+ }
+ });
Notes.checkMergeRequestStatus();
return this.updateNotesCount(-1);
diff --git a/app/controllers/projects/releases_controller.rb b/app/controllers/projects/releases_controller.rb
index 7ee5230de06..72c82aec31d 100644
--- a/app/controllers/projects/releases_controller.rb
+++ b/app/controllers/projects/releases_controller.rb
@@ -6,7 +6,7 @@ class Projects::ReleasesController < Projects::ApplicationController
before_action :release, only: %i[edit update]
before_action :authorize_read_release!
before_action do
- push_frontend_feature_flag(:release_edit_page, project)
+ push_frontend_feature_flag(:release_edit_page, project, default_enabled: true)
push_frontend_feature_flag(:release_issue_summary, project)
end
before_action :authorize_update_release!, only: %i[edit update]
@@ -35,7 +35,7 @@ class Projects::ReleasesController < Projects::ApplicationController
private
def authorize_update_release!
- access_denied! unless Feature.enabled?(:release_edit_page, project)
+ access_denied! unless Feature.enabled?(:release_edit_page, project, default_enabled: true)
access_denied! unless can?(current_user, :update_release, release)
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index dcd7434b9ea..3ae804ff231 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -329,7 +329,7 @@ module ApplicationHelper
if Rails.configuration.assets.compile
app.assets.find_asset(name).to_s
else
- controller.view_context.render(file: File.join('public/assets', app.assets_manifest.assets[name]))
+ controller.view_context.render(file: Rails.root.join('public/assets', app.assets_manifest.assets[name]).to_s)
end
end
diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb
index 53739cb63e3..58edb327be0 100644
--- a/app/helpers/tab_helper.rb
+++ b/app/helpers/tab_helper.rb
@@ -108,16 +108,6 @@ module TabHelper
current_controller?(c) && current_action?(a)
end
- def project_tab_class
- if controller.controller_path.start_with?('projects')
- return 'active'
- end
-
- if %w(services hooks deploy_keys protected_branches).include? controller.controller_name
- "active"
- end
- end
-
def branches_tab_class
if current_controller?(:protected_branches) ||
current_controller?(:branches) ||
@@ -125,14 +115,6 @@ module TabHelper
'active'
end
end
-
- def profile_tab_class
- if controller.controller_path.start_with?('profiles')
- return 'active'
- end
-
- 'active' if current_controller?('oauth/applications')
- end
end
TabHelper.prepend_if_ee('EE::TabHelper')
diff --git a/app/presenters/release_presenter.rb b/app/presenters/release_presenter.rb
index 7a4d6f5c4c4..42463d6dbda 100644
--- a/app/presenters/release_presenter.rb
+++ b/app/presenters/release_presenter.rb
@@ -52,6 +52,6 @@ class ReleasePresenter < Gitlab::View::Presenter::Delegated
end
def release_edit_page_available?
- ::Feature.enabled?(:release_edit_page, project)
+ ::Feature.enabled?(:release_edit_page, project, default_enabled: true)
end
end
diff --git a/changelogs/unreleased/31411-add-loading-indicator-when-connecting-to-error-tracking-server.yml b/changelogs/unreleased/31411-add-loading-indicator-when-connecting-to-error-tracking-server.yml
new file mode 100644
index 00000000000..7e62b9f90b4
--- /dev/null
+++ b/changelogs/unreleased/31411-add-loading-indicator-when-connecting-to-error-tracking-server.yml
@@ -0,0 +1,5 @@
+---
+title: Add loading icon to error tracking settings page
+merge_request: 19539
+author:
+type: changed
diff --git a/changelogs/unreleased/remove_local_qualifier_from_geo_sync_indicators.yml b/changelogs/unreleased/remove_local_qualifier_from_geo_sync_indicators.yml
new file mode 100644
index 00000000000..1ec7ace1740
--- /dev/null
+++ b/changelogs/unreleased/remove_local_qualifier_from_geo_sync_indicators.yml
@@ -0,0 +1,5 @@
+---
+title: Remove local qualifier from geo sync indicators
+merge_request: 20034
+author: Lee Tickett
+type: fixed
diff --git a/changelogs/unreleased/remove_unused_image_screenshot.yml b/changelogs/unreleased/remove_unused_image_screenshot.yml
new file mode 100644
index 00000000000..c24704bb6fe
--- /dev/null
+++ b/changelogs/unreleased/remove_unused_image_screenshot.yml
@@ -0,0 +1,5 @@
+---
+title: Remove unused image/screenshot
+merge_request: 20030
+author: Lee Tickett
+type: fixed
diff --git a/doc/README.md b/doc/README.md
index 098a998a093..ac64d8df83d 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -337,6 +337,7 @@ The following documentation relates to the DevOps **Monitor** stage:
| [Health check](user/admin_area/monitoring/health_check.md) | GitLab provides liveness and readiness probes to indicate service health and reachability to required services. |
| [Prometheus project integration](user/project/integrations/prometheus.md) | Configure the Prometheus integration per project and monitor your CI/CD environments. |
| [Prometheus metrics](user/project/integrations/prometheus_library/index.md) | Let Prometheus collect metrics from various services, like Kubernetes, NGINX, NGINX Ingress controller, HAProxy, and Amazon Cloud Watch. |
+| [Incident management](user/incident_management/index.md) | Use GitLab to help you better respond to incidents that may occur in your systems. |
<div align="right">
<a type="button" class="btn btn-default" href="#overview">
diff --git a/doc/administration/monitoring/prometheus/index.md b/doc/administration/monitoring/prometheus/index.md
index c35d6f505be..c0b563bd76e 100644
--- a/doc/administration/monitoring/prometheus/index.md
+++ b/doc/administration/monitoring/prometheus/index.md
@@ -78,6 +78,31 @@ To change the address/port that Prometheus listens on:
1. Save the file and [reconfigure GitLab][reconfigure] for the changes to
take effect
+### Adding custom scrape configs
+
+You can configure additional scrape targets for the GitLab Omnibus-bundled
+Prometheus by editing `prometheus['scrape_configs']` in `/etc/gitlab/gitlab.rb`
+using the [Prometheus scrape target configuration](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Cscrape_config%3E)
+syntax.
+
+Here is an example configuration to scrape `http://1.1.1.1:8060/probe?param_a=test&param_b=additional_test`:
+
+```ruby
+prometheus['scrape_configs'] = [
+ {
+ 'job_name': 'custom-scrape',
+ 'metrics_path': '/probe',
+ 'params' => {
+ 'param_a' => ['test'],
+ 'param_b' => ['additional_test']
+ },
+ 'static_configs' => [
+ 'targets' => ['1.1.1.1:8060'],
+ ],
+ },
+]
+```
+
### Using an external Prometheus server
NOTE: **Note:**
diff --git a/doc/user/group/epics/index.md b/doc/user/group/epics/index.md
index 0a51325b25c..0753df70bc2 100644
--- a/doc/user/group/epics/index.md
+++ b/doc/user/group/epics/index.md
@@ -141,6 +141,8 @@ have a [start or due date](#start-date-and-due-date), a
## Reordering issues and child epics
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/9367) in GitLab 12.5.
+
New issues and child epics are added to the top of their respective lists in the **Epics and Issues** tab. You can reorder the list of issues and the list of child epics. Issues and child epics cannot be intermingled.
To reorder issues assigned to an epic:
diff --git a/doc/user/incident_management/img/incident_management_settings.png b/doc/user/incident_management/img/incident_management_settings.png
new file mode 100644
index 00000000000..25ad4fd08b7
--- /dev/null
+++ b/doc/user/incident_management/img/incident_management_settings.png
Binary files differ
diff --git a/doc/user/incident_management/index.md b/doc/user/incident_management/index.md
new file mode 100644
index 00000000000..36c3d29f911
--- /dev/null
+++ b/doc/user/incident_management/index.md
@@ -0,0 +1,131 @@
+---
+description: "GitLab - Incident Management. GitLab offers solutions for handling incidents in your applications and services"
+---
+
+# Incident Management
+
+GitLab offers solutions for handling incidents in your applications and services,
+from setting up an alert with Prometheus, to receiving a notification via a
+monitoring tool like Slack, and automatically setting up Zoom calls with your
+support team.
+
+## Configuring incidents **(ULTIMATE)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4925) in GitLab Ultimate 11.11.
+
+The Incident Management features can be enabled and disabled via your project's
+**Settings > Operations > Incidents**.
+
+![Incident Management Settings](img/incident_management_settings.png)
+
+### Automatically create issues from alerts
+
+GitLab issues can automatically be created as a result of an alert notification.
+An issue created this way will contain the error information to help you further
+debug it.
+
+### Issue templates
+
+You can create your own [issue templates](../project/description_templates.md#creating-issue-templates)
+that can be [used within Incident Management](../project/integrations/prometheus.md#taking-action-on-incidents-ultimate).
+
+To select your issue template for use within Incident Management:
+
+1. Visit your project's **Settings > Operations > Incidents**.
+1. Select the template from the **Issue Template** dropdown.
+
+## Alerting
+
+GitLab can react to the alerts that your applications and services may be
+triggering by automatically creating issues, and alerting developers via email.
+
+### Prometheus alerts
+
+Prometheus alerts can be set up in both:
+
+- [GitLab-managed Prometheus](../project/integrations/prometheus.md#setting-up-alerts-for-prometheus-metrics-ultimate) and
+- [Self-managed Prometheus](../project/integrations/prometheus.md#external-prometheus-instances) installations.
+
+### Alert endpoint
+
+GitLab can accept alerts from any source via a generic webhook receiver. When
+you set up the generic alerts integration, a unique endpoint will
+be created which can receive a payload in JSON format.
+
+[Read more on setting this up, including how to customize the payload](../project/integrations/generic_alerts.md).
+
+### Recovery alerts
+
+GitLab can [automatically close issues](../project/integrations/prometheus.md#taking-action-on-incidents-ultimate)
+that have been automatically created when you receive notification that the
+alert is resolved.
+
+## Embedded metrics
+
+Metrics can be embedded anywhere where GitLab Markdown is used, for example,
+descriptions and comments on issues and merge requests.
+
+TIP: **Tip:**
+Both GitLab-hosted and Grafana metrics can also be
+[embedded in issue templates](../project/integrations/prometheus.md#embedding-metrics-in-issue-templates).
+
+### GitLab-hosted metrics
+
+Learn how to embed [GitLab hosted metric charts](../project/integrations/prometheus.md#embedding-metric-charts-within-gitlab-flavored-markdown).
+
+### Grafana metrics
+
+Learn how to embed [Grafana hosted metric charts](../project/integrations/prometheus.md#embedding-live-grafana-charts).
+
+## Slack integration
+
+Slack slash commands allow you to control GitLab and view content right inside
+Slack, without having to leave it.
+
+Learn how to [set up Slack slash commands](../project/integrations/slack_slash_commands.md)
+and how to [use them](../../integration/slash_commands.md).
+
+### Slash commands
+
+Please refer to a list of [available slash commands](../../integration/slash_commands.md) and associated descriptions.
+
+## Zoom in issues
+
+In order to communicate synchronously for incidents management, GitLab allows to
+associate a Zoom meeting with an issue. Once you start a Zoom call for a fire-fight,
+you need a way to associate the conference call with an issue, so that your team
+members can join swiftly without requesting a link.
+
+Read more how to [add or remove a zoom meeting](../project/issues/associate_zoom_meeting.md).
+
+### Alerting
+
+You can let GitLab know of alerts that may be triggering in your applications and services. GitLab can react to these by automatically creating Issues, and alerting developers via Email.
+
+#### Prometheus Alerts
+
+Prometheus alerts can be setup in both GitLab-managed Prometheus installs and self-managed Prometheus installs.
+
+Documentation for each method can be found here:
+
+- [GitLab-managed Prometheus](../project/integrations/prometheus.md#setting-up-alerts-for-prometheus-metrics-ultimate)
+- [Self-managed Prometheus](../project/integrations/prometheus.md#external-prometheus-instances)
+
+#### Alert Endpoint
+
+GitLab can accept alerts from any source via a generic webhook receiver. When you set up the generic alerts integration, a unique endpoint will
+be created which can receive a payload in JSON format.
+
+More information on setting this up, including how to customize the payload [can be found here](../project/integrations/generic_alerts.md).
+
+#### Recovery Alerts
+
+Coming soon: GitLab can automatically close Issues that have been automatically created when we receive notification that the alert is resolved.
+
+### Configuring Incidents
+
+Incident Management features can be easily enabled & disabled via the Project settings page. Head to Project -> Settings -> Operations -> Incidents.
+
+#### Auto-creation
+
+GitLab Issues can automatically be created as a result of an Alert notification. An Issue created this way will contain error information to help you further debug the error.
diff --git a/doc/user/project/integrations/img/embed_metrics_issue_template.png b/doc/user/project/integrations/img/embed_metrics_issue_template.png
new file mode 100644
index 00000000000..3c6a243e5c1
--- /dev/null
+++ b/doc/user/project/integrations/img/embed_metrics_issue_template.png
Binary files differ
diff --git a/doc/user/project/integrations/prometheus.md b/doc/user/project/integrations/prometheus.md
index d9d39897178..05cf79a8a62 100644
--- a/doc/user/project/integrations/prometheus.md
+++ b/doc/user/project/integrations/prometheus.md
@@ -403,9 +403,12 @@ receivers:
...
```
+In order for GitLab to associate your alerts with an [environment](../../../ci/environments.md), you need to configure a `gitlab_environment_name` label on the alerts you set up in Prometheus. The value of this should match the name of your Environment in GitLab.
+
### Taking action on incidents **(ULTIMATE)**
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4925) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.11.
+>- [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4925) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.11.
+>- [From GitLab Ultimate 12.5](https://gitlab.com/gitlab-org/gitlab/issues/13401), when GitLab receives a recovery alert, it will automatically close the associated issue.
Alerts can be used to trigger actions, like open an issue automatically (enabled by default since `12.1`). To configure the actions:
@@ -426,7 +429,7 @@ Once enabled, an issue will be opened automatically when an alert is triggered w
- Optional list of attached annotations extracted from `annotations/*`
- Alert [GFM](../../markdown.md): GitLab Flavored Markdown from `annotations/gitlab_incident_markdown`
-When GitLab recieves a **Recovery Alert**, it will automatically close the associated issue. This action will be recorded as a system message on the issue indicated that it was closed automatically by the GitLab Alert bot.
+When GitLab receives a **Recovery Alert**, it will automatically close the associated issue. This action will be recorded as a system message on the issue indicated that it was closed automatically by the GitLab Alert bot.
To further customize the issue, you can add labels, mentions, or any other supported [quick action](../quick_actions.md) in the selected issue template, which will apply to all incidents. To limit quick actions or other information to only specific types of alerts, use the `annotations/gitlab_incident_markdown` field.
@@ -487,6 +490,12 @@ The following requirements must be met for the metric to unfurl:
![Embedded Metrics](img/embed_metrics.png)
+### Embedding metrics in issue templates
+
+It is also possible to embed either a dashboard or individual metrics in issue templates. The entire dashboard can be embedded as well as individual metrics, separated by either a comma or a space.
+
+![Embedded Metrics in issue templates](img/embed_metrics_issue_template.png)
+
### Embedding live Grafana charts
It is also possible to embed live [Grafana](https://docs.gitlab.com/omnibus/settings/grafana.html) charts within issues, as a [Direct Linked Rendered Image](https://grafana.com/docs/reference/sharing/#direct-link-rendered-image).
diff --git a/doc/user/project/issues/associate_zoom_meeting.md b/doc/user/project/issues/associate_zoom_meeting.md
new file mode 100644
index 00000000000..24775204c9f
--- /dev/null
+++ b/doc/user/project/issues/associate_zoom_meeting.md
@@ -0,0 +1,42 @@
+# Associate a Zoom meeting with an issue
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/16609) in GitLab 12.4.
+
+In order to communicate synchronously for incidents management,
+GitLab allows to associate a Zoom meeting with an issue.
+Once you start a Zoom call for a fire-fight, you need a way to
+associate the conference call with an issue, so that your team
+members can join swiftly without requesting a link.
+
+## Adding a zoom meeting to an issue
+
+To associate a zoom meeting with an issue, you can use GitLab's
+[quick actions](../quick_actions.md#quick-actions-for-issues-merge-requests-and-epics).
+
+In an issue, leave a comment using the `/zoom` quick action followed by a valid Zoom link:
+
+```sh
+/zoom https://zoom.us/j/123456789
+```
+
+If the Zoom meeting URL is valid and you have at least [Reporter permissions](../../permissions.md),
+a system alert will notify you that the addition of the meeting URL was successful.
+The issue's description will be automatically edited to include the Zoom link, and a button will
+appear right under the issue's title.
+
+![Link Zoom Call in Issue](img/zoom-quickaction-button.png)
+
+You are only allowed to attach a single Zoom meeting to an issue. If you attempt
+to add a second Zoom meeting using the `/zoom` quick action, it won't work, you
+need to [remove it](#removing-an-existing-zoom-meeting-from-an-issue) first.
+
+## Removing an existing Zoom meeting from an issue
+
+Similarly to adding a zoom meeting, you can remove it with a quick action:
+
+```sh
+/remove_zoom
+```
+
+If you have at least [Reporter permissions](../../permissions.md),
+a system alert will notify you that the meeting URL was successfully removed.
diff --git a/doc/user/project/issues/img/select_all_designs_v12_4.png b/doc/user/project/issues/img/select_all_designs_v12_4.png
deleted file mode 100644
index b08b04c1214..00000000000
--- a/doc/user/project/issues/img/select_all_designs_v12_4.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/issues/img/zoom-quickaction-button.png b/doc/user/project/issues/img/zoom-quickaction-button.png
index d6d691b2267..c95a56b43e8 100644
--- a/doc/user/project/issues/img/zoom-quickaction-button.png
+++ b/doc/user/project/issues/img/zoom-quickaction-button.png
Binary files differ
diff --git a/doc/user/project/issues/issue_data_and_actions.md b/doc/user/project/issues/issue_data_and_actions.md
index f4e9434ef1a..92da4235afa 100644
--- a/doc/user/project/issues/issue_data_and_actions.md
+++ b/doc/user/project/issues/issue_data_and_actions.md
@@ -257,4 +257,4 @@ You can attach and remove Zoom meetings to issues using the `/zoom` and `/remove
Attaching a [Zoom](https://zoom.us) call an issue
results in a **Join Zoom meeting** button at the top of the issue, just under the header.
-![Link Zoom Call in Issue](img/zoom-quickaction-button.png)
+Read more how to [add or remove a zoom meeting](associate_zoom_meeting.md).
diff --git a/lib/gitlab/ci/templates/Android-Fastlane.gitlab-ci.yml b/lib/gitlab/ci/templates/Android-Fastlane.gitlab-ci.yml
index 4ec3bb15230..be584814271 100644
--- a/lib/gitlab/ci/templates/Android-Fastlane.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Android-Fastlane.gitlab-ci.yml
@@ -113,10 +113,9 @@ promoteBeta:
promoteProduction:
extends: .promote_job
stage: production
- # We only allow production promotion on the default branch because
+ # We only allow production promotion on `master` because
# it has its own production scoped secret variables
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
script:
- bundle exec fastlane promote_beta_to_production
diff --git a/lib/gitlab/ci/templates/Docker.gitlab-ci.yml b/lib/gitlab/ci/templates/Docker.gitlab-ci.yml
index 5160c05a251..15cdbf63cb1 100644
--- a/lib/gitlab/ci/templates/Docker.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Docker.gitlab-ci.yml
@@ -10,8 +10,7 @@ docker-build-master:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
docker-build:
# Official docker image.
@@ -25,5 +24,4 @@ docker-build:
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml b/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
index 416aa19e666..a95714d5684 100644
--- a/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
@@ -24,8 +24,9 @@ review:
- tags
kubernetes: active
except:
+ refs:
+ - master
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $REVIEW_DISABLED
stop_review:
@@ -47,8 +48,9 @@ stop_review:
- tags
kubernetes: active
except:
+ refs:
+ - master
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $REVIEW_DISABLED
# Staging deploys are disabled by default since
@@ -71,9 +73,10 @@ staging:
name: staging
url: http://$CI_PROJECT_PATH_SLUG-staging.$KUBE_INGRESS_BASE_DOMAIN
only:
+ refs:
+ - master
kubernetes: active
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $STAGING_ENABLED
# Canaries are disabled by default, but if you want them,
@@ -95,9 +98,10 @@ canary:
url: http://$CI_PROJECT_PATH_SLUG.$KUBE_INGRESS_BASE_DOMAIN
when: manual
only:
+ refs:
+ - master
kubernetes: active
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $CANARY_ENABLED
.production: &production_template
@@ -122,9 +126,9 @@ canary:
production:
<<: *production_template
only:
+ refs:
+ - master
kubernetes: active
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
except:
variables:
- $STAGING_ENABLED
@@ -137,9 +141,10 @@ production_manual:
when: manual
allow_failure: false
only:
+ refs:
+ - master
kubernetes: active
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $STAGING_ENABLED
- $CANARY_ENABLED
except:
@@ -147,7 +152,7 @@ production_manual:
- $INCREMENTAL_ROLLOUT_ENABLED
- $INCREMENTAL_ROLLOUT_MODE
-# This job implements incremental rollout for every push to the default branch.
+# This job implements incremental rollout on for every push to `master`.
.rollout: &rollout_template
extends: .auto-deploy
@@ -173,9 +178,10 @@ production_manual:
when: manual
# This selectors are backward compatible mode with $INCREMENTAL_ROLLOUT_ENABLED (before 11.4)
only:
+ refs:
+ - master
kubernetes: active
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $INCREMENTAL_ROLLOUT_MODE == "manual"
- $INCREMENTAL_ROLLOUT_ENABLED
except:
@@ -187,9 +193,10 @@ production_manual:
when: delayed
start_in: 5 minutes
only:
+ refs:
+ - master
kubernetes: active
variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
- $INCREMENTAL_ROLLOUT_MODE == "timed"
timed rollout 10%:
diff --git a/lib/gitlab/ci/templates/Julia.gitlab-ci.yml b/lib/gitlab/ci/templates/Julia.gitlab-ci.yml
index 56785f2017d..32d4e07d398 100644
--- a/lib/gitlab/ci/templates/Julia.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Julia.gitlab-ci.yml
@@ -64,8 +64,7 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
# WARNING: This template is using the `julia` images from [Docker
# Hub][3]. One can use custom Julia images and/or the official ones found
diff --git a/lib/gitlab/ci/templates/Maven.gitlab-ci.yml b/lib/gitlab/ci/templates/Maven.gitlab-ci.yml
index f6b69051bfa..84bb0ff3b33 100644
--- a/lib/gitlab/ci/templates/Maven.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Maven.gitlab-ci.yml
@@ -6,7 +6,7 @@
# This template will build and test your projects
# * Caches downloaded dependencies and plugins between invocation.
# * Verify but don't deploy merge requests.
-# * Deploy built artifacts from the default branch only.
+# * Deploy built artifacts from master branch only.
variables:
# This will suppress any download for dependencies and plugins or upload messages which would clutter the console log.
@@ -33,8 +33,7 @@ cache:
script:
- 'mvn $MAVEN_CLI_OPTS verify'
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
# Verify merge requests using JDK8
verify:jdk8:
@@ -43,7 +42,7 @@ verify:jdk8:
# To deploy packages from CI, create a ci_settings.xml file
# For deploying packages to GitLab's Maven Repository: See https://docs.gitlab.com/ee/user/project/packages/maven_repository.html#creating-maven-packages-with-gitlab-cicd for more details.
# Please note: The GitLab Maven Repository is currently only available in GitLab Premium / Ultimate.
-# For the default branch run `mvn deploy` automatically.
+# For `master` branch run `mvn deploy` automatically.
deploy:jdk8:
stage: deploy
script:
@@ -52,5 +51,4 @@ deploy:jdk8:
fi
- 'mvn $MAVEN_CLI_OPTS deploy -s ci_settings.xml'
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Mono.gitlab-ci.yml b/lib/gitlab/ci/templates/Mono.gitlab-ci.yml
index 9192f233eac..10fb6be6c39 100644
--- a/lib/gitlab/ci/templates/Mono.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Mono.gitlab-ci.yml
@@ -25,8 +25,7 @@ before_script:
release:
stage: deploy
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
artifacts:
paths:
- build/release/MyProject.exe
diff --git a/lib/gitlab/ci/templates/OpenShift.gitlab-ci.yml b/lib/gitlab/ci/templates/OpenShift.gitlab-ci.yml
index 91de258eb7c..65abee1f5eb 100644
--- a/lib/gitlab/ci/templates/OpenShift.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/OpenShift.gitlab-ci.yml
@@ -49,8 +49,7 @@ review:
only:
- branches
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
stop-review:
<<: *deploy
@@ -67,8 +66,7 @@ stop-review:
only:
- branches
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
staging:
<<: *deploy
@@ -80,8 +78,7 @@ staging:
name: staging
url: http://$CI_PROJECT_NAME-staging.$OPENSHIFT_DOMAIN
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
production:
<<: *deploy
@@ -94,5 +91,4 @@ production:
name: production
url: http://$CI_PROJECT_NAME.$OPENSHIFT_DOMAIN
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Packer.gitlab-ci.yml b/lib/gitlab/ci/templates/Packer.gitlab-ci.yml
index 28255eb893c..0a3cf3dcf77 100644
--- a/lib/gitlab/ci/templates/Packer.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Packer.gitlab-ci.yml
@@ -25,5 +25,4 @@ build:
- find . -maxdepth 1 -name '*.json' -print0 | xargs -t0n1 packer build
when: manual
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Brunch.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Brunch.gitlab-ci.yml
index 18778326029..d2dd3fbfb75 100644
--- a/lib/gitlab/ci/templates/Pages/Brunch.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Brunch.gitlab-ci.yml
@@ -12,5 +12,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Doxygen.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Doxygen.gitlab-ci.yml
index 920b2c7dbd0..ba422c08614 100644
--- a/lib/gitlab/ci/templates/Pages/Doxygen.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Doxygen.gitlab-ci.yml
@@ -10,5 +10,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml
index 87f70abe0be..a683561a455 100644
--- a/lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml
@@ -14,5 +14,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml
index 8aee121a2e9..92f25280c6e 100644
--- a/lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml
@@ -9,5 +9,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Harp.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Harp.gitlab-ci.yml
index a784e89a6ca..0e206423fa5 100644
--- a/lib/gitlab/ci/templates/Pages/Harp.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Harp.gitlab-ci.yml
@@ -12,5 +12,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Hexo.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Hexo.gitlab-ci.yml
index 0750bb2cd97..d91a8d7421f 100644
--- a/lib/gitlab/ci/templates/Pages/Hexo.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Hexo.gitlab-ci.yml
@@ -14,5 +14,4 @@ pages:
- node_modules
key: project
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml
index 45b06c040bd..9a3ecd1c34f 100644
--- a/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml
@@ -8,12 +8,10 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
test:
script:
- hugo
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Hyde.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Hyde.gitlab-ci.yml
index 6fadda88a30..7a441a2f70f 100644
--- a/lib/gitlab/ci/templates/Pages/Hyde.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Hyde.gitlab-ci.yml
@@ -11,8 +11,7 @@ test:
- pip install hyde
- hyde gen
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
pages:
stage: deploy
@@ -23,5 +22,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Jekyll.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Jekyll.gitlab-ci.yml
index ef0adfdfcf2..e7dacd3a1fc 100644
--- a/lib/gitlab/ci/templates/Pages/Jekyll.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Jekyll.gitlab-ci.yml
@@ -17,8 +17,7 @@ test:
paths:
- test
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
pages:
stage: deploy
@@ -28,5 +27,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Jigsaw.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Jigsaw.gitlab-ci.yml
index b53fcb3308a..2d26b86a328 100644
--- a/lib/gitlab/ci/templates/Pages/Jigsaw.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Jigsaw.gitlab-ci.yml
@@ -34,5 +34,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Lektor.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Lektor.gitlab-ci.yml
index 7fec535aedd..93ab8e0be0d 100644
--- a/lib/gitlab/ci/templates/Pages/Lektor.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Lektor.gitlab-ci.yml
@@ -9,5 +9,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Metalsmith.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Metalsmith.gitlab-ci.yml
index 7e661fc9858..6524405133a 100644
--- a/lib/gitlab/ci/templates/Pages/Metalsmith.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Metalsmith.gitlab-ci.yml
@@ -13,5 +13,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Middleman.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Middleman.gitlab-ci.yml
index cdd50485a81..57ac323dfdf 100644
--- a/lib/gitlab/ci/templates/Pages/Middleman.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Middleman.gitlab-ci.yml
@@ -12,8 +12,7 @@ test:
- bundle install --path vendor
- bundle exec middleman build
except:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
pages:
script:
@@ -25,5 +24,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Nanoc.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Nanoc.gitlab-ci.yml
index be1a2d0ff0a..7f037b5f5cf 100644
--- a/lib/gitlab/ci/templates/Pages/Nanoc.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Nanoc.gitlab-ci.yml
@@ -9,5 +9,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/Octopress.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/Octopress.gitlab-ci.yml
index 616f9a6c99b..6d912a89bc1 100644
--- a/lib/gitlab/ci/templates/Pages/Octopress.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/Octopress.gitlab-ci.yml
@@ -12,5 +12,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Pages/SwaggerUI.gitlab-ci.yml b/lib/gitlab/ci/templates/Pages/SwaggerUI.gitlab-ci.yml
index f3af9db3b42..8fd08ea7995 100644
--- a/lib/gitlab/ci/templates/Pages/SwaggerUI.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Pages/SwaggerUI.gitlab-ci.yml
@@ -26,5 +26,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Python.gitlab-ci.yml b/lib/gitlab/ci/templates/Python.gitlab-ci.yml
index 9f115c05802..00b8b94b574 100644
--- a/lib/gitlab/ci/templates/Python.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Python.gitlab-ci.yml
@@ -48,5 +48,4 @@ pages:
paths:
- public
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/ci/templates/Swift.gitlab-ci.yml b/lib/gitlab/ci/templates/Swift.gitlab-ci.yml
index f7b4552f8da..ffed7a0fec2 100644
--- a/lib/gitlab/ci/templates/Swift.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Swift.gitlab-ci.yml
@@ -22,8 +22,7 @@ archive_project:
- xcodebuild clean archive -archivePath build/ProjectName -scheme SchemeName
- xcodebuild -exportArchive -exportFormat ipa -archivePath "build/ProjectName.xcarchive" -exportPath "build/ProjectName.ipa" -exportProvisioningProfile "ProvisioningProfileName"
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
artifacts:
paths:
- build/ProjectName.ipa
diff --git a/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml b/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml
index 85c5104eaad..f374bc7e26a 100644
--- a/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml
+++ b/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml
@@ -53,5 +53,4 @@ apply:
- plan
when: manual
only:
- variables:
- - $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
+ - master
diff --git a/lib/gitlab/metrics/requests_rack_middleware.rb b/lib/gitlab/metrics/requests_rack_middleware.rb
index 085e28123a7..b57f9a19f8e 100644
--- a/lib/gitlab/metrics/requests_rack_middleware.rb
+++ b/lib/gitlab/metrics/requests_rack_middleware.rb
@@ -35,7 +35,7 @@ module Gitlab
def self.initialize_http_request_duration_seconds
HTTP_METHODS.each do |method, statuses|
statuses.each do |status|
- http_request_duration_seconds.get({ method: method, status: status.to_i })
+ http_request_duration_seconds.get({ method: method, status: status.to_s })
end
end
end
@@ -49,7 +49,7 @@ module Gitlab
status, headers, body = @app.call(env)
elapsed = Time.now.to_f - started
- RequestsRackMiddleware.http_request_duration_seconds.observe({ method: method, status: status }, elapsed)
+ RequestsRackMiddleware.http_request_duration_seconds.observe({ method: method, status: status.to_s }, elapsed)
[status, headers, body]
rescue
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 5365c1bab23..1e5a9ecf360 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -4452,6 +4452,9 @@ msgstr ""
msgid "Connect your external repositories, and CI/CD pipelines will run for new commits. A GitLab project will be created with only CI/CD features enabled."
msgstr ""
+msgid "Connecting"
+msgstr ""
+
msgid "Connecting to terminal sync service"
msgstr ""
@@ -7683,9 +7686,15 @@ msgstr ""
msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage."
msgstr ""
+msgid "GeoNodes|Attachments"
+msgstr ""
+
msgid "GeoNodes|Checksummed"
msgstr ""
+msgid "GeoNodes|Container repositories"
+msgstr ""
+
msgid "GeoNodes|Data is out of date from %{timeago}"
msgstr ""
@@ -7716,6 +7725,12 @@ msgstr ""
msgid "GeoNodes|Internal URL"
msgstr ""
+msgid "GeoNodes|Job artifacts"
+msgstr ""
+
+msgid "GeoNodes|LFS objects"
+msgstr ""
+
msgid "GeoNodes|Last event ID processed by cursor"
msgstr ""
@@ -7737,18 +7752,6 @@ msgstr ""
msgid "GeoNodes|Loading nodes"
msgstr ""
-msgid "GeoNodes|Local LFS objects"
-msgstr ""
-
-msgid "GeoNodes|Local attachments"
-msgstr ""
-
-msgid "GeoNodes|Local container repositories"
-msgstr ""
-
-msgid "GeoNodes|Local job artifacts"
-msgstr ""
-
msgid "GeoNodes|New node"
msgstr ""
diff --git a/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js b/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js
index feaf8fc6d0f..bff8ad0877a 100644
--- a/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js
+++ b/spec/frontend/error_tracking_settings/components/error_tracking_form_spec.js
@@ -1,6 +1,7 @@
import Vuex from 'vuex';
import { createLocalVue, shallowMount } from '@vue/test-utils';
-import { GlButton, GlFormInput } from '@gitlab/ui';
+import { GlFormInput } from '@gitlab/ui';
+import LoadingButton from '~/vue_shared/components/loading_button.vue';
import ErrorTrackingForm from '~/error_tracking_settings/components/error_tracking_form.vue';
import createStore from '~/error_tracking_settings/store';
import { defaultProps } from '../mock';
@@ -42,7 +43,7 @@ describe('error tracking settings form', () => {
.attributes('id'),
).toBe('error-tracking-token');
- expect(wrapper.findAll(GlButton).exists()).toBe(true);
+ expect(wrapper.findAll(LoadingButton).exists()).toBe(true);
});
it('is rendered with labels and placeholders', () => {
@@ -63,6 +64,18 @@ describe('error tracking settings form', () => {
});
});
+ describe('loading projects', () => {
+ beforeEach(() => {
+ store.state.isLoadingProjects = true;
+ });
+
+ it('shows loading spinner', () => {
+ const { label, loading } = wrapper.find(LoadingButton).props();
+ expect(loading).toBe(true);
+ expect(label).toBe('Connecting');
+ });
+ });
+
describe('after a successful connection', () => {
beforeEach(() => {
store.state.connectSuccessful = true;
diff --git a/spec/frontend/error_tracking_settings/store/actions_spec.js b/spec/frontend/error_tracking_settings/store/actions_spec.js
index 1eab0f7470b..e12c4e20f58 100644
--- a/spec/frontend/error_tracking_settings/store/actions_spec.js
+++ b/spec/frontend/error_tracking_settings/store/actions_spec.js
@@ -69,7 +69,14 @@ describe('error tracking settings actions', () => {
});
it('should request projects correctly', done => {
- testAction(actions.requestProjects, null, state, [{ type: types.RESET_CONNECT }], [], done);
+ testAction(
+ actions.requestProjects,
+ null,
+ state,
+ [{ type: types.SET_PROJECTS_LOADING, payload: true }, { type: types.RESET_CONNECT }],
+ [],
+ done,
+ );
});
it('should receive projects correctly', done => {
@@ -81,6 +88,7 @@ describe('error tracking settings actions', () => {
[
{ type: types.UPDATE_CONNECT_SUCCESS },
{ type: types.RECEIVE_PROJECTS, payload: testPayload },
+ { type: types.SET_PROJECTS_LOADING, payload: false },
],
[],
done,
@@ -93,7 +101,11 @@ describe('error tracking settings actions', () => {
actions.receiveProjectsError,
testPayload,
state,
- [{ type: types.UPDATE_CONNECT_ERROR }, { type: types.CLEAR_PROJECTS }],
+ [
+ { type: types.UPDATE_CONNECT_ERROR },
+ { type: types.CLEAR_PROJECTS },
+ { type: types.SET_PROJECTS_LOADING, payload: false },
+ ],
[],
done,
);
diff --git a/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb b/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb
index f48cd096a98..335670278c4 100644
--- a/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb
+++ b/spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb
@@ -31,7 +31,7 @@ describe Gitlab::Metrics::RequestsRackMiddleware do
end
it 'measures execution time' do
- expect(described_class).to receive_message_chain(:http_request_duration_seconds, :observe).with({ status: 200, method: 'get' }, a_positive_execution_time)
+ expect(described_class).to receive_message_chain(:http_request_duration_seconds, :observe).with({ status: '200', method: 'get' }, a_positive_execution_time)
Timecop.scale(3600) { subject.call(env) }
end
@@ -69,7 +69,7 @@ describe Gitlab::Metrics::RequestsRackMiddleware do
expected_labels = []
described_class::HTTP_METHODS.each do |method, statuses|
statuses.each do |status|
- expected_labels << { method: method, status: status.to_i }
+ expected_labels << { method: method, status: status.to_s }
end
end