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:
-rw-r--r--.gitlab/ci/global.gitlab-ci.yml27
-rw-r--r--app/assets/javascripts/jobs/components/table/cells/job_cell.vue4
-rw-r--r--app/assets/javascripts/profile/preferences/components/profile_preferences.vue49
-rw-r--r--app/assets/stylesheets/page_bundles/profiles/preferences.scss7
-rw-r--r--app/assets/stylesheets/pages/settings.scss2
-rw-r--r--app/assets/stylesheets/utilities.scss18
-rw-r--r--app/views/profiles/preferences/show.html.haml277
-rw-r--r--doc/development/pipelines/index.md4
-rw-r--r--doc/user/analytics/analytics_dashboards.md129
-rw-r--r--locale/gitlab.pot10
-rwxr-xr-xscripts/remote_development/run-smoke-test-suite.sh21
-rw-r--r--spec/controllers/projects/settings/ci_cd_controller_spec.rb5
-rw-r--r--spec/frontend/profile/preferences/components/profile_preferences_spec.js8
13 files changed, 266 insertions, 295 deletions
diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml
index a2d6e04dcce..99f27f61b93 100644
--- a/.gitlab/ci/global.gitlab-ci.yml
+++ b/.gitlab/ci/global.gitlab-ci.yml
@@ -218,39 +218,48 @@
POSTGRES_HOST_AUTH_METHOD: trust
.db-services:
- services: &db-services
+ services:
- name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:postgres-${PG_VERSION}-pgvector-0.4.1
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off", "-c", "max_locks_per_transaction=256"]
alias: postgres
- name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:redis-cluster-6.2.12
alias: rediscluster # configure connections in config/redis.yml
+
+.db-services-with-redis-6:
+ services:
+ - !reference [.db-services, services]
- name: redis:6.2-alpine
+.db-services-with-redis-7:
+ services:
+ - !reference [.db-services, services]
+ - name: redis:7.0-alpine
+
.use-pg12:
extends:
- .pg-base-variables
- - .db-services
+ - .db-services-with-redis-6
variables:
PG_VERSION: "12"
.use-pg13:
extends:
- .pg-base-variables
- - .db-services
+ - .db-services-with-redis-6
variables:
PG_VERSION: "13"
.use-pg14:
extends:
- .pg-base-variables
- - .db-services
+ - .db-services-with-redis-6
variables:
PG_VERSION: "14"
.use-pg15:
extends:
- .pg-base-variables
- - .db-services
+ - .db-services-with-redis-7
variables:
PG_VERSION: "15"
@@ -269,7 +278,7 @@
- .pg-base-variables
- .zoekt-variables
services:
- - !reference [.db-services, services]
+ - !reference [.db-services-with-redis-6, services]
- !reference [.zoekt-services, services]
- name: elasticsearch:7.17.6
command: ["elasticsearch", "-E", "discovery.type=single-node", "-E", "xpack.security.enabled=false"]
@@ -299,7 +308,7 @@
- .pg-base-variables
- .zoekt-variables
services:
- - !reference [.db-services, services]
+ - !reference [.db-services-with-redis-6, services]
- !reference [.zoekt-services, services]
- name: elasticsearch:8.6.2
variables:
@@ -326,7 +335,7 @@
- .pg-base-variables
- .zoekt-variables
services:
- - !reference [.db-services, services]
+ - !reference [.db-services-with-redis-6, services]
- !reference [.zoekt-services, services]
- name: opensearchproject/opensearch:1.3.5
alias: elasticsearch
@@ -352,7 +361,7 @@
- .pg-base-variables
- .zoekt-variables
services:
- - !reference [.db-services, services]
+ - !reference [.db-services-with-redis-6, services]
- !reference [.zoekt-services, services]
- name: opensearchproject/opensearch:2.2.1
alias: elasticsearch
diff --git a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue
index b692553fdc2..27d286fc766 100644
--- a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue
+++ b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue
@@ -71,7 +71,7 @@ export default {
<template>
<div>
- <div class="gl-text-truncate">
+ <div class="gl-text-truncate gl-mb-2">
<gl-link
v-if="canReadJob"
class="gl-text-blue-600!"
@@ -92,7 +92,7 @@ export default {
/>
<div
- class="gl-display-flex gl-text-gray-700 gl-align-items-center gl-lg-justify-content-start gl-justify-content-end"
+ class="gl-display-flex gl-text-gray-700 gl-align-items-center gl-lg-justify-content-start gl-justify-content-end gl-mt-2"
>
<div
v-if="jobRef"
diff --git a/app/assets/javascripts/profile/preferences/components/profile_preferences.vue b/app/assets/javascripts/profile/preferences/components/profile_preferences.vue
index 4a68a8240ae..aa30192b74b 100644
--- a/app/assets/javascripts/profile/preferences/components/profile_preferences.vue
+++ b/app/assets/javascripts/profile/preferences/components/profile_preferences.vue
@@ -110,34 +110,33 @@ export default {
</script>
<template>
- <div class="row gl-mt-3 js-preferences-form js-search-settings-section">
- <div v-if="integrationViews.length" class="col-sm-12">
- <hr data-testid="profile-preferences-integrations-rule" />
- </div>
- <div v-if="integrationViews.length" class="col-lg-4">
- <h4 class="gl-mt-0" data-testid="profile-preferences-integrations-heading">
- {{ $options.i18n.integrations }}
- </h4>
- <p>
+ <div class="gl-display-contents js-preferences-form">
+ <div
+ v-if="integrationViews.length"
+ class="settings-section gl-border-t gl-pt-6! js-search-settings-section"
+ >
+ <div class="settings-sticky-header">
+ <div class="settings-sticky-header-inner">
+ <h4 class="gl-my-0" data-testid="profile-preferences-integrations-heading">
+ {{ $options.i18n.integrations }}
+ </h4>
+ </div>
+ </div>
+ <p class="gl-text-secondary">
{{ $options.i18n.integrationsDescription }}
</p>
+ <div>
+ <integration-view
+ v-for="view in integrationViews"
+ :key="view.name"
+ :help-link="view.help_link"
+ :message="view.message"
+ :message-url="view.message_url"
+ :config="$options.integrationViewConfigs[view.name]"
+ />
+ </div>
</div>
- <div v-if="integrationViews.length" class="col-lg-8">
- <integration-view
- v-for="view in integrationViews"
- :key="view.name"
- :help-link="view.help_link"
- :message="view.message"
- :message-url="view.message_url"
- :config="$options.integrationViewConfigs[view.name]"
- />
- </div>
-
- <div class="col-lg-4"></div>
- <div class="col-lg-8">
- <hr />
- </div>
- <div class="col-sm-12 js-hide-when-nothing-matches-search">
+ <div class="settings-sticky-footer js-hide-when-nothing-matches-search">
<gl-button
category="primary"
variant="confirm"
diff --git a/app/assets/stylesheets/page_bundles/profiles/preferences.scss b/app/assets/stylesheets/page_bundles/profiles/preferences.scss
index c9c78a70163..1a59f96c6ee 100644
--- a/app/assets/stylesheets/page_bundles/profiles/preferences.scss
+++ b/app/assets/stylesheets/page_bundles/profiles/preferences.scss
@@ -66,13 +66,8 @@
.syntax-theme {
label {
- margin-right: $gl-padding-32;
- margin-bottom: $gl-padding;
- text-align: center;
-
.preview {
- margin-bottom: 10px;
- width: 160px;
+ margin-bottom: 8px;
img {
border-radius: 4px;
diff --git a/app/assets/stylesheets/pages/settings.scss b/app/assets/stylesheets/pages/settings.scss
index 058cce9af36..f84b6b15afc 100644
--- a/app/assets/stylesheets/pages/settings.scss
+++ b/app/assets/stylesheets/pages/settings.scss
@@ -82,7 +82,7 @@
&::after {
content: '';
display: block;
- @include gl-pb-7;
+ @include gl-pb-5;
}
}
diff --git a/app/assets/stylesheets/utilities.scss b/app/assets/stylesheets/utilities.scss
index 3a99ae5d742..db9802eeefa 100644
--- a/app/assets/stylesheets/utilities.scss
+++ b/app/assets/stylesheets/utilities.scss
@@ -128,24 +128,6 @@
}
}
-.gl-md-w-15 {
- @include gl-media-breakpoint-up(md) {
- width: $gl-spacing-scale-15;
- }
-}
-
-.gl-md-w-20 {
- @include gl-media-breakpoint-up(md) {
- width: $gl-spacing-scale-20;
- }
-}
-
-.gl-md-w-30 {
- @include gl-media-breakpoint-up(md) {
- width: $gl-spacing-scale-30;
- }
-}
-
.gl-fill-orange-500 {
fill: $orange-500;
}
diff --git a/app/views/profiles/preferences/show.html.haml b/app/views/profiles/preferences/show.html.haml
index 4e2caaa8190..e5e7c1dc3f4 100644
--- a/app/views/profiles/preferences/show.html.haml
+++ b/app/views/profiles/preferences/show.html.haml
@@ -11,165 +11,152 @@
= stylesheet_link_tag "themes/#{theme.css_filename}" if theme.css_filename
= gitlab_ui_form_for @user, url: profile_preferences_path, remote: true, method: :put, html: { id: "profile-preferences-form" } do |f|
- .row.gl-mt-3.js-preferences-form.js-search-settings-section
- .col-lg-4.application-theme#navigation-theme
- %h4.gl-mt-0
- = s_('Preferences|Color theme')
+ .settings-section.js-preferences-form.js-search-settings-section.application-theme#navigation-theme
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = s_('Preferences|Color theme')
+ %p.gl-text-secondary
+ = s_('Preferences|Customize the color of GitLab.')
+ - if show_super_sidebar?
%p
- = s_('Preferences|Customize the color of GitLab.')
- - if show_super_sidebar?
- %p
- = s_('Preferences|Note: You have the new navigation enabled, so only Dark Mode theme significantly changes GitLab\'s appearance.')
- .col-lg-8.application-theme
- .row
- - Gitlab::Themes.each do |theme|
- %label.col-6.col-sm-4.col-md-3.gl-mb-5.gl-text-center
- .preview{ class: theme.css_class }
- = f.gitlab_ui_radio_component :theme_id, theme.id,
- theme.name,
- radio_options: { checked: user_theme_id == theme.id }
+ = s_('Preferences|Note: You have the new navigation enabled, so only Dark Mode theme significantly changes GitLab\'s appearance.')
+ .application-theme.row
+ - Gitlab::Themes.each do |theme|
+ %label.col-6.col-sm-4.col-md-3.col-xl-2.gl-mb-5
+ .preview{ class: theme.css_class }
+ = f.gitlab_ui_radio_component :theme_id, theme.id,
+ theme.name,
+ radio_options: { checked: user_theme_id == theme.id }
- .col-sm-12
- %hr
-
- .row.js-preferences-form.js-search-settings-section
- .col-lg-4#syntax-highlighting-theme
- %h4.gl-mt-0
- = s_('Preferences|Syntax highlighting theme')
- %p
- = s_('Preferences|Customize the appearance of the syntax.')
- = succeed '.' do
- = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'syntax-highlighting-theme'), target: '_blank', rel: 'noopener noreferrer'
- .col-lg-8.syntax-theme
+ .settings-section.js-preferences-form.js-search-settings-section#syntax-highlighting-theme
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = s_('Preferences|Syntax highlighting theme')
+ %p.gl-text-secondary
+ = s_('Preferences|Customize the appearance of the syntax.')
+ = succeed '.' do
+ = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'syntax-highlighting-theme'), target: '_blank', rel: 'noopener noreferrer'
+ .syntax-theme.row
- Gitlab::ColorSchemes.each do |scheme|
- = label_tag do
+ %label.col-6.col-sm-4.col-md-3.col-lg-auto.gl-mb-5
.preview= image_tag "#{scheme.css_class}-scheme-preview.png"
= f.gitlab_ui_radio_component :color_scheme_id, scheme.id,
- scheme.name,
- radio_options: { checked: user_color_schema_id == scheme.id }
+ scheme.name,
+ radio_options: { checked: user_color_schema_id == scheme.id }
- .col-sm-12
- %hr
+ .settings-section.js-preferences-form.js-search-settings-section#diffs-colors
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = s_('Preferences|Diff colors')
+ %p.gl-text-secondary
+ = s_('Preferences|Customize the colors of removed and added lines in diffs.')
+ .form-group
+ #js-profile-preferences-diffs-colors-app{ data: user_diffs_colors }
- .row.js-preferences-form.js-search-settings-section
- .col-lg-4#diffs-colors
- %h4.gl-mt-0
- = s_('Preferences|Diff colors')
- %p
- = s_('Preferences|Customize the colors of removed and added lines in diffs.')
- .col-lg-8
- .form-group
- #js-profile-preferences-diffs-colors-app{ data: user_diffs_colors }
+ .settings-section.js-preferences-form.js-search-settings-section#behavior
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = s_('Preferences|Behavior')
+ %p.gl-text-secondary
+ = s_('Preferences|Customize the behavior of the system layout and default views.')
+ = succeed '.' do
+ = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'behavior'), target: '_blank', rel: 'noopener noreferrer'
+ .form-group
+ = f.label :layout, class: 'label-bold' do
+ = s_('Preferences|Layout width')
+ = f.select :layout, layout_choices, {}, class: 'gl-form-select custom-select'
+ .form-text.text-muted
+ = s_('Preferences|Choose between fixed (max. 1280px) and fluid (%{percentage}) application layout.').html_safe % { percentage: '100%' }
+ .js-listbox-input{ data: { label: s_('Preferences|Homepage'), description: s_('Preferences|Choose what content you want to see by default on your homepage.'), name: 'user[dashboard]', items: dashboard_choices.to_json, value: current_user.dashboard, block: true.to_s, fluid_width: true.to_s } }
- .col-sm-12
- %hr
+ = render_if_exists 'profiles/preferences/group_overview_selector', f: f # EE-specific
- .row.js-preferences-form.js-search-settings-section
- .col-lg-4#behavior
- %h4.gl-mt-0
- = s_('Preferences|Behavior')
- %p
- = s_('Preferences|Customize the behavior of the system layout and default views.')
- = succeed '.' do
- = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'behavior'), target: '_blank', rel: 'noopener noreferrer'
- .col-lg-8
- .form-group
- = f.label :layout, class: 'label-bold' do
- = s_('Preferences|Layout width')
- = f.select :layout, layout_choices, {}, class: 'gl-form-select custom-select'
- .form-text.text-muted
- = s_('Preferences|Choose between fixed (max. 1280px) and fluid (%{percentage}) application layout.').html_safe % { percentage: '100%' }
- .js-listbox-input{ data: { label: s_('Preferences|Homepage'), description: s_('Preferences|Choose what content you want to see by default on your homepage.'), name: 'user[dashboard]', items: dashboard_choices.to_json, value: current_user.dashboard, block: true.to_s, fluid_width: true.to_s } }
+ .form-group
+ = f.label :project_view, class: 'label-bold' do
+ = s_('Preferences|Project overview content')
+ = f.select :project_view, project_view_choices, {}, class: 'gl-form-select custom-select'
+ .form-text.text-muted
+ = s_('Preferences|Choose what content you want to see on a project’s overview page.')
+ .form-group
+ = f.gitlab_ui_checkbox_component :project_shortcut_buttons, s_('Preferences|Show shortcut buttons above files on project overview')
+ .form-group
+ = f.gitlab_ui_checkbox_component :render_whitespace_in_code, s_('Preferences|Render whitespace characters in the Web IDE')
+ .form-group
+ = f.gitlab_ui_checkbox_component :show_whitespace_in_diffs, s_('Preferences|Show whitespace changes in diffs')
+ .form-group
+ = f.gitlab_ui_checkbox_component :view_diffs_file_by_file,
+ s_("Preferences|Show one file at a time on merge request's Changes tab"),
+ help_text: s_("Preferences|Instead of all the files changed, show only one file at a time. To switch between files, use the file browser.")
+ .form-group
+ - supported_characters = %w(" ' ` &#40; [ { < * _).map { |char| "<code>#{char}</code>" }.join(', ')
+ = f.gitlab_ui_checkbox_component :markdown_surround_selection,
+ s_('Preferences|Surround text selection when typing quotes or brackets'),
+ help_text: sprintf(s_("Preferences|When you type in a description or comment box, selected text is surrounded by the corresponding character after typing one of the following characters: %{supported_characters}."), { supported_characters: supported_characters }).html_safe
+ .form-group
+ = f.gitlab_ui_checkbox_component :markdown_automatic_lists,
+ s_('Preferences|Automatically add new list items'),
+ help_text: html_escape(s_('Preferences|When you type in a description or comment box, pressing %{kbdOpen}Enter%{kbdClose} in a list adds a new item below.')) % { kbdOpen: '<kbd>'.html_safe, kbdClose: '</kbd>'.html_safe }
- = render_if_exists 'profiles/preferences/group_overview_selector', f: f # EE-specific
+ .form-group
+ = f.label :tab_width, s_('Preferences|Tab width'), class: 'label-bold'
+ = f.number_field :tab_width,
+ class: 'form-control gl-form-input',
+ min: Gitlab::TabWidth::MIN,
+ max: Gitlab::TabWidth::MAX,
+ required: true
+ .form-text.text-muted
+ = s_('Preferences|Must be a number between %{min} and %{max}') % { min: Gitlab::TabWidth::MIN, max: Gitlab::TabWidth::MAX }
- .form-group
- = f.label :project_view, class: 'label-bold' do
- = s_('Preferences|Project overview content')
- = f.select :project_view, project_view_choices, {}, class: 'gl-form-select custom-select'
- .form-text.text-muted
- = s_('Preferences|Choose what content you want to see on a project’s overview page.')
- .form-group
- = f.gitlab_ui_checkbox_component :project_shortcut_buttons, s_('Preferences|Show shortcut buttons above files on project overview')
- .form-group
- = f.gitlab_ui_checkbox_component :render_whitespace_in_code, s_('Preferences|Render whitespace characters in the Web IDE')
- .form-group
- = f.gitlab_ui_checkbox_component :show_whitespace_in_diffs, s_('Preferences|Show whitespace changes in diffs')
- .form-group
- = f.gitlab_ui_checkbox_component :view_diffs_file_by_file,
- s_("Preferences|Show one file at a time on merge request's Changes tab"),
- help_text: s_("Preferences|Instead of all the files changed, show only one file at a time. To switch between files, use the file browser.")
- .form-group
- - supported_characters = %w(" ' ` &#40; [ { < * _).map { |char| "<code>#{char}</code>" }.join(', ')
- = f.gitlab_ui_checkbox_component :markdown_surround_selection,
- s_('Preferences|Surround text selection when typing quotes or brackets'),
- help_text: sprintf(s_("Preferences|When you type in a description or comment box, selected text is surrounded by the corresponding character after typing one of the following characters: %{supported_characters}."), { supported_characters: supported_characters }).html_safe
- .form-group
- = f.gitlab_ui_checkbox_component :markdown_automatic_lists,
- s_('Preferences|Automatically add new list items'),
- help_text: html_escape(s_('Preferences|When you type in a description or comment box, pressing %{kbdOpen}Enter%{kbdClose} in a list adds a new item below.')) % { kbdOpen: '<kbd>'.html_safe, kbdClose: '</kbd>'.html_safe }
+ .settings-section.js-preferences-form.js-search-settings-section#localization
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = _('Localization')
+ %p.gl-text-secondary
+ = _('Customize language and region related settings.')
+ = succeed '.' do
+ = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'localization'), target: '_blank', rel: 'noopener noreferrer'
+ .js-listbox-input{ data: { label: _('Language'), description: s_('Preferences|This feature is experimental and translations are not yet complete.'), name: 'user[preferred_language]', items: language_choices.to_json, value: current_user.preferred_language, block: true.to_s, fluid_width: true.to_s } }
+ %p.gl-mt-n5
+ = link_to help_page_url('development/i18n/translation'), class: 'text-nowrap', target: '_blank', rel: 'noopener noreferrer' do
+ = _("Help translate GitLab into your language")
+ %span{ aria: { label: _('Open new window') } }
+ = sprite_icon('external-link')
+ .form-group
+ = f.label :first_day_of_week, class: 'label-bold' do
+ = _('First day of the week')
+ = f.select :first_day_of_week, first_day_of_week_choices_with_default, {}, class: 'gl-form-select custom-select'
- .form-group
- = f.label :tab_width, s_('Preferences|Tab width'), class: 'label-bold'
- = f.number_field :tab_width,
- class: 'form-control gl-form-input',
- min: Gitlab::TabWidth::MIN,
- max: Gitlab::TabWidth::MAX,
- required: true
- .form-text.text-muted
- = s_('Preferences|Must be a number between %{min} and %{max}') % { min: Gitlab::TabWidth::MIN, max: Gitlab::TabWidth::MAX }
-
- .col-sm-12
- %hr
- .row.js-preferences-form.js-search-settings-section
- .col-lg-4#localization
- %h4.gl-mt-0
- = _('Localization')
- %p
- = _('Customize language and region related settings.')
- = succeed '.' do
- = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'localization'), target: '_blank', rel: 'noopener noreferrer'
- .col-lg-8
- .js-listbox-input{ data: { label: _('Language'), description: s_('Preferences|This feature is experimental and translations are not yet complete.'), name: 'user[preferred_language]', items: language_choices.to_json, value: current_user.preferred_language, block: true.to_s, fluid_width: true.to_s } }
- %p.gl-mt-n5
- = link_to help_page_url('development/i18n/translation'), class: 'text-nowrap', target: '_blank', rel: 'noopener noreferrer' do
- = _("Help translate GitLab into your language")
- %span{ aria: { label: _('Open new window') } }
- = sprite_icon('external-link')
- .form-group
- = f.label :first_day_of_week, class: 'label-bold' do
- = _('First day of the week')
- = f.select :first_day_of_week, first_day_of_week_choices_with_default, {}, class: 'gl-form-select custom-select'
- .col-sm-12
- %hr
- .row.js-preferences-form.js-search-settings-section
- .col-lg-4#time-preferences
- %h4.gl-mt-0
- = s_('Preferences|Time preferences')
- %p
- = s_('Preferences|Configure how dates and times display for you.')
+ .settings-section.js-preferences-form.js-search-settings-section#time-preferences
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = s_('Preferences|Time preferences')
+ %p.gl-text-secondary
+ = s_('Preferences|Configure how dates and times display for you.')
+ = succeed '.' do
+ = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'time-preferences'), target: '_blank', rel: 'noopener noreferrer'
+ .form-group
+ = f.gitlab_ui_checkbox_component :time_display_relative,
+ s_('Preferences|Use relative times'),
+ help_text: s_('Preferences|For example: 30 minutes ago.')
+ - if Feature.enabled?(:disable_follow_users, @user)
+ .settings-section.js-preferences-form.js-search-settings-section#enabled_following
+ .settings-sticky-header
+ .settings-sticky-header-inner
+ %h4.gl-my-0
+ = s_('Preferences|Enable follow users feature')
+ %p.gl-text-secondary
+ = s_('Preferences|Turns on or off the ability to follow or be followed by other users.')
= succeed '.' do
- = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'time-preferences'), target: '_blank', rel: 'noopener noreferrer'
- .col-lg-8
+ = link_to _('Learn more'), help_page_path('user/profile/index', anchor: 'follow-users'), target: '_blank', rel: 'noopener noreferrer'
.form-group
- = f.gitlab_ui_checkbox_component :time_display_relative,
- s_('Preferences|Use relative times'),
- help_text: s_('Preferences|For example: 30 minutes ago.')
- - if Feature.enabled?(:disable_follow_users, @user)
- .row.js-preferences-form.js-search-settings-section
- .col-sm-12
- %hr
- .col-lg-4#enabled_following
- %h4.gl-mt-0
- = s_('Preferences|Enable follow users feature')
- %p
- = s_('Preferences|Turns on or off the ability to follow or be followed by other users.')
- = succeed '.' do
- = link_to _('Learn more'), help_page_path('user/profile/index', anchor: 'follow-users'), target: '_blank', rel: 'noopener noreferrer'
- .col-lg-8
- .form-group
- = f.gitlab_ui_checkbox_component :enabled_following,
- s_('Preferences|Enable follow users')
+ = f.gitlab_ui_checkbox_component :enabled_following,
+ s_('Preferences|Enable follow users')
= render_if_exists 'profiles/preferences/code_suggestions_settings', form: f
= render_if_exists 'profiles/preferences/zoekt_settings', form: f
diff --git a/doc/development/pipelines/index.md b/doc/development/pipelines/index.md
index 5a9f706219c..fff64eef639 100644
--- a/doc/development/pipelines/index.md
+++ b/doc/development/pipelines/index.md
@@ -660,7 +660,7 @@ The token is stored in the `RUBY3_1_SYNC_TOKEN` variable in `gitlab-org/gitlab`.
Our test suite runs against Redis 6 as GitLab.com runs on Redis 6 and
[Omnibus defaults to Redis 6 for new installs and upgrades](https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/master/config/software/redis.rb).
-We do run our test suite against Redis 5 on `nightly` scheduled pipelines, specifically when running backward-compatible and forward-compatible PostgreSQL jobs.
+We do run our test suite against Redis 7 on `nightly` scheduled pipelines, specifically when running forward-compatible PostgreSQL 15 jobs.
#### Current versions testing
@@ -668,7 +668,7 @@ We do run our test suite against Redis 5 on `nightly` scheduled pipelines, speci
| ------ | ------------------ |
| MRs | 6 |
| `default branch` (non-scheduled pipelines) | 6 |
-| `nightly` scheduled pipelines | 5 |
+| `nightly` scheduled pipelines | 7 |
### Single database testing
diff --git a/doc/user/analytics/analytics_dashboards.md b/doc/user/analytics/analytics_dashboards.md
index 9a4acc94e09..e1d16ea1de8 100644
--- a/doc/user/analytics/analytics_dashboards.md
+++ b/doc/user/analytics/analytics_dashboards.md
@@ -32,7 +32,29 @@ The following data sources are configured for analytics dashboards:
- [Product analytics](../product_analytics/index.md)
-### View project dashboards
+## Dashboards designer
+
+> Introduced in GitLab 16.1 [with a flag](../../administration/feature_flags.md) named `combined_analytics_dashboards_editor`. Disabled by default.
+
+FLAG:
+On self-managed GitLab, by default this feature is not available. To make it available per project or for your entire instance, ask an administrator to [enable the feature flag](../../administration/feature_flags.md) named `combined_analytics_dashboards_editor`.
+On GitLab.com, this feature is not available.
+This feature is not ready for production use.
+
+NOTE:
+This feature does not work in conjunction with the `product_analytics_snowplow_support` feature flag.
+
+You can use the dashboards designer to:
+
+- Create custom dashboards
+- Rename custom dashboards
+- Add visualizations to new and existing custom dashboards
+- Resize or move panels within custom dashboards
+
+You cannot edit the built-in dashboards labeled as `By GitLab`.
+To edit these dashboards you should create a new custom dashboard which uses the same visualizations.
+
+## View project dashboards
To view a list of dashboards for a project:
@@ -40,7 +62,46 @@ To view a list of dashboards for a project:
1. Select **Analyze > Dashboards**.
1. From the list of available dashboards, select the dashboard you want to view.
-### Define a dashboard
+## Change the location of dashboards
+
+You can change the location of your project or group dashboards.
+
+### Group dashboards
+
+NOTE:
+This feature will be connected to group-level dashboards as part of [issue #411572](https://gitlab.com/gitlab-org/gitlab/-/issues/411572).
+
+To change the location of a group's dashboards:
+
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the project you want to store your dashboard files in.
+ The project must belong to the group for which you create the dashboards.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
+1. Select **Settings > General**.
+1. Expand **Analytics**.
+1. In the **Analytics Dashboards** section, select your dashboard files project.
+1. Select **Save changes**.
+
+### Project dashboards
+
+Dashboards are usually defined in the project where the analytics data is being retrieved from.
+However, you can also have a separate project for dashboards.
+This is recommended if you want to enforce specific access rules to the dashboard definitions or share dashboards across multiple projects.
+
+NOTE:
+You can share dashboards only between projects that are located in the same group.
+
+To change the location of project dashboards:
+
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project,
+ or select **Create new...** (**{plus}**) and **New project/repository**
+ to create the project to store your dashboard files.
+1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) and find the analytics project.
+1. Select **Settings > General**.
+1. Expand **Analytics**.
+1. In the **Analytics Dashboards** section, select your dashboard files project.
+1. Select **Save changes**.
+
+## Define a dashboard
To define a dashboard:
@@ -67,7 +128,7 @@ and one visualization (line chart) that applies to all dashboards, the file stru
│ └── example_line_chart.yaml
```
-### Define a chart visualization
+## Define a chart visualization
You can define different charts, and add visualization options to some of them:
@@ -91,65 +152,7 @@ create a `line_chart.yaml` file with the following required fields:
- data
- options
-### Change the location of project dashboards
-
-Dashboards are usually defined in the project where analytics data is being retrieved.
-However, you can also have a separate project for dashboards.
-This is recommended if you want to enforce specific access rules to the dashboard definitions or share dashboards across multiple projects.
-
-NOTE:
-You can share dashboards only between projects that are located in the same group.
-
-To change the location of project dashboards:
-
-1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project,
- or select **Create new** (**{plus}**) and **New project/repository**
- to create the project to store your dashboard files.
-1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) and find the project you want to use the dashboards for.
-1. Select **Settings > General**.
-1. Expand **Analytics**.
-1. In the **Analytics Dashboards** section, select the project that contains the dashboard files.
-1. Select **Save changes**.
-
-### Change the location of group dashboards
-
-NOTE:
-This feature will be connected to group-level dashboards in [issue 411572](https://gitlab.com/gitlab-org/gitlab/-/issues/411572).
-
-If you want to use dashboards for a group, you must store the dashboard files in a project that belongs to that group.
-You can change the source project of a group's dashboards at any time.
-
-To change the location of a group's dashboards:
-
-1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
-1. Select **Settings > General**.
-1. Expand **Analytics**.
-1. In the **Analytics Dashboards** section, select the project that contains the dashboard files.
-1. Select **Save changes**.
-
-## Dashboards designer
-
-> Introduced in GitLab 16.1 [with a flag](../../administration/feature_flags.md) named `combined_analytics_dashboards_editor`. Disabled by default.
-
-FLAG:
-On self-managed GitLab, by default this feature is not available. To make it available per project or for your entire instance, ask an administrator to [enable the feature flag](../../administration/feature_flags.md) named `combined_analytics_dashboards_editor`.
-On GitLab.com, this feature is not available.
-This feature is not ready for production use.
-
-NOTE:
-This feature does not work in conjunction with the `product_analytics_snowplow_support` feature flag.
-
-You can use the dashboards designer to:
-
-- Create custom dashboards
-- Rename custom dashboards
-- Add visualizations to new and existing custom dashboards
-- Resize or move panels within custom dashboards
-
-You cannot edit the built-in dashboards labeled as `By GitLab`.
-To edit these dashboards you should create a new custom dashboard which uses the same visualizations.
-
-### Create a custom dashboard
+## Create a custom dashboard
To create a custom dashboard:
@@ -161,7 +164,7 @@ To create a custom dashboard:
1. Optional. Drag or resize the selected panel how you prefer.
1. Select **Save**.
-### Edit a custom dashboard
+## Edit a custom dashboard
You can edit your custom dashboard's title and add or resize visualizations within the dashboard designer.
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 843be3bd080..858153947bd 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -11890,7 +11890,7 @@ msgstr ""
msgid "Component name '%{component}' must not start with '%{prefix}'"
msgstr ""
-msgid "Component type '%s' is not yet supported"
+msgid "Component type '%{type}' is not yet supported"
msgstr ""
msgid "Components must have a 'name'"
@@ -18280,7 +18280,7 @@ msgstr ""
msgid "Event tag (optional)"
msgstr ""
-msgid "Event type '%s' is not yet supported"
+msgid "Event type '%{type}' is not yet supported"
msgstr ""
msgid "EventFilterBy|Filter by all"
@@ -24836,7 +24836,7 @@ msgstr ""
msgid "Introducing Your DevOps Reports"
msgstr ""
-msgid "Invalid 'schemaVersion' '%s'"
+msgid "Invalid 'schemaVersion' '%{schema_version}'"
msgstr ""
msgid "Invalid Insights config file detected"
@@ -29748,7 +29748,7 @@ msgstr ""
msgid "Multiple Prometheus integrations are not supported"
msgstr ""
-msgid "Multiple components(%s) have 'gl/inject-editor' attribute"
+msgid "Multiple components '%{name}' have 'gl/inject-editor' attribute"
msgstr ""
msgid "Multiple integrations of a single type are not supported for this project"
@@ -37118,7 +37118,7 @@ msgstr ""
msgid "Prompt users to upload SSH keys"
msgstr ""
-msgid "Property 'dedicatedPod' of component '%s' is not yet supported"
+msgid "Property 'dedicatedPod' of component '%{name}' is not yet supported"
msgstr ""
msgid "Protect"
diff --git a/scripts/remote_development/run-smoke-test-suite.sh b/scripts/remote_development/run-smoke-test-suite.sh
index 0db57e04317..52e7546d47d 100755
--- a/scripts/remote_development/run-smoke-test-suite.sh
+++ b/scripts/remote_development/run-smoke-test-suite.sh
@@ -31,22 +31,27 @@ printf "${Color_Off}"
printf "${BBlue}Running Remote Development backend specs${Color_Off}\n\n"
-# NOTE: For some reason this test started causing the following spec file in the list to blow up with
-# "Failed to write to log, write log/workhorse-test.log: file already closed". Just removing
-# it for now.
-# ee/spec/graphql/api/workspace_spec.rb
-
bin/spring rspec -r spec_helper \
ee/spec/features/remote_development/workspaces_spec.rb \
ee/spec/finders/remote_development/workspaces_finder_spec.rb \
+ee/spec/graphql/api/workspace_spec.rb \
ee/spec/graphql/types/query_type_spec.rb \
ee/spec/graphql/types/remote_development/workspace_type_spec.rb \
ee/spec/graphql/types/subscription_type_spec.rb \
ee/spec/lib/remote_development/agent_config/main_integration_spec.rb \
ee/spec/lib/remote_development/unmatched_result_error_spec.rb \
-ee/spec/lib/remote_development/workspaces/create/create_processor_spec.rb \
-ee/spec/lib/remote_development/workspaces/create/devfile_processor_spec.rb \
-ee/spec/lib/remote_development/workspaces/create/devfile_validator_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/authorizer_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/creator_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/devfile_fetcher_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/devfile_flattener_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/editor_component_injector_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/main_integration_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/main_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/post_flatten_devfile_validator_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/pre_flatten_devfile_validator_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/project_cloner_component_injector_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/volume_component_injector_spec.rb \
+ee/spec/lib/remote_development/workspaces/create/volume_definer_spec.rb \
ee/spec/lib/remote_development/workspaces/reconcile/actual_state_calculator_spec.rb \
ee/spec/lib/remote_development/workspaces/reconcile/agent_info_parser_spec.rb \
ee/spec/lib/remote_development/workspaces/reconcile/agent_info_spec.rb \
diff --git a/spec/controllers/projects/settings/ci_cd_controller_spec.rb b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
index 1c332eadc42..a1dbd27f49a 100644
--- a/spec/controllers/projects/settings/ci_cd_controller_spec.rb
+++ b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
@@ -65,9 +65,8 @@ RSpec.describe Projects::Settings::CiCdController, feature_category: :continuous
end
context 'with group runners' do
- let_it_be(:group) { create :group }
- let_it_be(:project) { create :project, group: group }
- let_it_be(:group_runner) { create(:ci_runner, :group, groups: [group]) }
+ let(:project) { other_project }
+ let!(:group_runner) { create(:ci_runner, :group, groups: [group]) }
it 'sets group runners' do
subject
diff --git a/spec/frontend/profile/preferences/components/profile_preferences_spec.js b/spec/frontend/profile/preferences/components/profile_preferences_spec.js
index 21167dccda9..144d9e76869 100644
--- a/spec/frontend/profile/preferences/components/profile_preferences_spec.js
+++ b/spec/frontend/profile/preferences/components/profile_preferences_spec.js
@@ -47,10 +47,6 @@ describe('ProfilePreferences component', () => {
);
}
- function findIntegrationsDivider() {
- return wrapper.findByTestId('profile-preferences-integrations-rule');
- }
-
function findIntegrationsHeading() {
return wrapper.findByTestId('profile-preferences-integrations-heading');
}
@@ -86,21 +82,17 @@ describe('ProfilePreferences component', () => {
it('should not render Integrations section', () => {
wrapper = createComponent();
const views = wrapper.findAllComponents(IntegrationView);
- const divider = findIntegrationsDivider();
const heading = findIntegrationsHeading();
- expect(divider.exists()).toBe(false);
expect(heading.exists()).toBe(false);
expect(views).toHaveLength(0);
});
it('should render Integration section', () => {
wrapper = createComponent({ provide: { integrationViews } });
- const divider = findIntegrationsDivider();
const heading = findIntegrationsHeading();
const views = wrapper.findAllComponents(IntegrationView);
- expect(divider.exists()).toBe(true);
expect(heading.exists()).toBe(true);
expect(views).toHaveLength(integrationViews.length);
});