summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-24 06:09:16 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-24 06:09:16 +0000
commitf1d39f5bea74d84c38b4713f66cfcc9fdbcd1c57 (patch)
tree2c43f91d951a7465535d6e3b328a12e5f93aa1e1
parent93b0b77287acb1cf1a6a408b3a4e9587bedc9364 (diff)
downloadgitlab-ce-f1d39f5bea74d84c38b4713f66cfcc9fdbcd1c57.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/boards/components/board_add_new_column_trigger.vue4
-rw-r--r--app/assets/javascripts/boards/components/toggle_focus.vue3
-rw-r--r--app/assets/javascripts/droplab/drop_lab.js15
-rw-r--r--app/assets/javascripts/droplab/hook_button.js2
-rw-r--r--app/controllers/root_controller.rb5
-rw-r--r--app/helpers/user_callouts_helper.rb4
-rw-r--r--app/views/dashboard/projects/index.html.haml2
-rw-r--r--app/views/shared/doorkeeper/applications/_delete_form.html.haml2
-rw-r--r--app/views/shared/doorkeeper/applications/_index.html.haml2
-rw-r--r--changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml5
-rw-r--r--changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml5
-rw-r--r--changelogs/unreleased/btn-danger-apps.yml5
-rw-r--r--changelogs/unreleased/close-droplab-dropdowns-on-click.yml5
-rw-r--r--config/feature_flags/development/customize_homepage.yml8
-rw-r--r--doc/ci/pipelines/settings.md28
-rw-r--r--doc/development/sql.md9
-rw-r--r--doc/user/application_security/security_dashboard/index.md2
-rw-r--r--locale/gitlab.pot3
-rw-r--r--spec/controllers/root_controller_spec.rb20
-rw-r--r--spec/features/dashboard/projects_spec.rb19
-rw-r--r--spec/helpers/user_callouts_helper_spec.rb14
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml2
-rw-r--r--spec/views/dashboard/projects/index.html.haml_spec.rb28
23 files changed, 101 insertions, 91 deletions
diff --git a/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue b/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue
index 7c08e33be7e..85f001d9d61 100644
--- a/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue
+++ b/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue
@@ -13,9 +13,9 @@ export default {
</script>
<template>
- <span class="gl-ml-3 gl-display-flex gl-align-items-center" data-testid="boards-create-list">
+ <div class="gl-ml-3 gl-display-flex gl-align-items-center" data-testid="boards-create-list">
<gl-button variant="confirm" @click="setAddColumnFormVisibility(true)"
>{{ __('Create list') }}
</gl-button>
- </span>
+ </div>
</template>
diff --git a/app/assets/javascripts/boards/components/toggle_focus.vue b/app/assets/javascripts/boards/components/toggle_focus.vue
index 74805f8a681..dc0f8ffd0fd 100644
--- a/app/assets/javascripts/boards/components/toggle_focus.vue
+++ b/app/assets/javascripts/boards/components/toggle_focus.vue
@@ -38,10 +38,11 @@ export default {
</script>
<template>
- <div class="board-extra-actions gl-ml-3 gl-display-flex gl-align-items-center">
+ <div class="board-extra-actions gl-ml-3 gl-display-none gl-md-display-flex gl-align-items-center">
<gl-button
ref="toggleFocusModeButton"
v-gl-tooltip
+ category="tertiary"
:icon="isFullscreen ? 'minimize' : 'maximize'"
class="js-focus-mode-btn"
data-qa-selector="focus_mode_button"
diff --git a/app/assets/javascripts/droplab/drop_lab.js b/app/assets/javascripts/droplab/drop_lab.js
index 74fa6887ba5..6f068aaa800 100644
--- a/app/assets/javascripts/droplab/drop_lab.js
+++ b/app/assets/javascripts/droplab/drop_lab.js
@@ -60,21 +60,24 @@ class DropLab {
addEvents() {
this.eventWrapper.documentClicked = this.documentClicked.bind(this);
- document.addEventListener('mousedown', this.eventWrapper.documentClicked);
+ document.addEventListener('click', this.eventWrapper.documentClicked);
}
documentClicked(e) {
- let thisTag = e.target;
+ if (e.defaultPrevented) return;
- if (thisTag.tagName !== 'UL') thisTag = utils.closest(thisTag, 'UL');
- if (utils.isDropDownParts(thisTag, this.hooks)) return;
- if (utils.isDropDownParts(e.target, this.hooks)) return;
+ if (utils.isDropDownParts(e.target)) return;
+
+ if (e.target.tagName !== 'UL') {
+ const closestUl = utils.closest(e.target, 'UL');
+ if (utils.isDropDownParts(closestUl)) return;
+ }
this.hooks.forEach((hook) => hook.list.hide());
}
removeEvents() {
- document.removeEventListener('mousedown', this.eventWrapper.documentClicked);
+ document.removeEventListener('click', this.eventWrapper.documentClicked);
}
changeHookList(trigger, list, plugins, config) {
diff --git a/app/assets/javascripts/droplab/hook_button.js b/app/assets/javascripts/droplab/hook_button.js
index c58d0052251..c51d6167fa3 100644
--- a/app/assets/javascripts/droplab/hook_button.js
+++ b/app/assets/javascripts/droplab/hook_button.js
@@ -18,6 +18,8 @@ class HookButton extends Hook {
}
clicked(e) {
+ e.preventDefault();
+
const buttonEvent = new CustomEvent('click.dl', {
detail: {
hook: this,
diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb
index dab2f3bd67a..672a03ad11d 100644
--- a/app/controllers/root_controller.rb
+++ b/app/controllers/root_controller.rb
@@ -13,7 +13,6 @@ class RootController < Dashboard::ProjectsController
before_action :redirect_unlogged_user, if: -> { current_user.nil? }
before_action :redirect_logged_user, if: -> { current_user.present? }
- before_action :customize_homepage, only: :index, if: -> { current_user.present? }
# We only need to load the projects when the user is logged in but did not
# configure a dashboard. In which case we render projects. We can do that straight
# from the #index action.
@@ -69,10 +68,6 @@ class RootController < Dashboard::ProjectsController
root_urls.exclude?(home_page_url)
end
-
- def customize_homepage
- @customize_homepage = Feature.enabled?(:customize_homepage, default_enabled: :yaml)
- end
end
RootController.prepend_if_ee('EE::RootController')
diff --git a/app/helpers/user_callouts_helper.rb b/app/helpers/user_callouts_helper.rb
index 6a242d000ae..d1db624432b 100644
--- a/app/helpers/user_callouts_helper.rb
+++ b/app/helpers/user_callouts_helper.rb
@@ -49,8 +49,8 @@ module UserCalloutsHelper
!user_dismissed?(WEBHOOKS_MOVED)
end
- def show_customize_homepage_banner?(customize_homepage)
- customize_homepage && !user_dismissed?(CUSTOMIZE_HOMEPAGE)
+ def show_customize_homepage_banner?
+ !user_dismissed?(CUSTOMIZE_HOMEPAGE)
end
def show_feature_flags_new_version?
diff --git a/app/views/dashboard/projects/index.html.haml b/app/views/dashboard/projects/index.html.haml
index 1f4bd06aea4..c24d386c412 100644
--- a/app/views/dashboard/projects/index.html.haml
+++ b/app/views/dashboard/projects/index.html.haml
@@ -3,7 +3,7 @@
= content_for :meta_tags do
= auto_discovery_link_tag(:atom, dashboard_projects_url(rss_url_options), title: "All activity")
-- if show_customize_homepage_banner?(@customize_homepage)
+- if show_customize_homepage_banner?
= content_for :customize_homepage_banner do
.gl-display-none.gl-md-display-block{ class: "gl-pt-6! gl-pb-2! #{(container_class unless @no_container)} #{@content_class}" }
.js-customize-homepage-banner{ data: { svg_path: image_path('illustrations/monitoring/getting_started.svg'),
diff --git a/app/views/shared/doorkeeper/applications/_delete_form.html.haml b/app/views/shared/doorkeeper/applications/_delete_form.html.haml
index 172661a179a..caa553bc2ef 100644
--- a/app/views/shared/doorkeeper/applications/_delete_form.html.haml
+++ b/app/views/shared/doorkeeper/applications/_delete_form.html.haml
@@ -2,7 +2,7 @@
= form_tag path do
%input{ :name => "_method", :type => "hidden", :value => "delete" }
- if defined? small
- = button_tag type: "submit", class: "gl-button btn btn-default", data: { confirm: _("Are you sure?") } do
+ = button_tag type: "submit", class: "gl-button btn btn-danger btn-icon", data: { confirm: _("Are you sure?") } do
%span.sr-only
= _('Destroy')
= sprite_icon('remove')
diff --git a/app/views/shared/doorkeeper/applications/_index.html.haml b/app/views/shared/doorkeeper/applications/_index.html.haml
index 2365c52cf6a..8ccb4bcdbe0 100644
--- a/app/views/shared/doorkeeper/applications/_index.html.haml
+++ b/app/views/shared/doorkeeper/applications/_index.html.haml
@@ -43,7 +43,7 @@
%div= uri
%td= application.access_tokens.count
%td.gl-display-flex
- = link_to edit_application_url.call(application), class: "gl-button btn btn-default gl-mr-2" do
+ = link_to edit_application_url.call(application), class: "gl-button btn btn-default btn-icon gl-mr-3" do
%span.sr-only
= _('Edit')
= sprite_icon('pencil')
diff --git a/changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml b/changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml
new file mode 100644
index 00000000000..99463a4e3be
--- /dev/null
+++ b/changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml
@@ -0,0 +1,5 @@
+---
+title: Only display focus mode button at md+ breakpoint and make it the tertiary style
+merge_request: 57139
+author:
+type: other
diff --git a/changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml b/changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml
new file mode 100644
index 00000000000..17d4d90a8df
--- /dev/null
+++ b/changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml
@@ -0,0 +1,5 @@
+---
+title: Remove feature flag for customize homepage banner
+merge_request: 57147
+author:
+type: other
diff --git a/changelogs/unreleased/btn-danger-apps.yml b/changelogs/unreleased/btn-danger-apps.yml
new file mode 100644
index 00000000000..1da4ff43ff9
--- /dev/null
+++ b/changelogs/unreleased/btn-danger-apps.yml
@@ -0,0 +1,5 @@
+---
+title: Move to btn-danger for delete button in applications
+merge_request: 56088
+author: Yogi (@yo)
+type: changed
diff --git a/changelogs/unreleased/close-droplab-dropdowns-on-click.yml b/changelogs/unreleased/close-droplab-dropdowns-on-click.yml
new file mode 100644
index 00000000000..5091ec1a626
--- /dev/null
+++ b/changelogs/unreleased/close-droplab-dropdowns-on-click.yml
@@ -0,0 +1,5 @@
+---
+title: Close DropLab dropdowns on click instead of mousedown
+merge_request: 56847
+author: Simon Stieger @sim0
+type: fixed
diff --git a/config/feature_flags/development/customize_homepage.yml b/config/feature_flags/development/customize_homepage.yml
deleted file mode 100644
index 2be1d5ff8e3..00000000000
--- a/config/feature_flags/development/customize_homepage.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: customize_homepage
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/54357
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/299895
-milestone: '13.10'
-type: development
-group: group::expansion
-default_enabled: true
diff --git a/doc/ci/pipelines/settings.md b/doc/ci/pipelines/settings.md
index e607bae53bd..31e42a2cb68 100644
--- a/doc/ci/pipelines/settings.md
+++ b/doc/ci/pipelines/settings.md
@@ -137,21 +137,19 @@ averaged.
<!-- vale gitlab.Spelling = NO -->
-| Coverage Tool | Sample regular expression |
-|------------------------------------------------|-----------------------------------------------|
-| Simplecov (Ruby) | `\(\d+.\d+\%\) covered` |
-| pytest-cov (Python) | `^TOTAL.+?(\d+\%)$` |
-| Scoverage (Scala) | `Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)` |
-| `phpunit --coverage-text --colors=never` (PHP) | `^\s*Lines:\s*\d+.\d+\%` |
-| gcovr (C/C++) | `^TOTAL.*\s+(\d+\%)$` |
-| `tap --coverage-report=text-summary` (NodeJS) | `^Statements\s*:\s*([^%]+)` |
-| `nyc npm test` (NodeJS) | `All files[^|]*\|[^|]*\s+([\d\.]+)` |
-| excoveralls (Elixir) | `\[TOTAL\]\s+(\d+\.\d+)%` |
-| `mix test --cover` (Elixir) | `\d+.\d+\%\s+\|\s+Total` |
-| JaCoCo (Java/Kotlin) | `Total.*?([0-9]{1,3})%` |
-| `go test -cover` (Go) | `coverage: \d+.\d+% of statements` |
-| .Net (OpenCover) | `(Visited Points).*\((.*)\)` |
-| .Net (`dotnet test` line coverage) | `Total\s*\|\s*(\d+\.?\d+)` |
+- Simplecov (Ruby). Example: `\(\d+.\d+\%\) covered`.
+- pytest-cov (Python). Example: `^TOTAL.+?(\d+\%)$`.
+- Scoverage (Scala). Example: `Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)`.
+- `phpunit --coverage-text --colors=never` (PHP). Example: `^\s*Lines:\s*\d+.\d+\%`.
+- gcovr (C/C++). Example: `^TOTAL.*\s+(\d+\%)$`.
+- `tap --coverage-report=text-summary` (NodeJS). Example: `^Statements\s*:\s*([^%]+)`.
+- `nyc npm test` (NodeJS). Example: `All files[^|]*\|[^|]*\s+([\d\.]+)`.
+- excoveralls (Elixir). Example: `\[TOTAL\]\s+(\d+\.\d+)%`.
+- `mix test --cover` (Elixir). Example: `\d+.\d+\%\s+\|\s+Total`.
+- JaCoCo (Java/Kotlin). Example: `Total.*?([0-9]{1,3})%`.
+- `go test -cover` (Go). Example: `coverage: \d+.\d+% of statements`.
+- .Net (OpenCover). Example: `(Visited Points).*\((.*)\)`.
+- .Net (`dotnet test` line coverage). Example: `Total\s*\|\s*(\d+\.?\d+)`.
<!-- vale gitlab.Spelling = YES -->
diff --git a/doc/development/sql.md b/doc/development/sql.md
index 8726c1331e8..1053abf5c02 100644
--- a/doc/development/sql.md
+++ b/doc/development/sql.md
@@ -367,3 +367,12 @@ retries if it were to fail because of an
To be able to use this method, make sure the model you want to use
this on inherits from `ApplicationRecord`.
+
+## Monitor SQL queries in production
+
+GitLab team members can monitor slow or canceled queries on GitLab.com
+using the PostgreSQL logs, which are indexed in Elasticsearch and
+searchable using Kibana.
+
+See [the runbook](https://gitlab.com/gitlab-com/runbooks/-/blob/master/docs/patroni/pg_collect_query_data.md#searching-postgresql-logs-with-kibanaelasticsearch)
+for more details.
diff --git a/doc/user/application_security/security_dashboard/index.md b/doc/user/application_security/security_dashboard/index.md
index b8728a6ec29..0891b3bb8df 100644
--- a/doc/user/application_security/security_dashboard/index.md
+++ b/doc/user/application_security/security_dashboard/index.md
@@ -83,7 +83,7 @@ data up to 365 days. The chart's data is updated daily.
Filter the historical data by clicking on the corresponding legend name. The image above, for example, shows
only the graph for vulnerabilities with **high** severity.
-To zoom in, select the left-most icon, then select the desired rangeby dragging across the chart. Select **Remove Selection** (**{{redo}}**) to reset to the original date range.
+To zoom in, select the left-most icon, then select the desired rangeby dragging across the chart. Select **Remove Selection** (**{redo}**) to reset to the original date range.
To download an SVG image of the chart, select **Save chart to an image** (**{download}**).
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index b3cf6a8d5f9..cb7bdb7c1f5 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -14704,9 +14704,6 @@ msgstr ""
msgid "Group project URLs are prefixed with the group namespace"
msgstr ""
-msgid "Group push rule exists, try updating"
-msgstr ""
-
msgid "Group requires separate account"
msgstr ""
diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb
index 49841aa61d7..01ff646274a 100644
--- a/spec/controllers/root_controller_spec.rb
+++ b/spec/controllers/root_controller_spec.rb
@@ -134,26 +134,6 @@ RSpec.describe RootController do
expect(response).to render_template 'dashboard/projects/index'
end
-
- context 'when customize_homepage is enabled' do
- it 'renders the default dashboard' do
- get :index
-
- expect(assigns[:customize_homepage]).to be true
- end
- end
-
- context 'when customize_homepage is not enabled' do
- before do
- stub_feature_flags(customize_homepage: false)
- end
-
- it 'renders the default dashboard' do
- get :index
-
- expect(assigns[:customize_homepage]).to be false
- end
- end
end
end
end
diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb
index d7330b5267b..3080baa3173 100644
--- a/spec/features/dashboard/projects_spec.rb
+++ b/spec/features/dashboard/projects_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
RSpec.describe 'Dashboard Projects' do
- let(:user) { create(:user) }
- let(:project) { create(:project, :repository, name: 'awesome stuff') }
- let(:project2) { create(:project, :public, name: 'Community project') }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project, reload: true) { create(:project, :repository) }
+ let_it_be(:project2) { create(:project, :public) }
before do
project.add_developer(user)
@@ -18,17 +18,10 @@ RSpec.describe 'Dashboard Projects' do
end
end
- it 'shows the project the user in a member of in the list' do
- visit dashboard_projects_path
- expect(page).to have_content('awesome stuff')
- end
-
- it 'shows "New project" button' do
+ it 'shows the customize banner', :js do
visit dashboard_projects_path
- page.within '#content-body' do
- expect(page).to have_link('New project')
- end
+ expect(page).to have_content('Do you want to customize this page?')
end
context 'when user has access to the project' do
@@ -153,7 +146,7 @@ RSpec.describe 'Dashboard Projects' do
end
describe 'with a pipeline', :clean_gitlab_redis_shared_state do
- let(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.sha, ref: project.default_branch) }
+ let_it_be(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.sha, ref: project.default_branch) }
before do
# Since the cache isn't updated when a new pipeline is created
diff --git a/spec/helpers/user_callouts_helper_spec.rb b/spec/helpers/user_callouts_helper_spec.rb
index b6607182461..a2d9495ce6c 100644
--- a/spec/helpers/user_callouts_helper_spec.rb
+++ b/spec/helpers/user_callouts_helper_spec.rb
@@ -102,24 +102,14 @@ RSpec.describe UserCalloutsHelper do
end
describe '.show_customize_homepage_banner?' do
- let(:customize_homepage) { true }
-
- subject { helper.show_customize_homepage_banner?(customize_homepage) }
+ subject { helper.show_customize_homepage_banner? }
context 'when user has not dismissed' do
before do
allow(helper).to receive(:user_dismissed?).with(described_class::CUSTOMIZE_HOMEPAGE) { false }
end
- context 'when customize_homepage is set' do
- it { is_expected.to be true }
- end
-
- context 'when customize_homepage is false' do
- let(:customize_homepage) { false }
-
- it { is_expected.to be false }
- end
+ it { is_expected.to be true }
end
context 'when user dismissed' do
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index 37b43066a62..fbba31b1c2a 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -740,3 +740,5 @@ status_page_published_incident:
- issue
issuable_sla:
- issue
+push_rule:
+ - group
diff --git a/spec/views/dashboard/projects/index.html.haml_spec.rb b/spec/views/dashboard/projects/index.html.haml_spec.rb
new file mode 100644
index 00000000000..72b5901d5e5
--- /dev/null
+++ b/spec/views/dashboard/projects/index.html.haml_spec.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'dashboard/projects/index.html.haml' do
+ let_it_be(:user) { build(:user) }
+
+ before do
+ allow(view).to receive(:limited_counter_with_delimiter)
+ allow(view).to receive(:current_user).and_return(user)
+ allow(view).to receive(:project_list_cache_key)
+ allow(view).to receive(:time_ago_with_tooltip)
+ allow(view).to receive(:project_icon)
+ assign(:projects, [build(:project, name: 'awesome stuff')])
+ end
+
+ it 'shows the project the user is a member of in the list' do
+ render
+
+ expect(rendered).to have_content('awesome stuff')
+ end
+
+ it 'shows the "New project" button' do
+ render
+
+ expect(rendered).to have_link('New project')
+ end
+end