From 67049ac7aa4accb5a964975291ce5890e65c3110 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 26 Oct 2021 18:09:19 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop.yml | 18 ++ .../components/extensions/base.vue | 9 + .../components/extensions/index.js | 1 + .../extensions/issues.js | 1 + app/controllers/search_controller.rb | 1 + app/helpers/appearances_helper.rb | 4 +- app/services/search_service.rb | 4 + .../_protected_paths.html.haml | 20 +- .../application_settings/network.html.haml | 8 +- app/views/issues/_issues_calendar.ics.ruby | 3 + app/workers/emails_on_push_worker.rb | 15 +- bin/pngquant | 2 +- .../ops/product_analytics_tracking.yml | 8 - doc/.vale/gitlab/spelling-exceptions.txt | 1 + doc/administration/instance_limits.md | 14 +- doc/administration/logs.md | 1 - doc/api/settings.md | 8 +- .../documentation/styleguide/index.md | 53 ++++- .../documentation/styleguide/word_list.md | 17 ++ doc/install/openshift_and_gitlab/index.md | 46 +++- doc/integration/jira/index.md | 2 +- .../jira/jira_cloud_configuration.md | 15 +- doc/security/rack_attack.md | 196 +----------------- doc/security/rate_limits.md | 88 +++++++- .../admin_area/settings/protected_paths.md | 36 ++-- doc/user/application_security/index.md | 4 - .../vulnerabilities/index.md | 3 + .../img/group_vulnerability_report_v14_2.png | Bin 65346 -> 0 bytes ...oject_level_vulnerability_report_v14_5.png | Bin 0 -> 97387 bytes .../vulnerability_report/index.md | 11 +- doc/user/infrastructure/clusters/index.md | 18 +- doc/user/project/code_owners.md | 4 + doc/user/project/import/bitbucket.md | 20 +- doc/user/project/import/bitbucket_server.md | 26 +-- doc/user/project/import/gitea.md | 2 - .../bitbucket_server_import_credentials.png | Bin 13781 -> 0 bytes ...ket_server_import_select_project_v12_3.png | Bin 15839 -> 0 bytes .../import_projects_from_new_project_page.png | Bin 30489 -> 0 bytes .../repository/gpg_signed_commits/index.md | 5 +- lib/api/error_tracking/collector.rb | 10 +- lib/gitlab/ci/pipeline/chain/command.rb | 3 + lib/gitlab/database/migrations/observation.rb | 3 + lib/gitlab/health_checks/metric.rb | 3 + lib/gitlab/health_checks/probes/status.rb | 3 + lib/gitlab/health_checks/result.rb | 3 + lib/gitlab/middleware/release_env.rb | 3 + lib/gitlab/redis/hll.rb | 3 + lib/gitlab/search_results.rb | 5 + lib/gitlab/slash_commands/result.rb | 3 + lib/gitlab/template_parser/ast.rb | 3 + lib/gitlab/tracking.rb | 5 - .../destinations/product_analytics.rb | 41 ---- locale/gitlab.pot | 27 ++- .../{change_timzone.rb => change_timezone.rb} | 0 ...irst.rb => keys_first_and_values_first.rb} | 0 rubocop/rubocop.rb | 3 + scripts/docs_screenshots.rb | 2 +- .../vue_mr_widget/mr_widget_options_spec.js | 15 ++ spec/frontend/vue_mr_widget/test_extension.js | 1 + spec/lib/gitlab/search_results_spec.rb | 12 ++ .../destinations/product_analytics_spec.rb | 84 -------- spec/lib/gitlab/tracking_spec.rb | 2 - .../api/error_tracking/collector_spec.rb | 8 +- .../cop/gitlab/change_timezone_spec.rb | 2 +- spec/services/members/create_service_spec.rb | 3 +- spec/support/helpers/migrations_helpers.rb | 6 +- spec/support/stub_snowplow.rb | 2 - spec/workers/emails_on_push_worker_spec.rb | 37 ++++ tooling/lib/tooling/{images.rb => image.rb} | 0 69 files changed, 455 insertions(+), 501 deletions(-) delete mode 100644 config/feature_flags/ops/product_analytics_tracking.yml delete mode 100644 doc/user/application_security/vulnerability_report/img/group_vulnerability_report_v14_2.png create mode 100644 doc/user/application_security/vulnerability_report/img/project_level_vulnerability_report_v14_5.png delete mode 100644 doc/user/project/import/img/bitbucket_server_import_credentials.png delete mode 100644 doc/user/project/import/img/bitbucket_server_import_select_project_v12_3.png delete mode 100644 doc/user/project/import/img/import_projects_from_new_project_page.png delete mode 100644 lib/gitlab/tracking/destinations/product_analytics.rb rename rubocop/cop/gitlab/{change_timzone.rb => change_timezone.rb} (100%) rename rubocop/cop/gitlab/{keys-first-and-values-first.rb => keys_first_and_values_first.rb} (100%) delete mode 100644 spec/lib/gitlab/tracking/destinations/product_analytics_spec.rb rename tooling/lib/tooling/{images.rb => image.rb} (100%) diff --git a/.rubocop.yml b/.rubocop.yml index 59ac81bb4de..60012c1b96d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -130,6 +130,7 @@ Naming/FileName: - 'qa/spec/**/*' - 'qa/qa/specs/**/*' - 'qa/tasks/**/*.rake' + - '**/*.ru' IgnoreExecutableScripts: true AllowedAcronyms: @@ -151,6 +152,23 @@ Naming/FileName: - CI - CD - OAuth + - CSP + - CSV + - SCA + - SAN + - CIDR + - SPDX + - MR + - SSE + - JWT + - HLL + - VSCode + - GPG + - OTP + - GID + - AR + - RSpec + - Javascript # default ones: - CLI - DSL diff --git a/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue b/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue index ceed2249f3d..68a8dbba624 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/extensions/base.vue @@ -8,6 +8,8 @@ import { GlTooltipDirective, GlIntersectionObserver, } from '@gitlab/ui'; +import { once } from 'lodash'; +import api from '~/api'; import { sprintf, s__, __ } from '~/locale'; import SmartVirtualList from '~/vue_shared/components/smart_virtual_list.vue'; import { EXTENSION_ICON_CLASS } from '../../constants'; @@ -102,8 +104,15 @@ export default { }); }, methods: { + triggerRedisTracking: once(function triggerRedisTracking() { + if (this.$options.expandEvent) { + api.trackRedisHllUserEvent(this.$options.expandEvent); + } + }), toggleCollapsed() { this.isCollapsed = !this.isCollapsed; + + this.triggerRedisTracking(); }, loadAllData() { if (this.fullData) return; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/extensions/index.js b/app/assets/javascripts/vue_merge_request_widget/components/extensions/index.js index 4ca0b660696..ec6e6ed2620 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/extensions/index.js +++ b/app/assets/javascripts/vue_merge_request_widget/components/extensions/index.js @@ -12,6 +12,7 @@ export const registerExtension = (extension) => { name: extension.name, props: extension.props, i18n: extension.i18n, + expandEvent: extension.expandEvent, computed: { ...Object.keys(extension.computed).reduce( (acc, computedKey) => ({ diff --git a/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js b/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js index 349e9d29355..57117b6ae1f 100644 --- a/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js +++ b/app/assets/javascripts/vue_merge_request_widget/extensions/issues.js @@ -11,6 +11,7 @@ export default { label: 'Issues', loading: 'Loading issues...', }, + expandEvent: 'i_testing_load_performance_widget_total', // Add an array of props // These then get mapped to values stored in the MR Widget store props: ['targetProjectFullPath', 'conflictsDocsPath'], diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 0a18559fc81..ff52d76527e 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -46,6 +46,7 @@ class SearchController < ApplicationController @search_results = @search_service.search_results @search_objects = @search_service.search_objects @search_highlight = @search_service.search_highlight + @aggregations = @search_service.search_aggregations increment_search_counters end diff --git a/app/helpers/appearances_helper.rb b/app/helpers/appearances_helper.rb index 60e37c96f61..5ca360f38da 100644 --- a/app/helpers/appearances_helper.rb +++ b/app/helpers/appearances_helper.rb @@ -39,14 +39,14 @@ module AppearancesHelper if current_appearance&.header_logo? image_tag current_appearance.header_logo_path, class: 'brand-header-logo' else - render 'shared/logo.svg' + render partial: 'shared/logo', formats: :svg end end # Skip the 'GitLab' type logo when custom brand logo is set def brand_header_logo_type unless current_appearance&.header_logo? - render 'shared/logo_type.svg' + render partial: 'shared/logo_type', formats: :svg end end diff --git a/app/services/search_service.rb b/app/services/search_service.rb index cce7821a226..4ba1b3ade86 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -75,6 +75,10 @@ class SearchService search_results.highlight_map(scope) end + def search_aggregations + search_results.aggregations(scope) + end + private def page diff --git a/app/views/admin/application_settings/_protected_paths.html.haml b/app/views/admin/application_settings/_protected_paths.html.haml index 04b42f42014..d273c81f51d 100644 --- a/app/views/admin/application_settings/_protected_paths.html.haml +++ b/app/views/admin/application_settings/_protected_paths.html.haml @@ -2,30 +2,26 @@ = form_errors(@application_setting) %fieldset - - if omnibus_protected_paths_throttle? - .bs-callout.bs-callout-danger - - relative_url_link = 'https://docs.gitlab.com/ee/user/admin_area/settings/protected_paths.html#migrate-settings-from-gitlab-123-and-earlier' - - relative_url_link_start = ''.html_safe % { url: relative_url_link } - = _("Omnibus Protected Paths throttle is active, and takes priority over these settings. From 12.4, Omnibus throttle is deprecated and will be removed in a future release. Please read the %{relative_url_link_start}Migrating Protected Paths documentation%{relative_url_link_end}.").html_safe % { relative_url_link_start: relative_url_link_start, relative_url_link_end: ''.html_safe } - .form-group .form-check = f.check_box :throttle_protected_paths_enabled, class: 'form-check-input' = f.label :throttle_protected_paths_enabled, class: 'form-check-label' do - = _('Enable protected paths rate limit') + = _('Enable rate limiting for POST requests to the specified paths') %span.form-text.text-muted - = _('Helps reduce request volume for protected paths') + = _('Helps reduce request volume for protected paths.') .form-group - = f.label :throttle_protected_paths_requests_per_period, 'Max requests per period per user', class: 'label-bold' + = f.label :throttle_protected_paths_requests_per_period, 'Maximum requests per period per user', class: 'label-bold' = f.number_field :throttle_protected_paths_requests_per_period, class: 'form-control gl-form-input' .form-group - = f.label :throttle_protected_paths_period_in_seconds, 'Rate limit period in seconds', class: 'label-bold' + = f.label :throttle_protected_paths_period_in_seconds, 'Rate limit period (in seconds)', class: 'label-bold' = f.number_field :throttle_protected_paths_period_in_seconds, class: 'form-control gl-form-input' .form-group = f.label :protected_paths, class: 'label-bold' do + = _('Paths to protect with rate limiting') + = f.text_area :protected_paths_raw, placeholder: '/users/sign_in,/users/password', class: 'form-control gl-form-input', rows: 10 + %span.form-text.text-muted - relative_url_link = 'https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-a-relative-url-for-gitlab' - relative_url_link_start = ''.html_safe % { url: relative_url_link } - = _('All paths are relative to the GitLab URL. Do not include %{relative_url_link_start}relative URL%{relative_url_link_end}.').html_safe % { relative_url_link_start: relative_url_link_start, relative_url_link_end: ''.html_safe } - = f.text_area :protected_paths_raw, placeholder: '/users/sign_in,/users/password', class: 'form-control gl-form-input', rows: 10 + = _('All paths are relative to the GitLab URL. Do not include %{relative_url_link_start}relative URLs%{relative_url_link_end}.').html_safe % { relative_url_link_start: relative_url_link_start, relative_url_link_end: ''.html_safe } = f.submit _('Save changes'), class: 'gl-button btn btn-confirm' diff --git a/app/views/admin/application_settings/network.html.haml b/app/views/admin/application_settings/network.html.haml index 58e3f3f1136..3a053205725 100644 --- a/app/views/admin/application_settings/network.html.haml +++ b/app/views/admin/application_settings/network.html.haml @@ -87,14 +87,12 @@ %section.settings.as-protected-paths.no-animate#js-protected-paths-settings{ class: ('expanded' if expanded_by_default?) } .settings-header %h4 - = _('Protected Paths') + = _('Protected paths') %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p - = _('Configure paths to be protected by Rack Attack.') - .help-block - = _('These paths are protected for POST requests.') - = link_to _('More information'), help_page_path('security/rack_attack', anchor: 'protected-paths-throttle'), target: '_blank' + = _('Rate limit access to specified paths.') + = link_to _('Learn more.'), help_page_path('user/admin_area/settings/protected_paths.md'), target: '_blank', rel: 'noopener noreferrer' .settings-content = render 'protected_paths' diff --git a/app/views/issues/_issues_calendar.ics.ruby b/app/views/issues/_issues_calendar.ics.ruby index c21c4dac9f0..4b0be661aa5 100644 --- a/app/views/issues/_issues_calendar.ics.ruby +++ b/app/views/issues/_issues_calendar.ics.ruby @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true cal = Icalendar::Calendar.new @@ -17,3 +18,5 @@ end # rubocop: enable CodeReuse/ActiveRecord cal.to_ical + +# rubocop:enable Naming/FileName diff --git a/app/workers/emails_on_push_worker.rb b/app/workers/emails_on_push_worker.rb index 0230a226567..d7bd8207f06 100644 --- a/app/workers/emails_on_push_worker.rb +++ b/app/workers/emails_on_push_worker.rb @@ -87,13 +87,14 @@ class EmailsOnPushWorker # rubocop:disable Scalability/IdempotentWorker private def send_email(recipient, project_id, options) - # Generating the body of this email can be expensive, so only do it once - @skip_premailer ||= email.present? - @email ||= Notify.repository_push_email(project_id, options) + @email ||= Notify.repository_push_email(project_id, options).tap do |mail| + Premailer::Rails::Hook.perform(mail) + end - email.to = recipient - email.add_message_id - email.header[:skip_premailer] = true if skip_premailer - email.deliver_now + current_email = email.dup + current_email.to = recipient + current_email.add_message_id + current_email.header[:skip_premailer] = true + current_email.deliver_now end end diff --git a/bin/pngquant b/bin/pngquant index 8434e9d3ec9..a614814a8a3 100755 --- a/bin/pngquant +++ b/bin/pngquant @@ -5,7 +5,7 @@ require 'rails' require 'png_quantizator' require 'parallel' require 'rainbow/ext/string' -require_relative '../tooling/lib/tooling/images' +require_relative '../tooling/lib/tooling/image' return if Rails.env.production? diff --git a/config/feature_flags/ops/product_analytics_tracking.yml b/config/feature_flags/ops/product_analytics_tracking.yml deleted file mode 100644 index 5d392c4e4a7..00000000000 --- a/config/feature_flags/ops/product_analytics_tracking.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: product_analytics_tracking -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/46482 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/285519 -milestone: '13.7' -type: ops -group: group::product intelligence -default_enabled: false diff --git a/doc/.vale/gitlab/spelling-exceptions.txt b/doc/.vale/gitlab/spelling-exceptions.txt index 8c5eb5758bf..f1caf49e9aa 100644 --- a/doc/.vale/gitlab/spelling-exceptions.txt +++ b/doc/.vale/gitlab/spelling-exceptions.txt @@ -150,6 +150,7 @@ denormalized denormalizes denormalizing denylist +denylisted denylisting denylists deployer diff --git a/doc/administration/instance_limits.md b/doc/administration/instance_limits.md index 93b77b07ccb..4f9f08dab28 100644 --- a/doc/administration/instance_limits.md +++ b/doc/administration/instance_limits.md @@ -15,9 +15,7 @@ performance, data, or could even exhaust the allocated resources for the applica Rate limits can be used to improve the security and durability of GitLab. -For example, one script can make thousands of web requests per second. Whether malicious, apathetic, or just a bug, your application and infrastructure may not be able to cope with the load. Rate limits can help to mitigate these types of attacks. - -Read more about [configuring rate limits](../security/rate_limits.md) in the Security documentation. +Read more about [configuring rate limits](../security/rate_limits.md). ### Issue creation @@ -128,16 +126,6 @@ This setting limits the import/export actions for groups and projects. Read more about [import/export rate limits](../user/admin_area/settings/import_export_rate_limits.md). -### Rack attack - -This method of rate limiting is cumbersome, but has some advantages. It allows -throttling of specific paths, and is also integrated into Git and container -registry requests. - -Read more about the [Rack Attack initializer](../security/rack_attack.md) method of setting rate limits. - -- **Default rate limit**: Disabled. - ### Member Invitations Limit the maximum daily member invitations allowed per group hierarchy. diff --git a/doc/administration/logs.md b/doc/administration/logs.md index a9fd698a525..bf74a96a627 100644 --- a/doc/administration/logs.md +++ b/doc/administration/logs.md @@ -752,7 +752,6 @@ Depending on your installation method, this file is located at: This log records: -- Information whenever [Rack Attack](../security/rack_attack.md) registers an abusive request. - Requests over the [Rate Limit](../user/admin_area/settings/rate_limits_on_raw_endpoints.md) on raw endpoints. - [Protected paths](../user/admin_area/settings/protected_paths.md) abusive requests. - In GitLab versions [12.3](https://gitlab.com/gitlab-org/gitlab/-/issues/29239) and later, diff --git a/doc/api/settings.md b/doc/api/settings.md index 7b8778973f2..1ac8d8eda5f 100644 --- a/doc/api/settings.md +++ b/doc/api/settings.md @@ -411,11 +411,11 @@ listed in the descriptions of the relevant settings. | `terminal_max_session_time` | integer | no | Maximum time for web terminal websocket connection (in seconds). Set to `0` for unlimited time. | | `terms` | text | required by: `enforce_terms` | (**Required by:** `enforce_terms`) Markdown content for the ToS. | | `throttle_authenticated_api_enabled` | boolean | no | (**If enabled, requires:** `throttle_authenticated_api_period_in_seconds` and `throttle_authenticated_api_requests_per_period`) Enable authenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | -| `throttle_authenticated_api_period_in_seconds` | integer | required by:
`throttle_authenticated_api_enabled` | Rate limit period in seconds. | -| `throttle_authenticated_api_requests_per_period` | integer | required by:
`throttle_authenticated_api_enabled` | Max requests per period per user. | +| `throttle_authenticated_api_period_in_seconds` | integer | required by:
`throttle_authenticated_api_enabled` | Rate limit period (in seconds). | +| `throttle_authenticated_api_requests_per_period` | integer | required by:
`throttle_authenticated_api_enabled` | Maximum requests per period per user. | | `throttle_authenticated_web_enabled` | boolean | no | (**If enabled, requires:** `throttle_authenticated_web_period_in_seconds` and `throttle_authenticated_web_requests_per_period`) Enable authenticated web request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | -| `throttle_authenticated_web_period_in_seconds` | integer | required by:
`throttle_authenticated_web_enabled` | Rate limit period in seconds. | -| `throttle_authenticated_web_requests_per_period` | integer | required by:
`throttle_authenticated_web_enabled` | Max requests per period per user. | +| `throttle_authenticated_web_period_in_seconds` | integer | required by:
`throttle_authenticated_web_enabled` | Rate limit period (in seconds). | +| `throttle_authenticated_web_requests_per_period` | integer | required by:
`throttle_authenticated_web_enabled` | Maximum requests per period per user. | | `throttle_unauthenticated_enabled` | boolean | no | ([Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/335300) in GitLab 14.3. Use `throttle_unauthenticated_web_enabled` or `throttle_unauthenticated_api_enabled` instead.) (**If enabled, requires:** `throttle_unauthenticated_period_in_seconds` and `throttle_unauthenticated_requests_per_period`) Enable unauthenticated web request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | | `throttle_unauthenticated_period_in_seconds` | integer | required by:
`throttle_unauthenticated_enabled` | ([Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/335300) in GitLab 14.3. Use `throttle_unauthenticated_web_period_in_seconds` or `throttle_unauthenticated_api_period_in_seconds` instead.) Rate limit period in seconds. | | `throttle_unauthenticated_requests_per_period` | integer | required by:
`throttle_unauthenticated_enabled` | ([Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/335300) in GitLab 14.3. Use `throttle_unauthenticated_web_requests_per_period` or `throttle_unauthenticated_api_requests_per_period` instead.) Max requests per period per IP. | diff --git a/doc/development/documentation/styleguide/index.md b/doc/development/documentation/styleguide/index.md index 72491ab3a33..88f6227b487 100644 --- a/doc/development/documentation/styleguide/index.md +++ b/doc/development/documentation/styleguide/index.md @@ -1026,18 +1026,13 @@ document to ensure it links to the most recent version of the file. When documenting how to navigate through the GitLab UI: - Always use location, then action. - - `From the **Visibility** list,` (location) `select **Public**.` (action) + - From the **Visibility** dropdown list (location), select **Public** (action). - Be brief and specific. For example: - - Avoid: `Select **Save** for the changes to take effect.` - - Use instead: `Select **Save**.` -- When selecting from high-level UI elements, use the word **on**. - - Avoid: `From the left sidebar...` or `In the left sidebar...` - - Use instead: `On the left sidebar...` -- If a step must include a reason, start the step with it. - - Avoid: `Select the link in the merge request to view the changes.` - - Use instead: `To view the changes, select the link in the merge request.` -- If a step is optional, start the step with the word `Optional` followed by a period. - - `1. Optional. Enter a name for the dog.` + - Do: Select **Save**. + - Do not: Select **Save** for the changes to take effect. +- If a step must include a reason, start the step with it. This helps the user scan more quickly. + - Do: To view the changes, in the merge request, select the link. + - Do not: Select the link in the merge request to view the changes. ### Names for menus @@ -1082,6 +1077,42 @@ To select your avatar: 1. On the top bar, in the top right corner, select your avatar. ``` +### Optional steps + +If a step is optional, start the step with the word `Optional` followed by a period. + +For example: + +```markdown +1. Optional. Enter a description for the job. +``` + +### Documenting multiple fields at once + +If the UI text sufficiently explains the fields in a section, do not include a task step for every field. +Instead, summarize multiple fields in a single task step. + +Use the phrase **Complete the fields**. + +For example: + +1. On the top bar, select **Menu > Projects** and find your project. +1. On the left sidebar, select **Settings > Repository**. +1. Expand **Push rules**. +1. Complete the fields. + +If you are documenting multiple fields and only one field needs explanation, do it in the same step: + +1. Expand **Push rules**. +1. Complete the fields. **Branch name** must be a regular expression. + +To describe multiple fields, use bullets: + +1. Expand **General pipelines**. +1. Complete the fields. + - **Branch name** must be a regular expression. + - **User** must be a user with at least the **Maintainer** role. + ## Images Images, including screenshots, can help a reader better understand a concept. diff --git a/doc/development/documentation/styleguide/word_list.md b/doc/development/documentation/styleguide/word_list.md index 30d93de5134..2e7ebf4366f 100644 --- a/doc/development/documentation/styleguide/word_list.md +++ b/doc/development/documentation/styleguide/word_list.md @@ -259,6 +259,16 @@ Use **box** instead of **field** or **text box**. - Do: In the **Variable name** box, enter `my text`. - Do not: In the **Variable name** field, enter `my text`. +However, you can make an exception when you are writing a task and you need to refer to all +of the fields at once. For example: + +1. On the top bar, select **Menu > Projects** and find your project. +1. On the left sidebar, select **Settings > CI/CD**. +1. Expand **General pipelines**. +1. Complete the fields. + +Learn more about [documenting multiple fields at once](index.md#documenting-multiple-fields-at-once). + ## foo Do not use **foo** in product documentation. You can use it in our API and contributor documentation, but try to use a clearer and more meaningful example instead. @@ -454,6 +464,13 @@ Do not use **note that** because it's wordy. - Do: You can change the settings. - Do not: Note that you can change the settings. +## on + +When documenting how to select high-level UI elements, use the word **on**. + +- Do: `On the left sidebar...` +- Do not: `From the left sidebar...` or `In the left sidebar...` + ## once The word **once** means **one time**. Don't use it to mean **after** or **when**. diff --git a/doc/install/openshift_and_gitlab/index.md b/doc/install/openshift_and_gitlab/index.md index 3b7ea5c1975..f74e9f26362 100644 --- a/doc/install/openshift_and_gitlab/index.md +++ b/doc/install/openshift_and_gitlab/index.md @@ -1,9 +1,45 @@ --- -redirect_to: 'https://docs.gitlab.com/charts/installation/operator.html' -remove_date: '2022-09-22' +stage: Enablement +group: Distribution +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments --- -This file was moved to [another location](https://docs.gitlab.com/charts/installation/operator.html). +# OpenShift support - - +OpenShift - GitLab compatibility can be addressed in three different aspects. This page helps navigating between these aspects and provides introductory information for getting started with OpenShift and GitLab. + +## What is OpenShift + +OpenShift helps you to develop, deploy, and manage container-based applications. It provides you with a self-service platform to create, modify, and deploy applications on demand, thus enabling faster development and release life cycles. + +## Use OpenShift to run GitLab Self-Managed + +Running GitLab within an OpenShift cluster is officially supported using the GitLab Operator. You can learn more on +[setting up GitLab on OpenShift on the GitLab Operator's documentation](https://docs.gitlab.com/charts/installation/operator.html). +Some components (documented on the GitLab Operator doc) are not supported yet. + +## Deploy to and integrate with OpenShift from GitLab + +Deploying custom or COTS applications on top of OpenShift from GitLab is supported using [the GitLab Kubernetes Agent](../../user/clusters/agent/index.md). + +## Use OpenShift to run a GitLab Runner Fleet + +The GitLab Operator does not include the GitLab Runner. To install and manage a GitLab Runner fleet in an OpenShift cluster, use the +[GitLab Runner Operator](https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator). + +## Unsupported GitLab features + +### Docker-in-Docker + +When using OpenShift to run a GitLab Runner Fleet, we do not support some GitLab features given OpenShift's security model. +Features requiring Docker-in-Docker might not work. + +For Auto DevOps, the following features are not supported yet: + +- Auto Code Quality +- Auto License Compliance +- Auto Browser Performance Testing +- Auto Build + +For Auto Build, there's a [possible workaround using `kaniko`](../../ci/docker/using_kaniko.md). +You can check the progress of the implementation in this [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/332560). diff --git a/doc/integration/jira/index.md b/doc/integration/jira/index.md index f5f7e8c33fc..e3214ec26fe 100644 --- a/doc/integration/jira/index.md +++ b/doc/integration/jira/index.md @@ -63,7 +63,7 @@ The process for configuring Jira depends on whether you host Jira on your own se how to [set up a user in Jira Server](jira_server_configuration.md). - **Jira on Atlassian cloud** supports authentication through an API token. When connecting to Jira on Atlassian cloud, an email and API token are required. For more information, read - [set up a user in Jira on Atlassian cloud](jira_cloud_configuration.md). + [create an API token for Jira in Atlassian cloud](jira_cloud_configuration.md). ## Privacy considerations diff --git a/doc/integration/jira/jira_cloud_configuration.md b/doc/integration/jira/jira_cloud_configuration.md index 0cfffdb8ba4..08cd34860ff 100644 --- a/doc/integration/jira/jira_cloud_configuration.md +++ b/doc/integration/jira/jira_cloud_configuration.md @@ -4,18 +4,19 @@ group: Integrations info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments --- -# Create an API token in Jira on Atlassian cloud **(FREE)** +# Create an API token for Jira in Atlassian cloud **(FREE)** You need an API token to [integrate with Jira](index.md) on Atlassian cloud. To create the API token: -1. Sign in to [`id.atlassian.com`](https://id.atlassian.com/manage-profile/security/api-tokens) - with your email address. Use an account with *write* access to Jira projects. -1. Go to **Settings > Atlassian account settings > Security > Create and manage API tokens**. -1. Select **Create API token** to display a modal window with an API token. +1. Sign in to [Atlassian](https://id.atlassian.com/manage-profile/security/api-tokens) + using an account with *write* access to Jira projects. + + The link opens the API tokens page. Alternatively, to go to this page from your Atlassian + profile, select **Account Settings > Security > Create and manage API tokens**. +1. Select **Create API token**. 1. In the dialog, enter a label for your token and select **Create**. -1. To copy the API token, select **Copy**, then paste the token somewhere safe. You need this value when you - [configure GitLab](configure.md). +1. To copy the API token, select **Copy**, then paste the token somewhere safe. You need the newly created token, and the email address you used when you created it, when you diff --git a/doc/security/rack_attack.md b/doc/security/rack_attack.md index b0bebc5a956..a8b55007d2e 100644 --- a/doc/security/rack_attack.md +++ b/doc/security/rack_attack.md @@ -1,195 +1,9 @@ --- -stage: Manage -group: Access -info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments -type: reference, howto +redirect_to: '../user/admin_area/settings/protected_paths.md' +remove_date: '2022-01-14' --- -# Rack Attack initializer **(FREE SELF)** +This document was moved to [another location](../user/admin_area/settings/protected_paths.md). -[Rack Attack](https://github.com/kickstarter/rack-attack), also known as Rack::Attack, is a Ruby gem -that is meant to protect GitLab with the ability to customize throttling and -to block user IP addresses. - -You can prevent brute-force passwords attacks, scrapers, or any other offenders -by throttling requests from IP addresses that are making large volumes of requests. -If you find throttling is not enough to protect you against abusive clients, -Rack Attack offers IP whitelisting, blacklisting, Fail2ban style filtering, and -tracking. - -For more information on how to use these options see the [Rack Attack README](https://github.com/kickstarter/rack-attack/blob/master/README.md). - -NOTE: -See -[User and IP rate limits](../user/admin_area/settings/user_and_ip_rate_limits.md) -for simpler limits that are configured in the UI. - -NOTE: -Starting with GitLab 11.2, Rack Attack is disabled by default. If your -instance is not exposed to the public internet, it is recommended that you leave -Rack Attack disabled. - -## Behavior - -If set up as described in the [Settings](#settings) section below, two behaviors -are enabled: - -- Protected paths are throttled. -- Failed authentications for Git and container registry requests trigger a temporary IP ban. - -### Protected paths throttle - -GitLab responds with HTTP status code `429` to POST requests at protected paths -that exceed 10 requests per minute per IP address. - -By default, protected paths are: - -- `/users/password` -- `/users/sign_in` -- `/api/#{API::API.version}/session.json` -- `/api/#{API::API.version}/session` -- `/users` -- `/users/confirmation` -- `/unsubscribes/` -- `/import/github/personal_access_token` -- `/admin/session` - -See [User and IP rate limits](../user/admin_area/settings/user_and_ip_rate_limits.md#response-headers) for the headers responded to blocked requests. - -For example, the following are limited to a maximum 10 requests per minute: - -- User sign-in -- User sign-up (if enabled) -- User password reset - -After 10 requests, the client must wait a minute before it can -try again. - -### Git and container registry failed authentication ban - -GitLab responds with HTTP status code `403` for 1 hour, if 30 failed -authentication requests were received in a 3-minute period from a single IP address. - -This applies only to Git requests and container registry (`/jwt/auth`) requests -(combined). - -This limit: - -- Is reset by requests that authenticate successfully. For example, 29 - failed authentication requests followed by 1 successful request, followed by 29 - more failed authentication requests would not trigger a ban. -- Does not apply to JWT requests authenticated by `gitlab-ci-token`. - -No response headers are provided. - -## Settings - -**Omnibus GitLab** - -1. Open `/etc/gitlab/gitlab.rb` with your editor -1. Add the following: - - ```ruby - gitlab_rails['rack_attack_git_basic_auth'] = { - 'enabled' => true, - 'ip_whitelist' => ["127.0.0.1"], - 'maxretry' => 10, # Limit the number of Git HTTP authentication attempts per IP - 'findtime' => 60, # Reset the auth attempt counter per IP after 60 seconds - 'bantime' => 3600 # Ban an IP for one hour (3600s) after too many auth attempts - } - ``` - -1. Reconfigure GitLab: - - ```shell - sudo gitlab-ctl reconfigure - ``` - -The following settings can be configured: - -- `enabled`: By default this is set to `false`. Set this to `true` to enable Rack Attack. -- `ip_whitelist`: Whitelist any IPs from being blocked. They must be formatted as strings within a Ruby array. - CIDR notation is supported in GitLab 12.1 and later. - For example, `["127.0.0.1", "127.0.0.2", "127.0.0.3", "192.168.0.1/24"]`. -- `maxretry`: The maximum amount of times a request can be made in the - specified time. -- `findtime`: The maximum amount of time that failed requests can count against an IP - before it's blacklisted (in seconds). -- `bantime`: The total amount of time that a blacklisted IP is blocked (in - seconds). - -**Installations from source** - -These settings can be found in `config/initializers/rack_attack.rb`. If you are -missing `config/initializers/rack_attack.rb`, the following steps need to be -taken in order to enable protection for your GitLab instance: - -1. In `config/application.rb` find and uncomment the following line: - - ```ruby - config.middleware.use Rack::Attack - ``` - -1. Restart GitLab: - - ```shell - sudo service gitlab restart - ``` - -If you want more restrictive/relaxed throttle rules, edit -`config/initializers/rack_attack.rb` and change the `limit` or `period` values. -For example, you can set more relaxed throttle rules with -`limit: 3` and `period: 1.seconds`, allowing 3 requests per second. -You can also add other paths to the protected list by adding to `paths_to_be_protected` -variable. If you change any of these settings you must restart your -GitLab instance. - -## Remove blocked IPs from Rack Attack via Redis - -In case you want to remove a blocked IP, follow these steps: - -1. Find the IPs that have been blocked in the production log: - - ```shell - grep "Rack_Attack" /var/log/gitlab/gitlab-rails/auth.log - ``` - -1. Since the blacklist is stored in Redis, you need to open up `redis-cli`: - - ```shell - /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket - ``` - -1. You can remove the block using the following syntax, replacing `` with - the actual IP that is blacklisted: - - ```plaintext - del cache:gitlab:rack::attack:allow2ban:ban: - ``` - -1. Confirm that the key with the IP no longer shows up: - - ```plaintext - keys *rack::attack* - ``` - -1. Optionally, add the IP to the whitelist to prevent it from being blacklisted - again (see [settings](#settings)). - -## Troubleshooting - -### Rack attack is blacklisting the load balancer - -Rack Attack may block your load balancer if all traffic appears to come from -the load balancer. In that case, you must: - -1. [Configure `nginx[real_ip_trusted_addresses]`](https://docs.gitlab.com/omnibus/settings/nginx.html#configuring-gitlab-trusted_proxies-and-the-nginx-real_ip-module). - This keeps users' IPs from being listed as the load balancer IPs. -1. Whitelist the load balancer's IP address(es) in the Rack Attack [settings](#settings). -1. Reconfigure GitLab: - - ```shell - sudo gitlab-ctl reconfigure - ``` - -1. [Remove the block via Redis.](#remove-blocked-ips-from-rack-attack-via-redis) + + diff --git a/doc/security/rate_limits.md b/doc/security/rate_limits.md index 4585748ffc2..278be565971 100644 --- a/doc/security/rate_limits.md +++ b/doc/security/rate_limits.md @@ -14,9 +14,13 @@ For GitLab.com, please see Rate limiting is a common technique used to improve the security and durability of a web application. -For example, a simple script can make thousands of web requests per second. -Whether malicious, apathetic, or just a bug, your application and infrastructure -may not be able to cope with the load. For more details, see +For example, a simple script can make thousands of web requests per second. The requests could be: + +- Malicious. +- Apathetic. +- Just a bug. + +Your application and infrastructure may not be able to cope with the load. For more details, see [Denial-of-service attack](https://en.wikipedia.org/wiki/Denial-of-service_attack). Most cases can be mitigated by limiting the rate of requests from a single IP address. @@ -25,7 +29,7 @@ similarly mitigated by a rate limit. ## Admin Area settings -These are rate limits you can set in the Admin Area of your instance: +You can set these rate limits in the Admin Area of your instance: - [Import/Export rate limits](../user/admin_area/settings/import_export_rate_limits.md) - [Issues rate limits](../user/admin_area/settings/rate_limit_on_issues_creation.md) @@ -38,14 +42,36 @@ These are rate limits you can set in the Admin Area of your instance: - [Files API rate limits](../user/admin_area/settings/files_api_rate_limits.md) - [Deprecated API rate limits](../user/admin_area/settings/deprecated_api_rate_limits.md) +## Failed authentication ban for Git and container registry + +GitLab returns HTTP status code `403` for 1 hour, if 30 failed authentication requests were received +in a 3-minute period from a single IP address. This applies only to combined: + +- Git requests. +- Container registry (`/jwt/auth`) requests. + +This limit: + +- Is reset by requests that authenticate successfully. For example, 29 failed authentication + requests followed by 1 successful request, followed by 29 more failed authentication requests + would not trigger a ban. +- Does not apply to JWT requests authenticated by `gitlab-ci-token`. +- Is disabled by default. + +No response headers are provided. + +For configuration information, see +[Omnibus GitLab configuration options](https://docs.gitlab.com/omnibus/settings/configuration.html#configure-a-failed-authentication-ban). + ## Non-configurable limits ### Repository archives > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25750) in GitLab 12.9. -There is a rate limit for [downloading repository archives](../api/repositories.md#get-file-archive), -which applies to the project and to the user initiating the download either through the UI or the API. +A rate limit for [downloading repository archives](../api/repositories.md#get-file-archive) is +available. The limit applies to the project and to the user initiating the download either through +the UI or the API. The **rate limit** is 5 requests per minute per user. @@ -57,8 +83,50 @@ There is a rate limit for [testing webhooks](../user/project/integrations/webhoo The **rate limit** is 5 requests per minute per user. -## Rack Attack initializer +## Troubleshooting -This method of rate limiting is cumbersome, but has some advantages. It allows -throttling of specific paths, and is also integrated into Git and container -registry requests. See [Rack Attack initializer](rack_attack.md). +### Rack Attack is denylisting the load balancer + +Rack Attack may block your load balancer if all traffic appears to come from +the load balancer. In that case, you must: + +1. [Configure `nginx[real_ip_trusted_addresses]`](https://docs.gitlab.com/omnibus/settings/nginx.html#configuring-gitlab-trusted_proxies-and-the-nginx-real_ip-module). + This keeps users' IPs from being listed as the load balancer IPs. +1. Allowlist the load balancer's IP addresses. +1. Reconfigure GitLab: + + ```shell + sudo gitlab-ctl reconfigure + ``` + +### Remove blocked IPs from Rack Attack with Redis + +To remove a blocked IP: + +1. Find the IPs that have been blocked in the production log: + + ```shell + grep "Rack_Attack" /var/log/gitlab/gitlab-rails/auth.log + ``` + +1. Since the denylist is stored in Redis, you must open up `redis-cli`: + + ```shell + /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket + ``` + +1. You can remove the block using the following syntax, replacing `` with + the actual IP that is denylisted: + + ```plaintext + del cache:gitlab:rack::attack:allow2ban:ban: + ``` + +1. Confirm that the key with the IP no longer shows up: + + ```plaintext + keys *rack::attack* + ``` + +1. Optionally, add [the IP to the allowlist](https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-rack-attack) + to prevent it being denylisted again. diff --git a/doc/user/admin_area/settings/protected_paths.md b/doc/user/admin_area/settings/protected_paths.md index dc328fe8b7c..e686c65fe9a 100644 --- a/doc/user/admin_area/settings/protected_paths.md +++ b/doc/user/admin_area/settings/protected_paths.md @@ -7,28 +7,11 @@ type: reference # Protected paths **(FREE SELF)** -Rate limiting is a common technique used to improve the security and durability -of a web application. For more details, see -[Rate limits](../../../security/rate_limits.md). +Rate limiting is a technique that improves the security and durability of a web +application. For more details, see [Rate limits](../../../security/rate_limits.md). -GitLab rate limits the following paths with Rack Attack by default: - -```plaintext -'/users/password', -'/users/sign_in', -'/api/#{API::API.version}/session.json', -'/api/#{API::API.version}/session', -'/users', -'/users/confirmation', -'/unsubscribes/', -'/import/github/personal_access_token', -'/admin/session' -``` - -GitLab responds with HTTP status code `429` to POST requests at protected paths -that exceed 10 requests per minute per IP address. - -See [User and IP rate limits](../../admin_area/settings/user_and_ip_rate_limits.md#response-headers) for the headers responded to blocked requests. +You can rate limit (protect) specified paths. For these paths, GitLab responds with HTTP status +code `429` to POST requests at protected paths that exceed 10 requests per minute per IP address. For example, the following are limited to a maximum 10 requests per minute: @@ -36,10 +19,15 @@ For example, the following are limited to a maximum 10 requests per minute: - User sign-up (if enabled) - User password reset -After 10 requests, the client must wait 60 seconds before it can -try again. +After 10 requests, the client must wait 60 seconds before it can try again. -## Configure using GitLab UI +See also: + +- List of paths [protected by default](../../../administration/instance_limits.md#by-protected-path). +- [User and IP rate limits](../../admin_area/settings/user_and_ip_rate_limits.md#response-headers) + for the headers returned to blocked requests. + +## Configure protected paths > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/31246) in GitLab 12.4. diff --git a/doc/user/application_security/index.md b/doc/user/application_security/index.md index 180833538ed..e49b159515c 100644 --- a/doc/user/application_security/index.md +++ b/doc/user/application_security/index.md @@ -261,10 +261,6 @@ under your project's settings: ``` -## DAST On-Demand Scans - -If you don't want scans running in your normal DevOps process you can use on-demand scans instead. For more details, see [on-demand scans](dast/index.md#on-demand-scans). This feature is only available for DAST. If you run an on-demand scan against the default branch, it is reported as a "successful pipeline" and these results are included in the security dashboard and vulnerability report. - ## Security report validation > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/321918) in GitLab 13.11. diff --git a/doc/user/application_security/vulnerabilities/index.md b/doc/user/application_security/vulnerabilities/index.md index 34f4c400265..7bdc8cc8479 100644 --- a/doc/user/application_security/vulnerabilities/index.md +++ b/doc/user/application_security/vulnerabilities/index.md @@ -20,6 +20,9 @@ vulnerability include: - Linked issues - Actions log +In GitLab 14.3 and later, if the scanner determined the vulnerability to be a false positive, an +alert message is included at the top of the vulnerability's page. + On the vulnerability's page, you can: - [Change the vulnerability's status](#change-vulnerability-status). diff --git a/doc/user/application_security/vulnerability_report/img/group_vulnerability_report_v14_2.png b/doc/user/application_security/vulnerability_report/img/group_vulnerability_report_v14_2.png deleted file mode 100644 index 44c689eda3eaca8eba6cbb97d09c360e717bbb1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65346 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 diff --git a/doc/user/application_security/vulnerability_report/img/project_level_vulnerability_report_v14_5.png b/doc/user/application_security/vulnerability_report/img/project_level_vulnerability_report_v14_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ac996fa32dbb210cf37ac7d03f1ad39002a09a19 GIT binary patch literal 97387 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 literal 0 HcmV?d00001 diff --git a/doc/user/application_security/vulnerability_report/index.md b/doc/user/application_security/vulnerability_report/index.md index 20abb7d1e2f..d13647937a2 100644 --- a/doc/user/application_security/vulnerability_report/index.md +++ b/doc/user/application_security/vulnerability_report/index.md @@ -16,7 +16,16 @@ At all levels, the Vulnerability Report contains: - Filters for common vulnerability attributes. - Details of each vulnerability, presented in tabular layout. -![Vulnerability Report](img/group_vulnerability_report_v14_2.png) +The **Activity** column contains icons to indicate the activity, if any, taken on the vulnerability +in that row: + +- Issues **{issues}**: Links to issues created for the vulnerability. For more details, read + [Create an issue for a vulnerability](../vulnerabilities/index.md#create-an-issue-for-a-vulnerability). +- Wrench **{admin}**: The vulnerability has been remediated. +- False positive **{false-positive}**: The scanner determined this vulnerability to be a false + positive. + +![Example project-level Vulnerability Report](img/project_level_vulnerability_report_v14_5.png) ## Project-level Vulnerability Report diff --git a/doc/user/infrastructure/clusters/index.md b/doc/user/infrastructure/clusters/index.md index 80a1ccb81d1..1337574b8ac 100644 --- a/doc/user/infrastructure/clusters/index.md +++ b/doc/user/infrastructure/clusters/index.md @@ -8,9 +8,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w WARNING: In GitLab 14.5, the certificate-based method to connect Kubernetes clusters -to GitLab was deprecated, as well as the related [features](#deprecated-features). +to GitLab was [deprecated](https://gitlab.com/groups/gitlab-org/configure/-/epics/8), +as well as its related [features](#deprecated-features). -This feature is now deprecated. It had the following issues: +Connecting Kubernetes clusters to GitLab through cluster certificates is deprecated. +This method had the following issues: - There were security issues as it required direct access to the Kube API by GitLab. - The configuration options weren't flexible. @@ -54,10 +56,16 @@ the Kubernetes Agent model on the [Agent's blueprint documentation](../../../arc - [Clusters health](manage/clusters_health.md) - [Crossplane integration](../../clusters/crossplane.md) - [Auto Deploy](../../../topics/autodevops/stages.md#auto-deploy) +- [Web terminals](../../../administration/integration/terminal.md) ### Cluster levels -The concept of project-level, group-level, and instance-level clusters becomes +The concept of [project-level](../../project/clusters/index.md), +[group-level](../../group/clusters/index.md), and +[instance-level](../../instance/clusters/index.md) clusters becomes extinct in the new model, although the functionality remains to some extent. -The Agent is always configured in a GitLab project, but you can grant your -cluster's access to a GitLab group through the Agent. + +The Agent is always configured in a GitLab project, but you can: + +- [Grant your cluster's access to GitLab groups through the Agent](../../clusters/agent/repository.md#authorize-groups-to-use-an-agent). +- [Share access to the Agent with other projects and groups through the CI/CD Tunnel](../../clusters/agent/ci_cd_tunnel.md#share-the-cicd-tunnel-provided-by-an-agent-with-other-projects-and-group). diff --git a/doc/user/project/code_owners.md b/doc/user/project/code_owners.md index 7d51fb59793..c138dc64d19 100644 --- a/doc/user/project/code_owners.md +++ b/doc/user/project/code_owners.md @@ -84,6 +84,10 @@ so that their members also become eligible Code Owners. If you do not invite **Subgroup Y** to **Project A**, but make them Code Owners, their approval of the merge request becomes optional. +Inviting **Subgroup Y** to a parent group of **Project A** +[is not supported](https://gitlab.com/gitlab-org/gitlab/-/issues/288851). To set **Subgroup Y** as +Code Owners, add this group directly to the project itself. + ### Add a group as a Code Owner To set a group as a Code Owner: diff --git a/doc/user/project/import/bitbucket.md b/doc/user/project/import/bitbucket.md index cda018a0c37..0c50fc77e33 100644 --- a/doc/user/project/import/bitbucket.md +++ b/doc/user/project/import/bitbucket.md @@ -52,20 +52,18 @@ namespace that started the import process. ## Import your Bitbucket repositories -1. Sign in to GitLab and go to your dashboard. -1. Click on **New project**. - -1. Click on the "Bitbucket Cloud" button. - - ![Bitbucket](img/import_projects_from_new_project_page.png) - -1. Grant GitLab access to your Bitbucket account +1. Sign in to GitLab. +1. On the top bar, select **New** (**{plus}**). +1. Select **New project/repository**. +1. Select **Import project**. +1. Select **Bitbucket Cloud**. +1. Log in to Bitbucket and grant GitLab access to your Bitbucket account. ![Grant access](img/bitbucket_import_grant_access.png) -1. Click on the projects that you'd like to import or **Import all projects**. - You can also filter projects by name and select the namespace under which - each project will be imported. +1. Select the projects that you'd like to import or import all projects. + You can filter projects by name and select the namespace + each project will be imported for. ![Import projects](img/bitbucket_import_select_project_v12_3.png) diff --git a/doc/user/project/import/bitbucket_server.md b/doc/user/project/import/bitbucket_server.md index e7ee5742745..6ce8a1e1bdb 100644 --- a/doc/user/project/import/bitbucket_server.md +++ b/doc/user/project/import/bitbucket_server.md @@ -101,22 +101,22 @@ Feature.disable(:bitbucket_server_user_mapping_by_username) ## Import your Bitbucket repositories -1. Sign in to GitLab and go to your dashboard. -1. Click on **New project**. -1. Click on the "Bitbucket Server" button. If the button is not present, enable the importer in - **Admin > Application Settings > Visibility and access controls > Import sources**. +Prerequisite: - ![Bitbucket](img/import_projects_from_new_project_page.png) +- An administrator must have enabled the importer in + **Admin > Application Settings > Visibility and access controls > Import sources**. -1. Enter your Bitbucket Server credentials. +To import your Bitbucket repositories: - ![Grant access](img/bitbucket_server_import_credentials.png) - -1. Click on the projects that you'd like to import or **Import all projects**. - You can also filter projects by name and select the namespace under which each project is - imported. - - ![Import projects](img/bitbucket_server_import_select_project_v12_3.png) +1. Sign in to GitLab. +1. On the top bar, select **New** (**{plus}**). +1. Select **New project/repository**. +1. Select **Import project**. +1. Select **Bitbucket Server**. +1. Log in to Bitbucket and grant GitLab access to your Bitbucket account. +1. Select the projects that you'd like to import or import all projects. + You can filter projects by name and select the namespace + each project will be imported for. ## Troubleshooting diff --git a/doc/user/project/import/gitea.md b/doc/user/project/import/gitea.md index 3bbc70b4337..db55330f806 100644 --- a/doc/user/project/import/gitea.md +++ b/doc/user/project/import/gitea.md @@ -38,8 +38,6 @@ that started the import process. The importer page is visible when you create a new project. -![New project page on GitLab](img/import_projects_from_new_project_page.png) - Select the **Gitea** link to start the import authorization process. ![New Gitea project import](img/import_projects_from_gitea_new_import.png) diff --git a/doc/user/project/import/img/bitbucket_server_import_credentials.png b/doc/user/project/import/img/bitbucket_server_import_credentials.png deleted file mode 100644 index 25bcc3ab6e6863c544ec682de7d10e783feb446c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13781 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 diff --git a/doc/user/project/import/img/import_projects_from_new_project_page.png b/doc/user/project/import/img/import_projects_from_new_project_page.png deleted file mode 100644 index 7c32d3555d173a65fb6cf8f4f20a7343046bc479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30489 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 L2J%DboB#g+mccVn diff --git a/doc/user/project/repository/gpg_signed_commits/index.md b/doc/user/project/repository/gpg_signed_commits/index.md index 23d7aecc960..6aa32b1b816 100644 --- a/doc/user/project/repository/gpg_signed_commits/index.md +++ b/doc/user/project/repository/gpg_signed_commits/index.md @@ -39,7 +39,10 @@ For a commit to be verified by GitLab: - The committer's public key must have been uploaded to their GitLab account. - One of the emails in the GPG key must match a **verified** email address - used by the committer in GitLab. + used by the committer in GitLab. This address will be part of the public key. + If you want to keep this address private, use the automatically generated + [private commit email address](../../../profile/index.md#use-an-automatically-generated-private-commit-email) + GitLab provides in your profile. - The committer's email address must match the verified email address from the GPG key. diff --git a/lib/api/error_tracking/collector.rb b/lib/api/error_tracking/collector.rb index 22fbd3a1118..142de3d35b0 100644 --- a/lib/api/error_tracking/collector.rb +++ b/lib/api/error_tracking/collector.rb @@ -96,7 +96,10 @@ module API # Collector should never return any information back. # Because DSN and public key are designed for public use, # it is safe only for submission of new events. - no_content! + # + # Some clients sdk require status 200 OK to work correctly. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/343531. + status 200 end desc 'Submit error tracking event to the project' do @@ -129,7 +132,10 @@ module API # Collector should never return any information back. # Because DSN and public key are designed for public use, # it is safe only for submission of new events. - no_content! + # + # Some clients sdk require status 200 OK to work correctly. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/343531. + status 200 end end end diff --git a/lib/gitlab/ci/pipeline/chain/command.rb b/lib/gitlab/ci/pipeline/chain/command.rb index c9bc4ec411d..beb8801096b 100644 --- a/lib/gitlab/ci/pipeline/chain/command.rb +++ b/lib/gitlab/ci/pipeline/chain/command.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -144,3 +145,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/database/migrations/observation.rb b/lib/gitlab/database/migrations/observation.rb index 54eedec3c7b..a494c357950 100644 --- a/lib/gitlab/database/migrations/observation.rb +++ b/lib/gitlab/database/migrations/observation.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -14,3 +15,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/health_checks/metric.rb b/lib/gitlab/health_checks/metric.rb index b697cb0d027..c1e437831d7 100644 --- a/lib/gitlab/health_checks/metric.rb +++ b/lib/gitlab/health_checks/metric.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -5,3 +6,5 @@ module Gitlab Metric = Struct.new(:name, :value, :labels) end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/health_checks/probes/status.rb b/lib/gitlab/health_checks/probes/status.rb index 192e9366001..1c59f18ff7d 100644 --- a/lib/gitlab/health_checks/probes/status.rb +++ b/lib/gitlab/health_checks/probes/status.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -12,3 +13,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/health_checks/result.rb b/lib/gitlab/health_checks/result.rb index 38a36100ec7..cbb847d2af2 100644 --- a/lib/gitlab/health_checks/result.rb +++ b/lib/gitlab/health_checks/result.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -13,3 +14,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/middleware/release_env.rb b/lib/gitlab/middleware/release_env.rb index 0719fb2e8c6..2439e873e0b 100644 --- a/lib/gitlab/middleware/release_env.rb +++ b/lib/gitlab/middleware/release_env.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -14,3 +15,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/redis/hll.rb b/lib/gitlab/redis/hll.rb index 0d04545688b..4d1855e4637 100644 --- a/lib/gitlab/redis/hll.rb +++ b/lib/gitlab/redis/hll.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -51,3 +52,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb index 217a48e740d..37414f9e2b1 100644 --- a/lib/gitlab/search_results.rb +++ b/lib/gitlab/search_results.rb @@ -115,6 +115,11 @@ module Gitlab {} end + # aggregations are only performed by Elasticsearch backed results + def aggregations(scope) + [] + end + private def collection_for(scope) diff --git a/lib/gitlab/slash_commands/result.rb b/lib/gitlab/slash_commands/result.rb index a66a2e0726b..d488606120f 100644 --- a/lib/gitlab/slash_commands/result.rb +++ b/lib/gitlab/slash_commands/result.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -5,3 +6,5 @@ module Gitlab Result = Struct.new(:type, :message) end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/template_parser/ast.rb b/lib/gitlab/template_parser/ast.rb index 89318ee0d68..c6a5f66c377 100644 --- a/lib/gitlab/template_parser/ast.rb +++ b/lib/gitlab/template_parser/ast.rb @@ -1,3 +1,4 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true module Gitlab @@ -155,3 +156,5 @@ module Gitlab end end end + +# rubocop:enable Naming/FileName diff --git a/lib/gitlab/tracking.rb b/lib/gitlab/tracking.rb index f4fbea50515..c9478e13d25 100644 --- a/lib/gitlab/tracking.rb +++ b/lib/gitlab/tracking.rb @@ -13,7 +13,6 @@ module Gitlab contexts = [Tracking::StandardContext.new(project: project, user: user, namespace: namespace, **extra).to_context, *context] snowplow.event(category, action, label: label, property: property, value: value, context: contexts) - product_analytics.event(category, action, label: label, property: property, value: value, context: contexts) rescue StandardError => error Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error, snowplow_category: category, snowplow_action: action) end @@ -35,10 +34,6 @@ module Gitlab def snowplow @snowplow ||= Gitlab::Tracking::Destinations::Snowplow.new end - - def product_analytics - @product_analytics ||= Gitlab::Tracking::Destinations::ProductAnalytics.new - end end end end diff --git a/lib/gitlab/tracking/destinations/product_analytics.rb b/lib/gitlab/tracking/destinations/product_analytics.rb deleted file mode 100644 index cacedbc5b83..00000000000 --- a/lib/gitlab/tracking/destinations/product_analytics.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module Tracking - module Destinations - class ProductAnalytics < Base - extend ::Gitlab::Utils::Override - include ::Gitlab::Utils::StrongMemoize - - override :event - def event(category, action, label: nil, property: nil, value: nil, context: nil) - return unless event_allowed?(category, action) - return unless enabled? - - tracker.track_struct_event(category, action, label, property, value, context, (Time.now.to_f * 1000).to_i) - end - - private - - def event_allowed?(category, action) - category == 'epics' && action == 'promote' - end - - def enabled? - Feature.enabled?(:product_analytics_tracking, type: :ops) && - Gitlab::CurrentSettings.usage_ping_enabled? && - Gitlab::CurrentSettings.self_monitoring_project_id.present? - end - - def tracker - @tracker ||= SnowplowTracker::Tracker.new( - SnowplowTracker::AsyncEmitter.new(::ProductAnalytics::Tracker::COLLECTOR_URL, protocol: Gitlab.config.gitlab.protocol), - SnowplowTracker::Subject.new, - Gitlab::Tracking::SNOWPLOW_NAMESPACE, - Gitlab::CurrentSettings.self_monitoring_project_id.to_s - ) - end - end - end - end -end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 3f5d09ea5c3..331a1742e92 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -3334,7 +3334,7 @@ msgstr "" msgid "All merge request dependencies have been merged" msgstr "" -msgid "All paths are relative to the GitLab URL. Do not include %{relative_url_link_start}relative URL%{relative_url_link_end}." +msgid "All paths are relative to the GitLab URL. Do not include %{relative_url_link_start}relative URLs%{relative_url_link_end}." msgstr "" msgid "All projects" @@ -8653,9 +8653,6 @@ msgstr "" msgid "Configure existing installation" msgstr "" -msgid "Configure paths to be protected by Rack Attack." -msgstr "" - msgid "Configure repository mirroring." msgstr "" @@ -12709,7 +12706,7 @@ msgstr "" msgid "Enable or disable version check and Service Ping." msgstr "" -msgid "Enable protected paths rate limit" +msgid "Enable rate limiting for POST requests to the specified paths" msgstr "" msgid "Enable reCAPTCHA" @@ -16847,7 +16844,7 @@ msgstr "" msgid "Helps reduce request volume (for example, from crawlers or abusive bots)" msgstr "" -msgid "Helps reduce request volume for protected paths" +msgid "Helps reduce request volume for protected paths." msgstr "" msgid "Here you will find recent merge request activity" @@ -23640,9 +23637,6 @@ msgstr "" msgid "OmniAuth" msgstr "" -msgid "Omnibus Protected Paths throttle is active, and takes priority over these settings. From 12.4, Omnibus throttle is deprecated and will be removed in a future release. Please read the %{relative_url_link_start}Migrating Protected Paths documentation%{relative_url_link_end}." -msgstr "" - msgid "On" msgstr "" @@ -24775,6 +24769,9 @@ msgstr "" msgid "Paths can contain wildcards, like */welcome" msgstr "" +msgid "Paths to protect with rate limiting" +msgstr "" + msgid "Pause" msgstr "" @@ -27658,9 +27655,6 @@ msgstr "" msgid "Protected Environment" msgstr "" -msgid "Protected Paths" -msgstr "" - msgid "Protected Paths: requests" msgstr "" @@ -27676,6 +27670,9 @@ msgstr "" msgid "Protected environments" msgstr "" +msgid "Protected paths" +msgstr "" + msgid "ProtectedBranch|%{wildcards_link_start}Wildcards%{wildcards_link_end} such as %{code_tag_start}*-stable%{code_tag_end} or %{code_tag_start}production/*%{code_tag_end} are supported." msgstr "" @@ -28051,6 +28048,9 @@ msgstr "" msgid "Rate limit" msgstr "" +msgid "Rate limit access to specified paths." +msgstr "" + msgid "Rate limits can help reduce request volume (like from crawlers or abusive bots)." msgstr "" @@ -34693,9 +34693,6 @@ msgstr "" msgid "These existing issues have a similar title. It might be better to comment there instead of creating another similar issue." msgstr "" -msgid "These paths are protected for POST requests." -msgstr "" - msgid "These runners are shared across projects in this group." msgstr "" diff --git a/rubocop/cop/gitlab/change_timzone.rb b/rubocop/cop/gitlab/change_timezone.rb similarity index 100% rename from rubocop/cop/gitlab/change_timzone.rb rename to rubocop/cop/gitlab/change_timezone.rb diff --git a/rubocop/cop/gitlab/keys-first-and-values-first.rb b/rubocop/cop/gitlab/keys_first_and_values_first.rb similarity index 100% rename from rubocop/cop/gitlab/keys-first-and-values-first.rb rename to rubocop/cop/gitlab/keys_first_and_values_first.rb diff --git a/rubocop/rubocop.rb b/rubocop/rubocop.rb index c8a573410d8..5a5e76a87e2 100644 --- a/rubocop/rubocop.rb +++ b/rubocop/rubocop.rb @@ -1,4 +1,7 @@ +# rubocop:disable Naming/FileName # frozen_string_literal: true # Auto-require all cops under `rubocop/cop/**/*.rb` Dir[File.join(__dir__, 'cop', '**', '*.rb')].sort.each(&method(:require)) + +# rubocop:enable Naming/FileName diff --git a/scripts/docs_screenshots.rb b/scripts/docs_screenshots.rb index 094e7e87960..a734540eb69 100755 --- a/scripts/docs_screenshots.rb +++ b/scripts/docs_screenshots.rb @@ -5,7 +5,7 @@ require 'png_quantizator' require 'open3' require 'parallel' -require_relative '../tooling/lib/tooling/images' +require_relative '../tooling/lib/tooling/image' generator = ARGV[0] milestone = ARGV[1] diff --git a/spec/frontend/vue_mr_widget/mr_widget_options_spec.js b/spec/frontend/vue_mr_widget/mr_widget_options_spec.js index 8a99d83237e..19892539a8f 100644 --- a/spec/frontend/vue_mr_widget/mr_widget_options_spec.js +++ b/spec/frontend/vue_mr_widget/mr_widget_options_spec.js @@ -6,6 +6,7 @@ import VueApollo from 'vue-apollo'; import createMockApollo from 'helpers/mock_apollo_helper'; import waitForPromises from 'helpers/wait_for_promises'; import { securityReportMergeRequestDownloadPathsQueryResponse } from 'jest/vue_shared/security_reports/mock_data'; +import api from '~/api'; import axios from '~/lib/utils/axios_utils'; import { setFaviconOverlay } from '~/lib/utils/favicon'; import notify from '~/lib/utils/notify'; @@ -23,6 +24,8 @@ import { faviconDataUrl, overlayDataUrl } from '../lib/utils/mock_data'; import mockData from './mock_data'; import testExtension from './test_extension'; +jest.mock('~/api.js'); + jest.mock('~/smart_interval'); jest.mock('~/lib/utils/favicon'); @@ -904,6 +907,18 @@ describe('MrWidgetOptions', () => { expect(wrapper.text()).toContain('Test extension summary count: 1'); }); + it('triggers trackRedisHllUserEvent API call', async () => { + await waitForPromises(); + + wrapper + .find('[data-testid="widget-extension"] [data-testid="toggle-button"]') + .trigger('click'); + + await Vue.nextTick(); + + expect(api.trackRedisHllUserEvent).toHaveBeenCalledWith('test_expand_event'); + }); + it('renders full data', async () => { await waitForPromises(); diff --git a/spec/frontend/vue_mr_widget/test_extension.js b/spec/frontend/vue_mr_widget/test_extension.js index a29a4d2fb46..51bc44a7063 100644 --- a/spec/frontend/vue_mr_widget/test_extension.js +++ b/spec/frontend/vue_mr_widget/test_extension.js @@ -3,6 +3,7 @@ import { EXTENSION_ICONS } from '~/vue_merge_request_widget/constants'; export default { name: 'WidgetTestExtension', props: ['targetProjectFullPath'], + expandEvent: 'test_expand_event', computed: { summary({ count, targetProjectFullPath }) { return `Test extension summary count: ${count} & ${targetProjectFullPath}`; diff --git a/spec/lib/gitlab/search_results_spec.rb b/spec/lib/gitlab/search_results_spec.rb index 27d65e14347..a38073e7c51 100644 --- a/spec/lib/gitlab/search_results_spec.rb +++ b/spec/lib/gitlab/search_results_spec.rb @@ -96,6 +96,18 @@ RSpec.describe Gitlab::SearchResults do end end + describe '#aggregations' do + where(:scope) do + %w(projects issues merge_requests blobs commits wiki_blobs epics milestones users unknown) + end + + with_them do + it 'returns an empty array' do + expect(results.aggregations(scope)).to match_array([]) + end + end + end + context "when count_limit is lower than total amount" do before do allow(results).to receive(:count_limit).and_return(1) diff --git a/spec/lib/gitlab/tracking/destinations/product_analytics_spec.rb b/spec/lib/gitlab/tracking/destinations/product_analytics_spec.rb deleted file mode 100644 index 63e2e930acd..00000000000 --- a/spec/lib/gitlab/tracking/destinations/product_analytics_spec.rb +++ /dev/null @@ -1,84 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Gitlab::Tracking::Destinations::ProductAnalytics do - let(:emitter) { SnowplowTracker::Emitter.new('localhost', buffer_size: 1) } - let(:tracker) { SnowplowTracker::Tracker.new(emitter, SnowplowTracker::Subject.new, 'namespace', 'app_id') } - - describe '#event' do - shared_examples 'does not send an event' do - it 'does not send an event' do - expect_any_instance_of(SnowplowTracker::Tracker).not_to receive(:track_struct_event) - - subject.event(allowed_category, allowed_action) - end - end - - let(:allowed_category) { 'epics' } - let(:allowed_action) { 'promote' } - let(:self_monitoring_project) { create(:project) } - - before do - stub_feature_flags(product_analytics_tracking: true) - stub_application_setting(self_monitoring_project_id: self_monitoring_project.id) - stub_application_setting(usage_ping_enabled: true) - end - - context 'with allowed event' do - it 'sends an event to Product Analytics snowplow collector' do - expect(SnowplowTracker::AsyncEmitter) - .to receive(:new) - .with(ProductAnalytics::Tracker::COLLECTOR_URL, protocol: Gitlab.config.gitlab.protocol) - .and_return(emitter) - - expect(SnowplowTracker::Tracker) - .to receive(:new) - .with(emitter, an_instance_of(SnowplowTracker::Subject), Gitlab::Tracking::SNOWPLOW_NAMESPACE, self_monitoring_project.id.to_s) - .and_return(tracker) - - freeze_time do - expect(tracker) - .to receive(:track_struct_event) - .with(allowed_category, allowed_action, 'label', 'property', 1.5, nil, (Time.now.to_f * 1000).to_i) - - subject.event(allowed_category, allowed_action, label: 'label', property: 'property', value: 1.5) - end - end - end - - context 'with non-allowed event' do - it 'does not send an event' do - expect_any_instance_of(SnowplowTracker::Tracker).not_to receive(:track_struct_event) - - subject.event('category', 'action') - subject.event(allowed_category, 'action') - subject.event('category', allowed_action) - end - end - - context 'when self-monitoring project does not exist' do - before do - stub_application_setting(self_monitoring_project_id: nil) - end - - include_examples 'does not send an event' - end - - context 'when product_analytics_tracking FF is disabled' do - before do - stub_feature_flags(product_analytics_tracking: false) - end - - include_examples 'does not send an event' - end - - context 'when usage ping is disabled' do - before do - stub_application_setting(usage_ping_enabled: false) - end - - include_examples 'does not send an event' - end - end -end diff --git a/spec/lib/gitlab/tracking_spec.rb b/spec/lib/gitlab/tracking_spec.rb index dacaae55676..b9902ab42e5 100644 --- a/spec/lib/gitlab/tracking_spec.rb +++ b/spec/lib/gitlab/tracking_spec.rb @@ -41,7 +41,6 @@ RSpec.describe Gitlab::Tracking do shared_examples 'delegates to destination' do |klass| before do allow_any_instance_of(Gitlab::Tracking::Destinations::Snowplow).to receive(:event) - allow_any_instance_of(Gitlab::Tracking::Destinations::ProductAnalytics).to receive(:event) end it "delegates to #{klass} destination" do @@ -73,7 +72,6 @@ RSpec.describe Gitlab::Tracking do end it_behaves_like 'delegates to destination', Gitlab::Tracking::Destinations::Snowplow - it_behaves_like 'delegates to destination', Gitlab::Tracking::Destinations::ProductAnalytics it 'tracks errors' do expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception).with( diff --git a/spec/requests/api/error_tracking/collector_spec.rb b/spec/requests/api/error_tracking/collector_spec.rb index 7acadeb1287..cb1b255d30f 100644 --- a/spec/requests/api/error_tracking/collector_spec.rb +++ b/spec/requests/api/error_tracking/collector_spec.rb @@ -24,10 +24,10 @@ RSpec.describe API::ErrorTracking::Collector do end RSpec.shared_examples 'successful request' do - it 'writes to the database and returns no content' do + it 'writes to the database and returns OK' do expect { subject }.to change { ErrorTracking::ErrorEvent.count }.by(1) - expect(response).to have_gitlab_http_status(:no_content) + expect(response).to have_gitlab_http_status(:ok) end end @@ -89,10 +89,10 @@ RSpec.describe API::ErrorTracking::Collector do context 'transaction request type' do let(:params) { fixture_file('error_tracking/transaction.txt') } - it 'does nothing and returns no content' do + it 'does nothing and returns ok' do expect { subject }.not_to change { ErrorTracking::ErrorEvent.count } - expect(response).to have_gitlab_http_status(:no_content) + expect(response).to have_gitlab_http_status(:ok) end end diff --git a/spec/rubocop/cop/gitlab/change_timezone_spec.rb b/spec/rubocop/cop/gitlab/change_timezone_spec.rb index f3c07e44cc7..ff6365aa0f7 100644 --- a/spec/rubocop/cop/gitlab/change_timezone_spec.rb +++ b/spec/rubocop/cop/gitlab/change_timezone_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'fast_spec_helper' -require_relative '../../../../rubocop/cop/gitlab/change_timzone' +require_relative '../../../../rubocop/cop/gitlab/change_timezone' RSpec.describe RuboCop::Cop::Gitlab::ChangeTimezone do subject(:cop) { described_class.new } diff --git a/spec/services/members/create_service_spec.rb b/spec/services/members/create_service_spec.rb index 1c71715d922..33b01b77c3a 100644 --- a/spec/services/members/create_service_spec.rb +++ b/spec/services/members/create_service_spec.rb @@ -216,8 +216,7 @@ RSpec.describe Members::CreateService, :aggregate_failures, :clean_gitlab_redis_ expect(source.issues).to all have_attributes( project: source, - author: user, - assignees: array_including(member) + author: user ) end diff --git a/spec/support/helpers/migrations_helpers.rb b/spec/support/helpers/migrations_helpers.rb index 7799e49d4c1..0c5bf09f6b7 100644 --- a/spec/support/helpers/migrations_helpers.rb +++ b/spec/support/helpers/migrations_helpers.rb @@ -2,7 +2,7 @@ module MigrationsHelpers def active_record_base - ActiveRecord::Base + Gitlab::Database.database_base_models.fetch(self.class.metadata[:database] || :main) end def table(name) @@ -34,7 +34,7 @@ module MigrationsHelpers end def migrations_paths - ActiveRecord::Migrator.migrations_paths + active_record_base.connection.migrations_paths end def migration_context @@ -52,7 +52,7 @@ module MigrationsHelpers end def foreign_key_exists?(source, target = nil, column: nil) - ActiveRecord::Base.connection.foreign_keys(source).any? do |key| + active_record_base.connection.foreign_keys(source).any? do |key| if column key.options[:column].to_s == column.to_s else diff --git a/spec/support/stub_snowplow.rb b/spec/support/stub_snowplow.rb index a21ce2399d7..c6e3b40972f 100644 --- a/spec/support/stub_snowplow.rb +++ b/spec/support/stub_snowplow.rb @@ -8,8 +8,6 @@ module StubSnowplow host = 'localhost' # rubocop:disable RSpec/AnyInstanceOf - allow_any_instance_of(Gitlab::Tracking::Destinations::ProductAnalytics).to receive(:event) - allow_any_instance_of(Gitlab::Tracking::Destinations::Snowplow) .to receive(:emitter) .and_return(SnowplowTracker::Emitter.new(host, buffer_size: buffer_size)) diff --git a/spec/workers/emails_on_push_worker_spec.rb b/spec/workers/emails_on_push_worker_spec.rb index 6c37c422aed..1993edb804f 100644 --- a/spec/workers/emails_on_push_worker_spec.rb +++ b/spec/workers/emails_on_push_worker_spec.rb @@ -139,6 +139,43 @@ RSpec.describe EmailsOnPushWorker, :mailer do perform end + + context 'when SMIME signing is enabled' do + include SmimeHelper + + before :context do + @root_ca = generate_root + @cert = generate_cert(signer_ca: @root_ca) + end + + let(:root_certificate) do + Gitlab::X509::Certificate.new(@root_ca[:key], @root_ca[:cert]) + end + + let(:certificate) do + Gitlab::X509::Certificate.new(@cert[:key], @cert[:cert]) + end + + before do + allow(Gitlab::X509::Certificate).to receive_messages(from_files: certificate) + + Mail.register_interceptor(Gitlab::Email::Hook::SmimeSignatureInterceptor) + end + + after do + Mail.unregister_interceptor(Gitlab::Email::Hook::SmimeSignatureInterceptor) + end + + it 'does not sign the email multiple times' do + perform + + ActionMailer::Base.deliveries.each do |mail| + expect(mail.header['Content-Type'].value).to match('multipart/signed').and match('protocol="application/x-pkcs7-signature"') + + expect(mail.to_s.scan(/Content-Disposition: attachment;\r\n filename=smime.p7s/).size).to eq(1) + end + end + end end context "when recipients are invalid" do diff --git a/tooling/lib/tooling/images.rb b/tooling/lib/tooling/image.rb similarity index 100% rename from tooling/lib/tooling/images.rb rename to tooling/lib/tooling/image.rb