diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS
index b49f4a2068b..fcd0b1a215c 100644
--- a/.gitlab/CODEOWNERS
+++ b/.gitlab/CODEOWNERS
@@ -1518,7 +1518,7 @@ ee/lib/ee/api/entities/project.rb
/gems/gitlab-housekeeper/
/keeps/
-^[Storage Statistics] @gitlab-org/fulfillment/utilization/be
+^[Storage Statistics] @jagood @suraj_tripathy @vij
/app/models/namespace/root_storage_statistics.rb
/ee/app/models/ee/namespace/root_storage_statistics.rb
/app/models/project_statistics.rb
diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml
index 3c9b4a6acb6..898088c9021 100644
--- a/.rubocop_todo/layout/line_length.yml
+++ b/.rubocop_todo/layout/line_length.yml
@@ -2666,7 +2666,6 @@ Layout/LineLength:
- 'lib/gitlab/tracking/event_definition.rb'
- 'lib/gitlab/usage/metric_definition.rb'
- 'lib/gitlab/usage/metrics/aggregates/aggregate.rb'
- - 'lib/gitlab/usage/metrics/aggregates/sources/calculations/intersection.rb'
- 'lib/gitlab/usage/metrics/aggregates/sources/postgres_hll.rb'
- 'lib/gitlab/usage/service_ping_report.rb'
- 'lib/gitlab/usage_data.rb'
@@ -3794,7 +3793,6 @@ Layout/LineLength:
- 'spec/lib/gitlab/usage/metric_definition_spec.rb'
- 'spec/lib/gitlab/usage/metric_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb'
- - 'spec/lib/gitlab/usage/metrics/aggregates/sources/calculations/intersection_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb'
- 'spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb'
diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml
index daf099b3797..eed1d8573eb 100644
--- a/.rubocop_todo/rspec/feature_category.yml
+++ b/.rubocop_todo/rspec/feature_category.yml
@@ -3972,7 +3972,6 @@ RSpec/FeatureCategory:
- 'spec/lib/gitlab/usage/metric_definition_spec.rb'
- 'spec/lib/gitlab/usage/metric_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb'
- - 'spec/lib/gitlab/usage/metrics/aggregates/sources/calculations/intersection_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb'
- 'spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb'
- 'spec/lib/gitlab/usage/metrics/instrumentations/active_user_count_metric_spec.rb'
diff --git a/app/assets/javascripts/ci/catalog/components/list/catalog_search.vue b/app/assets/javascripts/ci/catalog/components/list/catalog_search.vue
index ec8d6c917d9..4f94df15749 100644
--- a/app/assets/javascripts/ci/catalog/components/list/catalog_search.vue
+++ b/app/assets/javascripts/ci/catalog/components/list/catalog_search.vue
@@ -67,6 +67,7 @@ export default {
:text="currentSortText"
:sort-options="$options.sortOptions"
:sort-by="currentSortOption"
+ data-testid="catalog-sorting-option-button"
@sortByChange="setSelectedSortOption"
@sortDirectionChange="onSortDirectionChange"
/>
diff --git a/app/assets/javascripts/sidebar/components/sidebar_dropdown.vue b/app/assets/javascripts/sidebar/components/sidebar_dropdown.vue
index 5cc3c552bf8..124f2ab23b9 100644
--- a/app/assets/javascripts/sidebar/components/sidebar_dropdown.vue
+++ b/app/assets/javascripts/sidebar/components/sidebar_dropdown.vue
@@ -29,6 +29,7 @@ import {
import { issuableAttributesQueries } from 'ee_else_ce/sidebar/queries/constants';
import { createAlert } from '~/alert';
import { PathIdSeparator } from '~/related_issues/constants';
+import { WORK_ITEM_TYPE_ENUM_EPIC } from '~/work_items/constants';
export default {
noAttributeId,
@@ -123,6 +124,10 @@ export default {
includeWorkItems: this.showWorkItemEpics,
};
+ if (this.showWorkItemEpics) {
+ variables.types = [WORK_ITEM_TYPE_ENUM_EPIC];
+ }
+
if (epicIidPattern.test(this.searchTerm)) {
const matches = this.searchTerm.match(epicIidPattern);
variables.iidStartsWith = matches.groups.iid;
@@ -222,12 +227,7 @@ export default {
@show="handleShow"
@shown="setFocus"
>
-
+
-
+
REBUILDING_SCHEDULE.ago
+ break
+ end
+
+ service_response = ClickHouse::RebuildMaterializedViewService
+ .new(
+ connection: ClickHouse::Connection.new(:main),
+ runtime_limiter: Gitlab::Metrics::RuntimeLimiter.new(MAX_RUNTIME),
+ state: state)
+ .execute
+
+ payload = service_response.payload
+ current_time = Time.current.to_json
+ if payload[:status] == :over_time
+ state.merge!(
+ next_value: payload[:next_value],
+ last_update_at: current_time,
+ finished_at: nil
+ )
+ else
+ state.merge!(
+ next_value: nil,
+ last_update_at: current_time,
+ finished_at: current_time,
+ started_at: nil
+ )
+ end
+
+ Gitlab::Redis::SharedState.with do |redis|
+ redis.set(self.class.redis_key, Gitlab::Json.dump(state))
+ end
+
+ log_extra_metadata_on_done(:state, state)
+ end
+ end
+
+ private
+
+ def build_state
+ Gitlab::Redis::SharedState.with do |redis|
+ raw = redis.get(self.class.redis_key)
+ state = raw.present? ? Gitlab::Json.parse(raw) : {}
+ state.merge(initial_state).symbolize_keys
+ end
+ end
+
+ def initial_state
+ MATERIALIZED_VIEW.merge(started_at: Time.current)
end
end
end
diff --git a/config/feature_flags/beta/work_items_beta.yml b/config/feature_flags/beta/work_items_beta.yml
new file mode 100644
index 00000000000..22d79f0e38b
--- /dev/null
+++ b/config/feature_flags/beta/work_items_beta.yml
@@ -0,0 +1,9 @@
+---
+name: work_items_beta
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/377912
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144141
+rollout_issue_url: https://gitlab.com/gitlab-com/gl-infra/production/-/issues/17549
+milestone: '16.10'
+group: group::project management
+type: beta
+default_enabled: false
diff --git a/config/feature_flags/development/work_items_mvc.yml b/config/feature_flags/development/work_items_mvc.yml
deleted file mode 100644
index 928175c70ba..00000000000
--- a/config/feature_flags/development/work_items_mvc.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: work_items_mvc
-introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/101062"
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/377912
-milestone: '15.5'
-type: development
-group: group::project management
-default_enabled: false
diff --git a/config/feature_flags/gitlab_com_derisk/rebuild_contributions_mv.yml b/config/feature_flags/gitlab_com_derisk/rebuild_contributions_mv.yml
new file mode 100644
index 00000000000..2d6306be320
--- /dev/null
+++ b/config/feature_flags/gitlab_com_derisk/rebuild_contributions_mv.yml
@@ -0,0 +1,9 @@
+---
+name: rebuild_contributions_mv
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/431453
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144478
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/441620
+milestone: '16.10'
+group: group::optimize
+type: gitlab_com_derisk
+default_enabled: false
diff --git a/config/feature_flags/gitlab_com_derisk/rebuild_mv_drop_old_tables.yml b/config/feature_flags/gitlab_com_derisk/rebuild_mv_drop_old_tables.yml
new file mode 100644
index 00000000000..537f00bc614
--- /dev/null
+++ b/config/feature_flags/gitlab_com_derisk/rebuild_mv_drop_old_tables.yml
@@ -0,0 +1,9 @@
+---
+name: rebuild_mv_drop_old_tables
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/431453
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144478
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/441584
+milestone: '16.10'
+group: group::optimize
+type: gitlab_com_derisk
+default_enabled: false
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index 206b0525610..fb7660cde24 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -918,6 +918,9 @@ Gitlab.ee do
Settings.cron_jobs['click_house_audit_events_sync_worker'] ||= {}
Settings.cron_jobs['click_house_audit_events_sync_worker']['cron'] ||= "*/3 * * * *"
Settings.cron_jobs['click_house_audit_events_sync_worker']['job_class'] = 'ClickHouse::AuditEventsSyncWorker'
+ Settings.cron_jobs['click_house_rebuild_materialized_view_cron_worker'] ||= {}
+ Settings.cron_jobs['click_house_rebuild_materialized_view_cron_worker']['cron'] ||= "*/10 * * * *"
+ Settings.cron_jobs['click_house_rebuild_materialized_view_cron_worker']['job_class'] = 'ClickHouse::RebuildMaterializedViewCronWorker'
Settings.cron_jobs['vertex_ai_refresh_access_token_worker'] ||= {}
Settings.cron_jobs['vertex_ai_refresh_access_token_worker']['cron'] ||= '*/50 * * * *'
Settings.cron_jobs['vertex_ai_refresh_access_token_worker']['job_class'] = 'Llm::VertexAiAccessTokenRefreshWorker'
diff --git a/config/metrics/counts_7d/20230822210848_i_quickactions_checkin_reminder_weekly.yml b/config/metrics/counts_7d/20230822210848_i_quickactions_checkin_reminder_weekly.yml
index 4c98cda8616..5fa7c3ec559 100644
--- a/config/metrics/counts_7d/20230822210848_i_quickactions_checkin_reminder_weekly.yml
+++ b/config/metrics/counts_7d/20230822210848_i_quickactions_checkin_reminder_weekly.yml
@@ -4,7 +4,7 @@ name: quickactions_checkin_reminder_weekly
description: Count of WAU using the `/checkin_reminder` quick action
product_section: dev
product_stage: plan
-product_group: team_planning
+product_group: project_management
value_type: number
status: active
milestone: "16.4"
diff --git a/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml b/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml
index 603de7f0a08..4704768f231 100644
--- a/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml
+++ b/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml
@@ -5,7 +5,7 @@ description: Cumulative count of packets processed by ModSecurity since Usage Pi
was last reported
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
milestone_removed: "14.0"
diff --git a/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml b/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml
index 5b4594093ca..dc2beb8089e 100644
--- a/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml
+++ b/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml
@@ -5,7 +5,7 @@ description: Cumulative count of packets identified as anomalous by ModSecurity
Usage Ping was last reported
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
milestone_removed: "14.0"
diff --git a/config/metrics/counts_all/20210216175446_network_policy_forwards.yml b/config/metrics/counts_all/20210216175446_network_policy_forwards.yml
index 78eedfb785a..36416bc083f 100644
--- a/config/metrics/counts_all/20210216175446_network_policy_forwards.yml
+++ b/config/metrics/counts_all/20210216175446_network_policy_forwards.yml
@@ -5,7 +5,7 @@ description: Cumulative count of packets forwarded by Cilium (Container Network
since Usage Ping was last reported
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86351
diff --git a/config/metrics/counts_all/20210216175448_network_policy_drops.yml b/config/metrics/counts_all/20210216175448_network_policy_drops.yml
index 53e2abe35c0..e28acc67698 100644
--- a/config/metrics/counts_all/20210216175448_network_policy_drops.yml
+++ b/config/metrics/counts_all/20210216175448_network_policy_drops.yml
@@ -5,7 +5,7 @@ description: Cumulative count of packets dropped by Cilium (Container Network Se
since Usage Ping was last reported
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86351
diff --git a/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml b/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml
index 106543cc586..95cc5701040 100644
--- a/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml
+++ b/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml
@@ -4,7 +4,7 @@ key_path: counts.ingress_modsecurity_logging
description: Whether or not ModSecurity is set to logging mode
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
milestone_removed: "14.0"
diff --git a/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml b/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml
index 92562f636a2..a66b163c536 100644
--- a/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml
+++ b/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml
@@ -4,7 +4,7 @@ key_path: counts.ingress_modsecurity_blocking
description: Whether or not ModSecurity is set to blocking mode
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
milestone_removed: "14.0"
diff --git a/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml b/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml
index 1aac4f05df8..62168f9d03c 100644
--- a/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml
+++ b/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml
@@ -4,7 +4,7 @@ key_path: counts.ingress_modsecurity_disabled
description: Whether or not ModSecurity is disabled within Ingress
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
milestone_removed: "14.0"
diff --git a/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml b/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml
index df267d8c965..dde48646473 100644
--- a/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml
+++ b/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml
@@ -4,7 +4,7 @@ key_path: counts.ingress_modsecurity_not_installed
description: Whether or not ModSecurity has not been installed into the cluster
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: number
status: removed
milestone_removed: "14.0"
diff --git a/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml b/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
index 9a3efcbee97..95081073f23 100644
--- a/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
+++ b/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
@@ -4,7 +4,7 @@ key_path: ingress_modsecurity_enabled
description: Whether or not ModSecurity is enabled within Ingress
product_section: sec
product_stage: protect_stage_was_removed
-product_group: container_security_group_was_removed
+product_group: security_policies
value_type: boolean
status: removed
milestone_removed: "14.0"
diff --git a/doc/api/dora/metrics.md b/doc/api/dora/metrics.md
index 84ab997c0b1..e60e6c2187b 100644
--- a/doc/api/dora/metrics.md
+++ b/doc/api/dora/metrics.md
@@ -12,7 +12,7 @@ DETAILS:
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/279039) in GitLab 13.10.
> - The legacy key/value pair `{ "" => "" }` was removed from the payload in GitLab 14.0.
-> `time_to_restore_service` metric was introduced in GitLab 14.9.
+> - `time_to_restore_service` metric was introduced in GitLab 14.9.
You can also retrieve [DORA metrics](../../user/analytics/dora_metrics.md) with the [GraphQL API](../../api/graphql/reference/index.md).
diff --git a/doc/architecture/blueprints/ai_gateway/img/architecture.png b/doc/architecture/blueprints/ai_gateway/img/architecture.png
index 37f8e971b8e..31262ca0faa 100644
Binary files a/doc/architecture/blueprints/ai_gateway/img/architecture.png and b/doc/architecture/blueprints/ai_gateway/img/architecture.png differ
diff --git a/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-as-a-service.png b/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-as-a-service.png
index c30fa2970eb..82897dd03cf 100644
Binary files a/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-as-a-service.png and b/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-as-a-service.png differ
diff --git a/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-forecasting.png b/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-forecasting.png
index 25d959560e2..8214e5684b8 100644
Binary files a/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-forecasting.png and b/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-forecasting.png differ
diff --git a/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-reporting.png b/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-reporting.png
index 9d9a207571c..aad945b1490 100644
Binary files a/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-reporting.png and b/doc/architecture/blueprints/capacity_planning/images/dedicated-capacity-planning-reporting.png differ
diff --git a/doc/architecture/blueprints/work_items/index.md b/doc/architecture/blueprints/work_items/index.md
index 74690d34088..e08ef1fc3d0 100644
--- a/doc/architecture/blueprints/work_items/index.md
+++ b/doc/architecture/blueprints/work_items/index.md
@@ -85,6 +85,7 @@ All Work Item types share the same pool of predefined widgets and are customized
| [WorkItemWidgetStatus](../../../api/graphql/reference/index.md#workitemwidgetstatus) | Status of a work item when type is Requirement, with possible status types being `unverified`, `satisfied`, or `failed` | | |No|
| [WorkItemWidgetTestReports](../../../api/graphql/reference/index.md#workitemwidgettestreports) | Test reports associated with a work item | | | |
| [WorkItemWidgetWeight](../../../api/graphql/reference/index.md#workitemwidgetweight) | Set weight of a work item | |`Reporter`|No|
+| WorkItemWidgetLock | Lock/Unlock a work item | |`Reporter`|No|
#### Widget availability (updating)
@@ -144,12 +145,12 @@ Task is a special Work Item type. Tasks can be added to issues as child items an
### Feature flags
-Since this is a large project with numerous moving parts, feature flags are being used to track promotions of available widgets. The table below shows the different feature flags that are being used, and the audience that they are available to.
+Since this is a large project with numerous moving parts, feature flags are being used to track promotions of available widgets. The table below shows the different feature flags that are being used, and the audience that they are available to.
| feature flag name | audience |
|---|---|
| `work_items` | defaulted to on |
-| `work_items_mvc` | `gitlab-org`, `gitlab-com` |
+| `work_items_beta` | `gitlab-org`, `gitlab-com` |
| `work_items_mvc_2` | `gitlab-org/plan-stage` |
## Motivation
diff --git a/doc/development/documentation/testing.md b/doc/development/documentation/testing.md
index 160d25c225e..7abf40624e0 100644
--- a/doc/development/documentation/testing.md
+++ b/doc/development/documentation/testing.md
@@ -308,6 +308,19 @@ included in backticks. For example:
- `git clone` is a command, so it must be lowercase, while Git is the product,
so it must have a capital G.
+### Mermaid
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144328) in GitLab 16.10.
+
+[Mermaid](https://mermaid.js.org/) builds charts and diagrams from code.
+
+The `mermaidlint` job runs on merge requests that contain changes to Markdown files.
+The script (`scripts/lint/check_mermaid.mjs`) returns an error if any Markdown
+files return a Mermaid syntax error.
+
+To help debug your Mermaid charts, use the
+[Mermaid Live Editor](https://mermaid-js.github.io/mermaid-live-editor/edit).
+
### Vale
[Vale](https://vale.sh/) is a grammar, style, and word usage linter for the
diff --git a/doc/integration/twitter.md b/doc/integration/twitter.md
index 31ea670c24a..097b98761ae 100644
--- a/doc/integration/twitter.md
+++ b/doc/integration/twitter.md
@@ -31,7 +31,7 @@ Twitter. Twitter generates a client ID and secret key for you to use.
1. Fill in the application details.
- **Name**: This can be anything. Consider something like `'s GitLab`, `'s GitLab` or
- something else descriptive.
+ something else descriptive.
- **Description**: Create a description.
- **Website**: The URL to your GitLab installation. For example, `https://gitlab.example.com`
- **Callback URL**: `https://gitlab.example.com/users/auth/twitter/callback`
diff --git a/doc/operations/error_tracking.md b/doc/operations/error_tracking.md
index 8f3e97c11e4..11976964b80 100644
--- a/doc/operations/error_tracking.md
+++ b/doc/operations/error_tracking.md
@@ -191,7 +191,7 @@ To enable the Sentry integration:
For the SaaS version of Sentry, the hostname is `https://sentry.io`.
1. Under **Auth Token**, enter the token you previously generated.
1. To test the connection to Sentry and populate the **Project** dropdown list,
- select **Connect**.
+ select **Connect**.
1. From the **Project** list, choose a Sentry project to link to your GitLab project.
1. Select **Save changes**.
diff --git a/doc/security/hardening_application_recommendations.md b/doc/security/hardening_application_recommendations.md
index 4ff1e94deb4..890660ecb8a 100644
--- a/doc/security/hardening_application_recommendations.md
+++ b/doc/security/hardening_application_recommendations.md
@@ -102,7 +102,7 @@ If GitLab is in FIPS mode, use the following:
- Use `RSA`, set to **Must be at least 2048 bits**.
- Use `ECDSA` (and `ECDSA-SK`), set to **Must be at least 256 bits**.
- Set all other key types to **Are forbidden**.
- `RSA` and `ECDSA` are both approved for FIPS use.
+ `RSA` and `ECDSA` are both approved for FIPS use.
- If not running in FIPS mode, you must use `ED25519` and can also use `RSA`:
- Set `ED25519` (and `ED25519-SK`) to **Must be at least 256 bits**.
- If using `RSA`, set it to **Must be at least 2048 bits**.
diff --git a/doc/security/token_overview.md b/doc/security/token_overview.md
index 853d90c34f0..ebb76faf037 100644
--- a/doc/security/token_overview.md
+++ b/doc/security/token_overview.md
@@ -275,18 +275,20 @@ The following tables show the prefixes for each type of token where applicable.
1. Treat access tokens like passwords and keep them secure.
1. When creating a scoped token, consider using the most limited scope possible to reduce the impact of accidentally leaking the token.
1. When creating a token, consider setting a token that expires when your task is complete. For example, if performing a one-off import, set the
- token to expire after a few hours or a day. This reduces the impact of a token that is accidentally leaked because it is useless when it expires.
+ token to expire after a few hours or a day. This reduces the impact of a token that is accidentally leaked because it is useless when it expires.
1. If you have set up a demo environment to showcase a project you have been working on and you are recording a video or writing a blog post describing that project, make sure you are not leaking sensitive secrets (for example a personal access token (PAT), feed token or trigger token) during that process. If you have finished the demo, you must revoke all the secrets created during that demo. For more information, see [revoking a PAT](../user/profile/personal_access_tokens.md#revoke-a-personal-access-token).
1. Adding access tokens to URLs is a security risk, especially when cloning or adding a remote because Git then writes the URL to its `.git/config` file in plain text. URLs are
- also generally logged by proxies and application servers, which makes those credentials visible to system administrators. Instead, pass API calls an access token using
- headers like [the `Private-Token` header](../api/rest/index.md#personalprojectgroup-access-tokens).
+ also generally logged by proxies and application servers, which makes those credentials visible to system administrators. Instead, pass API calls an access token using
+ headers like [the `Private-Token` header](../api/rest/index.md#personalprojectgroup-access-tokens).
1. You can also store token using a [Git credential storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage).
1. Do not:
+
- Store tokens in plain text in your projects.
- Include tokens when pasting code, console commands, or log outputs into an issue, MR description, or comment.
+
Consider an approach such as [using external secrets in CI](../ci/secrets/index.md).
1. Do not log credentials in the console logs or artifacts. Consider [protecting](../ci/variables/index.md#protect-a-cicd-variable) and
- [masking](../ci/variables/index.md#mask-a-cicd-variable) your credentials.
+ [masking](../ci/variables/index.md#mask-a-cicd-variable) your credentials.
1. Review all active access tokens of all types on a regular basis and revoke any that are no longer needed. This includes:
- Personal, project, and group access tokens.
- Feed tokens.
diff --git a/doc/topics/git/lfs/migrate_to_git_lfs.md b/doc/topics/git/lfs/migrate_to_git_lfs.md
index 9887650c5f0..44755ad843c 100644
--- a/doc/topics/git/lfs/migrate_to_git_lfs.md
+++ b/doc/topics/git/lfs/migrate_to_git_lfs.md
@@ -120,9 +120,9 @@ Consider an example upstream project, `git@gitlab.com:gitlab-tests/test-git-lfs-
so that we can force-push the rewritten repository:
1. Navigate to your project's **Settings > Repository** and
- expand **Protected branches**.
+ expand **Protected branches**.
1. Scroll down to locate the protected branches and select
- **Unprotect** the default branch.
+ **Unprotect** the default branch.
1. Force-push to GitLab:
@@ -158,10 +158,10 @@ Consider an example upstream project, `git@gitlab.com:gitlab-tests/test-git-lfs-
1. [Re-protect the default branch](../../../user/project/protected_branches.md):
1. Navigate to your project's **Settings > Repository** and
- expand **Protected branches**.
+ expand **Protected branches**.
1. Select the default branch from the **Branch** dropdown list,
- and set up the
- **Allowed to push and merge** and **Allowed to merge** rules.
+ and set up the
+ **Allowed to push and merge** and **Allowed to merge** rules.
1. Select **Protect**.