diff options
-rw-r--r-- | .gitlab/ci/global.gitlab-ci.yml | 27 | ||||
-rw-r--r-- | app/assets/javascripts/jobs/components/table/cells/job_cell.vue | 4 | ||||
-rw-r--r-- | app/assets/javascripts/profile/preferences/components/profile_preferences.vue | 49 | ||||
-rw-r--r-- | app/assets/stylesheets/page_bundles/profiles/preferences.scss | 7 | ||||
-rw-r--r-- | app/assets/stylesheets/pages/settings.scss | 2 | ||||
-rw-r--r-- | app/assets/stylesheets/utilities.scss | 18 | ||||
-rw-r--r-- | app/views/profiles/preferences/show.html.haml | 277 | ||||
-rw-r--r-- | doc/development/pipelines/index.md | 4 | ||||
-rw-r--r-- | doc/user/analytics/analytics_dashboards.md | 129 | ||||
-rw-r--r-- | locale/gitlab.pot | 10 | ||||
-rwxr-xr-x | scripts/remote_development/run-smoke-test-suite.sh | 21 | ||||
-rw-r--r-- | spec/controllers/projects/settings/ci_cd_controller_spec.rb | 5 | ||||
-rw-r--r-- | spec/frontend/profile/preferences/components/profile_preferences_spec.js | 8 |
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(" ' ` ( [ { < * _).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(" ' ` ( [ { < * _).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); }); |