Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2024-07-30 00:10:11 +00:00
parent da5677e7a7
commit f64d1064c5
47 changed files with 355 additions and 111 deletions

View File

@ -1 +1 @@
v17.3.0-rc3
5506cb6f0a19ce9e5569c12361139a288b08ebc4

View File

@ -217,9 +217,9 @@ gem 'seed-fu', '~> 2.3.7' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'elasticsearch-model', '~> 7.2', feature_category: :global_search
gem 'elasticsearch-rails', '~> 7.2', require: 'elasticsearch/rails/instrumentation', feature_category: :global_search
gem 'elasticsearch-api', '7.17.11', feature_category: :global_search
gem 'aws-sdk-core', '~> 3.200.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'aws-sdk-core', '~> 3.201.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'aws-sdk-cloudformation', '~> 1' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'aws-sdk-s3', '~> 1.155.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'aws-sdk-s3', '~> 1.156.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'faraday-typhoeus', '~> 1.1', feature_category: :global_search
gem 'faraday_middleware-aws-sigv4', '~> 1.0.1', feature_category: :global_search
# Used with Elasticsearch to support http keep-alive connections

View File

@ -37,9 +37,9 @@
{"name":"aws-eventstream","version":"1.3.0","platform":"ruby","checksum":"f1434cc03ab2248756eb02cfa45e900e59a061d7fbdc4a9fd82a5dd23d796d3f"},
{"name":"aws-partitions","version":"1.877.0","platform":"ruby","checksum":"9552ed7bbd3700ed1eeb0121c160ceaf64fa5dbaff5a1ff5fe6fd8481ecd9cfd"},
{"name":"aws-sdk-cloudformation","version":"1.41.0","platform":"ruby","checksum":"31e47539719734413671edf9b1a31f8673fbf9688549f50c41affabbcb1c6b26"},
{"name":"aws-sdk-core","version":"3.200.0","platform":"ruby","checksum":"1d9ac535f82b5ea7b3d6e0cee7be3c48981a948123a48ff755504b7343d16951"},
{"name":"aws-sdk-core","version":"3.201.3","platform":"ruby","checksum":"c045a7ff37b4a6f1de5742e64def0841bdf70d215cb17d3875b2c5bdd9e99d52"},
{"name":"aws-sdk-kms","version":"1.76.0","platform":"ruby","checksum":"e7f75013cba9ba357144f66bbc600631c192e2cda9dd572794be239654e2cf49"},
{"name":"aws-sdk-s3","version":"1.155.0","platform":"ruby","checksum":"4674e07846cc6d77d5bd122cef7fea5055e8b53bf238ab05beebc25ecb01c2e2"},
{"name":"aws-sdk-s3","version":"1.156.0","platform":"ruby","checksum":"9302da1d1a70363308854d5065035f6c72cf8b8af895d8789487cd5c6b076a46"},
{"name":"aws-sigv4","version":"1.8.0","platform":"ruby","checksum":"84dd99768b91b93b63d1d8e53ee837cfd06ab402812772a7899a78f9f9117cbc"},
{"name":"axe-core-api","version":"4.9.1","platform":"ruby","checksum":"9ea7ac16bfee1cb3545345d210878aa8cccfb41b493e00fe1faab79af4d9fed8"},
{"name":"axe-core-rspec","version":"4.9.1","platform":"ruby","checksum":"31ef067bee36d6efb3f156a83aa2fb6ac721270a53fb9473f0268e325a3e6efd"},

View File

@ -320,7 +320,7 @@ GEM
aws-sdk-cloudformation (1.41.0)
aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
aws-sdk-core (3.200.0)
aws-sdk-core (3.201.3)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
@ -328,10 +328,10 @@ GEM
aws-sdk-kms (1.76.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.155.0)
aws-sdk-core (~> 3, >= 3.199.0)
aws-sdk-s3 (1.156.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.8.0)
aws-eventstream (~> 1, >= 1.0.2)
axe-core-api (4.9.1)
@ -1947,8 +1947,8 @@ DEPENDENCIES
attr_encrypted (~> 3.2.4)!
awesome_print
aws-sdk-cloudformation (~> 1)
aws-sdk-core (~> 3.200.0)
aws-sdk-s3 (~> 1.155.0)
aws-sdk-core (~> 3.201.0)
aws-sdk-s3 (~> 1.156.0)
axe-core-rspec (~> 4.9.0)
babosa (~> 2.0)
base32 (~> 0.3.0)

View File

@ -57,8 +57,8 @@ export default {
};
</script>
<template>
<div class="gl-h-full flex gl-justify-center gl-items-center gl-p-4">
<div class="text-center gl-max-w-75 gl-h-80">
<div class="gl-h-full flex gl-justify-center gl-items-center overflow-auto">
<div class="text-center gl-max-w-75 gl-p-4">
<img :alt="$options.i18n.imgAlt" :src="$options.gitlabLogo" class="svg gl-w-12 gl-h-12" />
<h1 class="gl-heading-display gl-my-6">{{ $options.i18n.heading }}</h1>
<p>

View File

@ -370,7 +370,11 @@ module SearchHelper
end
def users_autocomplete(term, limit = 5)
return [] unless current_user && Ability.allowed?(current_user, :read_users_list)
unless current_user &&
Ability.allowed?(current_user, :read_users_list) &&
Feature.enabled?(:global_search_users_tab, current_user, type: :ops)
return []
end
::SearchService
.new(current_user, { scope: 'users', per_page: limit, search: term })

View File

@ -19,3 +19,4 @@ desired_sharding_key:
table: merge_requests
sharding_key: target_project_id
belongs_to: merge_request
desired_sharding_key_migration_job_name: BackfillApprovalsProjectId

View File

@ -0,0 +1,9 @@
---
migration_job_name: BackfillApprovalsProjectId
description: Backfills sharding key `approvals.project_id` from `merge_requests`.
feature_category: code_review_workflow
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/160035
milestone: '17.3'
queued_migration_version: 20240719090631
finalize_after: '2024-08-22'
finalized_by: # version of the migration that finalized this BBM

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
class AddProjectIdToApprovals < Gitlab::Database::Migration[2.2]
milestone '17.3'
def change
add_column :approvals, :project_id, :bigint
end
end

View File

@ -0,0 +1,16 @@
# frozen_string_literal: true
class PrepareIndexApprovalsOnProjectId < Gitlab::Database::Migration[2.2]
milestone '17.3'
disable_ddl_transaction!
INDEX_NAME = 'index_approvals_on_project_id'
def up
prepare_async_index :approvals, :project_id, name: INDEX_NAME
end
def down
unprepare_async_index :approvals, INDEX_NAME
end
end

View File

@ -0,0 +1,25 @@
# frozen_string_literal: true
class AddApprovalsProjectIdTrigger < Gitlab::Database::Migration[2.2]
milestone '17.3'
def up
install_sharding_key_assignment_trigger(
table: :approvals,
sharding_key: :project_id,
parent_table: :merge_requests,
parent_sharding_key: :target_project_id,
foreign_key: :merge_request_id
)
end
def down
remove_sharding_key_assignment_trigger(
table: :approvals,
sharding_key: :project_id,
parent_table: :merge_requests,
parent_sharding_key: :target_project_id,
foreign_key: :merge_request_id
)
end
end

View File

@ -0,0 +1,40 @@
# frozen_string_literal: true
class QueueBackfillApprovalsProjectId < Gitlab::Database::Migration[2.2]
milestone '17.3'
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell
MIGRATION = "BackfillApprovalsProjectId"
DELAY_INTERVAL = 2.minutes
BATCH_SIZE = 5000
SUB_BATCH_SIZE = 500
def up
queue_batched_background_migration(
MIGRATION,
:approvals,
:id,
:project_id,
:merge_requests,
:target_project_id,
:merge_request_id,
job_interval: DELAY_INTERVAL,
batch_size: BATCH_SIZE,
sub_batch_size: SUB_BATCH_SIZE
)
end
def down
delete_batched_background_migration(
MIGRATION,
:approvals,
:id,
[
:project_id,
:merge_requests,
:target_project_id,
:merge_request_id
]
)
end
end

View File

@ -0,0 +1 @@
d324e4a8bff9cccb8649ab4cc6ea397653273675524acc8a94d2424065d1ee93

View File

@ -0,0 +1 @@
d11dbf3f9ee40a575fde7f1269545c950fb8e99ff3ea2aa9424de04888df2ef8

View File

@ -0,0 +1 @@
3e420f591521d9e8de4798ba65ba57f70c80145e833777bdf48c45f35375f122

View File

@ -0,0 +1 @@
7245ee97292511473ed69eff6a6da6546cd11a54ba113ee3bcb941294dd79a00

View File

@ -777,6 +777,22 @@ RETURN NEW;
END
$$;
CREATE FUNCTION trigger_038fe84feff7() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF NEW."project_id" IS NULL THEN
SELECT "target_project_id"
INTO NEW."project_id"
FROM "merge_requests"
WHERE "merge_requests"."id" = NEW."merge_request_id";
END IF;
RETURN NEW;
END
$$;
CREATE FUNCTION trigger_05ce163deddf() RETURNS trigger
LANGUAGE plpgsql
AS $$
@ -6174,7 +6190,8 @@ CREATE TABLE approvals (
user_id integer NOT NULL,
created_at timestamp without time zone,
updated_at timestamp without time zone,
patch_id_sha bytea
patch_id_sha bytea,
project_id bigint
);
CREATE SEQUENCE approvals_id_seq
@ -31882,6 +31899,8 @@ CREATE TRIGGER tags_loose_fk_trigger AFTER DELETE ON tags REFERENCING OLD TABLE
CREATE TRIGGER trigger_01b3fc052119 BEFORE INSERT OR UPDATE ON approval_merge_request_rules FOR EACH ROW EXECUTE FUNCTION trigger_01b3fc052119();
CREATE TRIGGER trigger_038fe84feff7 BEFORE INSERT OR UPDATE ON approvals FOR EACH ROW EXECUTE FUNCTION trigger_038fe84feff7();
CREATE TRIGGER trigger_05ce163deddf BEFORE INSERT OR UPDATE ON status_check_responses FOR EACH ROW EXECUTE FUNCTION trigger_05ce163deddf();
CREATE TRIGGER trigger_0a1b0adcf686 BEFORE INSERT OR UPDATE ON packages_debian_project_components FOR EACH ROW EXECUTE FUNCTION trigger_0a1b0adcf686();

View File

@ -209,12 +209,18 @@ Specify a comma separated list of IP addresses that can access your GitLab Dedic
### SAML
NOTE:
GitLab Dedicated supports a limited number of SAML parameters. Parameters not shown in the configuration below are unavailable for GitLab Dedicated instances.
You can [configure SAML single sign-on (SSO)](../../integration/saml.md#configure-saml-support-in-gitlab) for your GitLab Dedicated instance.
The following SAML SSO options are available:
- [Request signing](../../integration/saml.md#sign-saml-authentication-requests-optional)
- [SAML SSO for groups](../../integration/saml.md#configure-users-based-on-saml-group-membership)
- [Group sync](../../user/group/saml_sso/group_sync.md#configure-saml-group-sync)
Prerequisites:
- You must configure the identity provider before sending the required data to GitLab.
- You must [set up the identity provider (IdP)](../../integration/saml.md#set-up-identity-providers) before you can configure SAML for GitLab Dedicated.
- To configure GitLab to sign SAML authentication requests, you must create a private key and public certificate pair for your GitLab Dedicated instance.
#### Activate SAML with Switchboard
@ -224,9 +230,23 @@ To activate SAML for your GitLab Dedicated instance:
1. At the top of the page, select **Configuration**.
1. Expand **SAML Config**.
1. Turn on the **Enable** toggle.
1. Complete the fields.
1. Complete the required fields:
- SAML label
- IdP cert fingerprint
- IdP SSO target URL
1. Optional. To configure users based on SAML group membership, complete the following fields:
- SAML group attribute
- Admin groups
- Auditor groups
- External groups
- Required groups
1. Optional. To configure SAML request signing, complete the following fields:
- Name identifier format
- Attribute statements
- Security
1. Select **Save**.
1. Scroll up to the top of the page and select whether to apply the changes immediately or during the next maintenance window.
1. Optional. To use group sync, [configure the SAML group links](../../user/group/saml_sso/group_sync.md#configure-saml-group-links).
1. To verify the SAML configuration is successful:
- Check that the SSO button description is displayed on your instance's sign-in page.
- Go to the metadata URL of your instance (`https://INSTANCE-URL/users/auth/saml/metadata`). This page can be used to simplify much of the configuration of the identity provider, and manually validate the settings.

View File

@ -26,7 +26,7 @@ masks the problem by:
1. Upgrading the Gitaly binary in-place.
1. Performing a graceful reload.
The same approach doesn't fit a container-based lifecycle where a container or pod needs to fully shutdown and start as a new container or pod.
Gitaly Cluster (Praefect) solves the data and service high-availability aspect by replicating data across instances. However, Gitaly Cluster is unsuited to run in Kubernetes
@ -60,9 +60,9 @@ service disruption and helps set expectations. You should use maintenance window
- Gitaly configuration changes.
- Kubernetes node maintenance windows. For example, upgrades and patching. Isolating Gitaly into its own dedicated node pool might help.
#### Use [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass)
#### Use `PriorityClass`
Assign Gitaly pods higher priority compared to other pods, to help with node saturation pressure, eviction priority, and scheduling latency:
Use [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass) to assign Gitaly pods higher priority compared to other pods, to help with node saturation pressure, eviction priority, and scheduling latency:
1. Create a priority class:

View File

@ -21594,6 +21594,7 @@ Describes an external status check.
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="externalstatuscheckexternalurl"></a>`externalUrl` | [`String!`](#string) | External URL for the status check. |
| <a id="externalstatuscheckhmac"></a>`hmac` | [`Boolean!`](#boolean) | Whether or not HMAC secret is enabled for the status check. |
| <a id="externalstatuscheckid"></a>`id` | [`GlobalID!`](#globalid) | ID of the rule. |
| <a id="externalstatuscheckname"></a>`name` | [`String!`](#string) | Name of the rule. |

View File

@ -51,6 +51,7 @@ The `upload[url]` parameter is required if the `upload` parameter is present.
For uploads to Amazon S3, refer to [Generating a pre-signed URL for uploading objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html)
documentation scripts to generate the `upload[url]`.
Because of a [known issue](https://gitlab.com/gitlab-org/gitlab/-/issues/430277), you can only upload files with a maximum file size of 5 GB to Amazon S3.
```plaintext
POST /projects/:id/export

View File

@ -21,7 +21,7 @@ works with a set of [ETL](#etl) Pipelines leveraging from the current [GitLab AP
![Simplified Component Overview](img/bulk_imports_overview_v13_7.png)
### [ETL](https://www.ibm.com/topics/etl)
### ETL
<!-- Direct quote from the IBM URL link -->
@ -29,7 +29,7 @@ works with a set of [ETL](#etl) Pipelines leveraging from the current [GitLab AP
> combines data from multiple data sources into a single, consistent data store
> that is loaded into a data warehouse or other target system.
Using ETL architecture makes the code more explicit and easier to follow, test and extend. The
Using [ETL](https://www.ibm.com/topics/etl) architecture makes the code more explicit and easier to follow, test and extend. The
idea is to have one ETL pipeline for each relation to be imported.
### API

View File

@ -357,7 +357,9 @@ See the issue for [allowing parsing of raw Ruby objects](https://gitlab.com/gitl
### Generator to generate _n_ amount of records
### [Group Labels](https://gitlab.com/gitlab-org/gitlab/-/blob/master/spec/factories/labels.rb)
### Group Labels
[Group Labels](https://gitlab.com/gitlab-org/gitlab/-/blob/master/spec/factories/labels.rb):
```yaml
group_labels:
@ -367,7 +369,9 @@ group_labels:
color: "#FF0000"
```
### [Group Milestones](https://gitlab.com/gitlab-org/gitlab/-/blob/master/spec/factories/milestones.rb)
### Group Milestones
[Group Milestones](https://gitlab.com/gitlab-org/gitlab/-/blob/master/spec/factories/milestones.rb):
```yaml
group_milestones:
@ -397,7 +401,9 @@ group_milestones:
- You _must_ specify `group:` and have it be empty. This is because the Milestones factory manipulates the factory in an `after(:build)`. If this is not present, the Milestone cannot be associated properly with the Group.
### [Epics](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/spec/factories/epics.rb)
### Epics
[Epics](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/spec/factories/epics.rb):
```yaml
epics:

View File

@ -40,8 +40,9 @@ migrating all primary keys to `bigint`, using `bigint` foreign keys
saves time, and requires fewer steps, when migrating the parent table
to `bigint` primary keys.
## Consider using `reverse_lock_order` for [high traffic tables](../migration_style_guide.md#high-traffic-tables)
## Consider `reverse_lock_order`
Consider using `reverse_lock_order` for [high traffic tables](../migration_style_guide.md#high-traffic-tables)
Both `add_concurrent_foreign_key` and `remove_foreign_key_if_exists` take a
boolean option `reverse_lock_order` which defaults to false.

View File

@ -57,7 +57,7 @@ bound on mounting and destroyed when the button is, mitigating the above
issue. It also has bindings to a particular container or modal ID
available, to work with the focus trap created by our GlModal.
### 3. A `gitlab-ui` component not conforming to [Pajamas Design System](https://design.gitlab.com/)
### 3. A `gitlab-ui` component not conforming to Pajamas Design System
Some [Pajamas Design System](https://design.gitlab.com/) components implemented in
`gitlab-ui` do not conform with the design system specs. This is because they lack some

View File

@ -53,9 +53,9 @@ see [Immutability and cache updates](#immutability-and-cache-updates) for more i
<!-- vale gitlab.Spelling = YES -->
#### [Apollo GraphQL VS Code extension](https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo)
#### Apollo GraphQL VS Code extension
If you use VS Code, the Apollo GraphQL extension supports autocompletion in `.graphql` files. To set up
If you use VS Code, the [Apollo GraphQL extension](https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo) supports autocompletion in `.graphql` files. To set up
the GraphQL extension, follow these steps:
1. Generate the schema: `bundle exec rake gitlab:graphql:schema:dump`

View File

@ -115,14 +115,14 @@ Reusable components with technical and usage guidelines can be found in our
Read the [frontend FAQ](frontend_faq.md) for common small pieces of helpful information.
#### [Internationalization (i18n) and Translations](../i18n/externalization.md)
#### Internationalization (i18n) and Translations
Frontend internationalization support is described in [this document](../i18n/index.md).
Frontend internationalization support is described in [**Translate GitLab to your language**](../i18n/index.md).
The [externalization part of the guide](../i18n/externalization.md) explains the helpers/methods available.
#### [Troubleshooting](troubleshooting.md)
#### Troubleshooting
Running into a Frontend development problem? Check out [this guide](troubleshooting.md) to help resolve your issue.
Running into a Frontend development problem? Check out [this troubleshooting guide](troubleshooting.md) to help resolve your issue.
#### Browser support

View File

@ -1305,7 +1305,9 @@ to update upcoming reconciliations for namespaces.
Use a PUT command to update `upcoming_reconciliations`.
#### Old API (deprecated, [New API](#new-update-upcoming_reconciliations-api))
#### Old API (deprecated)
For the new API, see **New Update upcoming_reconciliations API** below.
```plaintext
PUT /internal/upcoming_reconciliations
@ -1370,10 +1372,12 @@ Example response:
### Delete an `upcoming_reconciliation`
#### Old API (deprecated, [New API](#new-delete-upcoming_reconciliations-api))
#### Old API (deprecated)
Use a DELETE command to delete an `upcoming_reconciliation`.
For the new API, see **New delete upcoming_reconciliations API** below.
```plaintext
DELETE /internal/upcoming_reconciliations
```

View File

@ -28,59 +28,59 @@ automated testing means, and what are its principles:
- [Five Factor Testing](https://madeintandem.com/blog/five-factor-testing/): Why do we need tests?
- [Principles of Automated Testing](https://www.lihaoyi.com/post/PrinciplesofAutomatedTesting.html): Levels of testing. Prioritize tests. Cost of tests.
## [Testing levels](testing_levels.md)
## Testing levels
Learn about the different testing levels, and how to decide at what level your
Learn about the different [testing levels](testing_levels.md), and how to decide at what level your
changes should be tested.
## [Testing best practices](best_practices.md)
## Testing best practices
Everything you should know about how to write good tests: Test Design, RSpec, FactoryBot,
Everything you should know about [how to write good tests](best_practices.md): Test Design, RSpec, FactoryBot,
system tests, parameterized tests etc.
## [Frontend testing standards and style guidelines](frontend_testing.md)
## Frontend testing standards and style guidelines
Everything you should know about how to write good Frontend tests: Jest,
Everything you should know about [how to write good Frontend tests](frontend_testing.md): Jest,
testing promises, stubbing etc.
## [Getting started with Feature tests](frontend_testing.md#get-started-with-feature-tests)
## Getting started with Feature tests
Need to get started with feature tests? Here are some general guidelines,
Need to [get started with feature tests](frontend_testing.md#get-started-with-feature-tests)? Here are some general guidelines,
tips and tricks to get the most out of white-box testing.
## [Flaky tests](flaky_tests.md)
## Flaky tests
What are flaky tests, the different kind of flaky tests we encountered, and what
What are [flaky tests](flaky_tests.md), the different kind of flaky tests we encountered, and what
we do about them.
## [GitLab pipelines](../pipelines/index.md)
## GitLab pipelines
How GitLab test suite is run in the CI context: setup, caches, artifacts,
How GitLab test suite [is run in the CI context](../pipelines/index.md): setup, caches, artifacts,
parallelization, monitoring.
## [Review apps](review_apps.md)
## Review apps
How review apps are set up for GitLab CE/EE and how to use them.
How [review apps](review_apps.md) are set up for GitLab CE/EE and how to use them.
## [Testing Rake tasks](testing_rake_tasks.md)
## Testing Rake tasks
Everything you should know about how to test Rake tasks.
Everything you should know about [how to test Rake tasks](testing_rake_tasks.md).
## [End-to-end tests](end_to_end/index.md)
## End-to-end tests
Everything you should know about how to run end-to-end tests using
Everything you should know about [how to run end-to-end tests](end_to_end/index.md) using
[GitLab QA](https://gitlab.com/gitlab-org/gitlab-qa) testing framework.
## [Migrations tests](testing_migrations_guide.md)
## Migrations tests
Everything you should know about how to test migrations.
Everything you should know about [how to test migrations](testing_migrations_guide.md).
## [Contract tests](contract/index.md)
## Contract tests
Introduction to contract testing, how to run the tests, and how to write them.
[Introduction to contract testing](contract/index.md), how to run the tests, and how to write them.
## [Test results tracking](test_results_tracking.md)
## Test results tracking
How we track our test suite run results.
How we track our [test suite run results](test_results_tracking.md).
[Return to Development documentation](../index.md)

View File

@ -12,10 +12,12 @@ DETAILS:
**Status:** Beta
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/143027) in GitLab 16.10 [with a flag](../administration/feature_flags.md) named `observability_logs`. Disabled by default. This feature is in [beta](../policy/experiment-beta-support.md#beta).
> - Feature flag [changed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158786) in GitLab 17.3 to the `observability_features` [feature flag](../administration/feature_flags.md), disabled by default. The previous feature flag (`observability_logs`) was removed.
FLAG:
This feature is only available on GitLab.com. On self-managed GitLab and GitLab Dedicated, by default this feature is not available.
This feature is not ready for production use.
The availability of this feature is controlled by a feature flag.
For more information, see the history.
This feature is available for testing, but not ready for production use.
GitLab supports centralized application and infrastructure logs collection, storage, and analysis.
GitLab Logging provides insight about the operational health of monitored systems.

View File

@ -12,10 +12,12 @@ DETAILS:
**Status:** Beta
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966) in GitLab 16.7 [with a flag](../administration/feature_flags.md) named `observability_metrics`. Disabled by default. This feature is an [experiment](../policy/experiment-beta-support.md#experiment).
> - Feature flag [changed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158786) in GitLab 17.3 to the `observability_features` [feature flag](../administration/feature_flags.md), disabled by default. The previous feature flag (`observability_metrics`) was removed.
FLAG:
This feature is only available on GitLab.com. On self-managed GitLab and GitLab Dedicated, by default this feature is not available.
This feature is not ready for production use.
The availability of this feature is controlled by a feature flag.
For more information, see the history.
This feature is available for testing, but not ready for production use.
Metrics provide insight about the operational health of monitored systems.
Use metrics to learn more about your systems and applications in a given time range.

View File

@ -11,13 +11,13 @@ DETAILS:
**Offering:** GitLab.com
**Status:** Beta
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966) in GitLab 16.2 [with flags](../administration/feature_flags.md) named `observability_group_tab` and `observability_tracing`. Disabled by default. This feature is in [beta](../policy/experiment-beta-support.md#beta).
> - Feature flag `observability_group_tab` [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/133264) in GitLab 16.5.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966) in GitLab 16.2 [with a flag](../administration/feature_flags.md) named `observability_tracing`. Disabled by default. This feature is in [beta](../policy/experiment-beta-support.md#beta).
> - Feature flag [changed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158786) in GitLab 17.3 to the `observability_features` [feature flag](../administration/feature_flags.md), disabled by default. The previous feature flag `observability_tracing` was removed.
FLAG:
On GitLab.com, by default this feature is not available.
To make it available, an administrator can [enable the feature flag](../administration/feature_flags.md) named `observability_tracing`.
This feature is not ready for production use.
The availability of this feature is controlled by a feature flag.
For more information, see the history.
This feature is available for testing, but not ready for production use.
With distributed tracing, you can troubleshoot application performance issues by inspecting how a request moves through different services and systems, the timing of each operation, and any errors or logs as they occur. Tracing is particularly useful in the context of microservice applications, which group multiple independent services collaborating to fulfill user requests.

View File

@ -85,17 +85,18 @@ Set up Dependency Scanning. For detailed instructions, follow [the Dependency Sc
```yaml
export-merged-sbom:
image: alpine
before_script:
- apk add --update jq curl
stage: .post
script:
- |
curl --header "Authorization: Bearer $PRIVATE_TOKEN"
--output export.sh --url "https://gitlab.com/api/v4/snippets/<SNIPPET_ID>/raw"
- |
curl --header "Authorization: Bearer $PRIVATE_TOKEN" --output export.sh --url "https://gitlab.com/api/v4/snippets/<SNIPPET_ID>/raw"
- /bin/sh export.sh
artifacts:
paths:
- "gl-sbom-merged-*.cdx.json"
```
1. Go to **Build > Pipelines** and confirm that the latest pipeline completed successfully.

View File

@ -11,14 +11,11 @@ DETAILS:
**Offering:** GitLab.com
**Status:** Beta
> - Observability features [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966) in GitLab 17.3 [with a flag](../../administration/feature_flags.md) named `observability_features`. Disabled by default.
FLAG:
The availability of this feature is controlled by a feature flag.
For more information, see the history.
This feature is available for testing, but not ready for production use.
For more information, see the history of the [**Distributed tracing** feature](../../operations/tracing.md).
In this tutorial, we'll show you how to create, configure, instrument and monitor a Django application using GitLab observability features.
In this tutorial, we'll show you how to create, configure, instrument, and monitor a Django application using GitLab observability features.
<!-- vale gitlab.SentenceSpacing = NO -->
@ -178,7 +175,7 @@ To create an application:
1. To start collecting traces, restart the Django server. After refreshing `/animals` a few times, you should see traces in the GitLab UI.
![Django traces](img/django_traces.png)
![Django traces](img/django_traces.png)
1. Optional. Django will also export certain metrics by default to GitLab, but custom metrics are supported too. For example, to increment a counter metric every time a page is loaded, add the following code:

View File

@ -11,12 +11,9 @@ DETAILS:
**Offering:** GitLab.com
**Status:** Beta
> - Observability tracing [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966) in GitLab 16.2 [with a flag](../../administration/feature_flags.md) named `observability_tracing`. Disabled by default.
FLAG:
The availability of this feature is controlled by a feature flag.
For more information, see the history.
This feature is available for testing, but not ready for production use.
For more information, see the history of the [**Distributed tracing** feature](../../operations/tracing.md).
In this tutorial, you'll learn how to configure, instrument, and monitor a NodeJS application using GitLab Observability features.

View File

@ -11,12 +11,9 @@ DETAILS:
**Offering:** GitLab.com
**Status:** Beta
> - Observability tracing [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966) in GitLab 16.2 [with a flag](../../administration/feature_flags.md) named `observability_tracing`. Disabled by default.
FLAG:
The availability of this feature is controlled by a feature flag.
For more information, see the history.
This feature is available for testing, but not ready for production use.
For more information, see the history of the [**Distributed tracing** feature](../../operations/tracing.md).
In this tutorial, you'll learn how to create, configure, instrument, and monitor a Ruby on Rails application using GitLab Observability features.

View File

@ -18,7 +18,7 @@ Each row of the report shows:
- Project name.
- Project path.
- Compliance framework label if the project has one assigned.
- Compliance framework labels if the project has one or more assigned.
The default framework for the group has a **default** badge.
@ -40,7 +40,7 @@ To view the compliance projects report:
> - Adding compliance frameworks without using bulk actions [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/394795) in GitLab 16.0.
> - Ability to add compliance frameworks to subgroups [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/469004) in GitLab 17.2.
You can apply a compliance framework to projects in a group or subgroup.
You can apply one or more compliance frameworks to projects in a group or subgroup.
Prerequisites:
@ -51,8 +51,8 @@ To apply a compliance framework to one project in a group:
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Secure > Compliance center**.
1. On the page, select the **Projects** tab.
1. Next to the project you want to add the compliance framework to, select **{plus}** **Add framework**.
1. Select an existing compliance framework or create a new one.
1. Next to the project you want to add the compliance framework to, select **{pencil}** action.
1. Select one or more existing compliance frameworks or create a new one.
To apply a compliance framework to multiple projects in a group:

View File

@ -43,10 +43,10 @@ the [Duo Chat examples](../gitlab_duo_chat_examples.md).
For self-managed, the models also depend on your GitLab version.
For the most benefit, use the latest GitLab version whenever possible.
#### Root cause analysis
### Root cause analysis
DETAILS:
**Tier:** Ultimate with [GitLab Duo Enterprise](../../subscriptions/subscription-add-ons.md).
**Tier:** Ultimate with [GitLab Duo Enterprise](../../subscriptions/subscription-add-ons.md)
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123692) in GitLab 16.2 as an [experiment](../../policy/experiment-beta-support.md#experiment) on GitLab.com.
@ -54,7 +54,7 @@ DETAILS:
- Helps you determine the root cause for a CI/CD job failure by analyzing the logs.
- LLM: Anthropic's [Claude 3.5 Sonnet](https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-sonnet)
- [View documentation](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis)
- [View documentation](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis).
### Code Suggestions
@ -194,17 +194,6 @@ DETAILS:
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=Bx6Zajyuy9k&list=PLFGfElNsQthYDx0A_FaNNfUm9NHsK6zED)
- [View documentation](../project/merge_requests/duo_in_merge_requests.md#summarize-a-code-review).
### Root cause analysis
DETAILS:
**Tier:** For a limited time, Ultimate. In the future, [GitLab Duo Enterprise](../../subscriptions/subscription-add-ons.md).
**Offering:** GitLab.com
**Status:** Experiment
- Helps you determine the root cause for a CI/CD job failure by analyzing the logs.
- LLM: Vertex AI Codey [`text-bison`](https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/text-bison)
- [View documentation](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis).
### Vulnerability resolution
DETAILS:

View File

@ -24,7 +24,9 @@ and [must be turned on](#turn-on-beta-and-experimental-features).
## Configure GitLab Duo on a self-managed instance
To use GitLab Duo on a self-managed instance, you must ensure connectivity exists.
To use GitLab Duo on a self-managed instance, you must ensure both outbound and inbound connectivity exists.
For example, network firewalls can cause lag or delay. Check both your outbound and inbound settings:
### Allow outbound connections from the GitLab instance
@ -45,6 +47,17 @@ To use GitLab Duo on a self-managed instance, you must ensure connectivity exist
- Check for restrictions on WebSocket (`wss://`) traffic to `wss://gitlab.example.com/-/cable` and other `.com` domains.
Network policy restrictions on `wss://` traffic can cause issues with some GitLab Duo Chat
services. Consider policy updates to allow these services.
- If you use reverse proxies, such as Apache, you might see GitLab Duo Chat connection issues in your logs, like **WebSocket connection to .... failures**.
To resolve this problem, try editing your Apache proxy settings:
```apache
# Enable WebSocket reverse Proxy
# Needs proxy_wstunnel enabled
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://127.0.0.1:8181/$1" [P,L]
```
## Turn off GitLab Duo features

View File

@ -17,7 +17,9 @@ In the Ultimate tier, the compliance framework can optionally enforce
[compliance pipeline configuration](compliance_pipelines.md) and [security policies](../application_security/policies/scan-execution-policies.md#security-policy-scopes) to the projects on which it is applied.
Compliance frameworks are created on top-level groups. If a project is moved outside of its existing top-level group,
its framework is removed.
its frameworks are removed.
You can apply multiple compliance frameworks to a project.
## Prerequisites
@ -47,7 +49,9 @@ or deleted at the subgroup or project level. Project owners can choose a framewo
## Add a compliance framework to a project
Add a compliance framework to a project. Compliance frameworks cannot be added to projects in personal namespaces.
> - Assigning multiple compliance frameworks [introduced](https://gitlab.com/groups/gitlab-org/-/epics/13294) in GitLab 17.3.
Add a compliance framework to a project. You can apply multiple compliance frameworks to a project but cannot add compliance frameworks to projects in personal namespaces.
To assign a compliance framework to a project, apply the compliance framework through the
[Compliance projects report](../compliance/compliance_center/compliance_projects_report.md#apply-a-compliance-framework-to-projects-in-a-group).

View File

@ -329,7 +329,7 @@ replaces the default sidebar navigation:
A `_sidebar` example, formatted with Markdown:
```markdown
### [Home](home)
### Home
- [Hello World](hello)
- [Foo](foo)

View File

@ -42,7 +42,7 @@ by disabling one or more [`ops` feature flags](../../development/feature_flags/i
| Epics | `global_search_epics_tab` | When enabled, global search includes epics. |
| Issues | `global_search_issues_tab` | When enabled, global search includes issues. |
| Merge requests | `global_search_merge_requests_tab` | When enabled, global search includes merge requests. |
| Users | `global_search_users_tab` | When enabled, global search includes users. |
| Users | `global_search_users_tab` | When enabled, global search and command palette includes users. |
| Wiki | `global_search_wiki_tab` | When enabled, global search includes project and [group wikis](../project/wiki/group.md). |
All global search scopes are enabled by default on self-managed instances.

View File

@ -0,0 +1,10 @@
# frozen_string_literal: true
module Gitlab
module BackgroundMigration
class BackfillApprovalsProjectId < BackfillDesiredShardingKeyJob
operation_name :backfill_approvals_project_id
feature_category :code_review_workflow
end
end
end

View File

@ -51,7 +51,7 @@ RSpec.describe 'Database schema', feature_category: :database do
abuse_reports: %w[reporter_id user_id],
abuse_report_notes: %w[discussion_id],
application_settings: %w[performance_bar_allowed_group_id slack_app_id snowplow_app_id eks_account_id eks_access_key_id],
approvals: %w[user_id],
approvals: %w[user_id project_id],
approver_groups: %w[target_id],
approvers: %w[target_id user_id],
analytics_cycle_analytics_aggregations: %w[last_full_issues_id last_full_merge_requests_id last_incremental_issues_id last_full_run_issues_id last_full_run_merge_requests_id last_incremental_merge_requests_id last_consistency_check_issues_stage_event_hash_id last_consistency_check_issues_issuable_id last_consistency_check_merge_requests_stage_event_hash_id last_consistency_check_merge_requests_issuable_id],

View File

@ -471,6 +471,18 @@ RSpec.describe SearchHelper, feature_category: :global_search do
resource_results(term, scope: scope)
end
end
context 'when global_search_users_tab feature flag is disabled' do
before do
stub_feature_flags(global_search_users_tab: false)
end
it 'does not return results' do
results = resource_results('use')
expect(results).to be_empty
end
end
end
describe 'scope_specific_results' do
@ -510,6 +522,18 @@ RSpec.describe SearchHelper, feature_category: :global_search do
expect(scope_specific_results('sea', 'other')).to eq([])
end
end
context 'when global_search_users_tab feature flag is disabled' do
before do
stub_feature_flags(global_search_users_tab: false)
end
it 'does not return results' do
results = scope_specific_results('sea', 'users')
expect(results).to be_empty
end
end
end
describe 'projects_autocomplete' do

View File

@ -0,0 +1,15 @@
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::BackfillApprovalsProjectId,
feature_category: :code_review_workflow,
schema: 20240719090628 do
include_examples 'desired sharding key backfill job' do
let(:batch_table) { :approvals }
let(:backfill_column) { :project_id }
let(:backfill_via_table) { :merge_requests }
let(:backfill_via_column) { :target_project_id }
let(:backfill_via_foreign_key) { :merge_request_id }
end
end

View File

@ -0,0 +1,33 @@
# frozen_string_literal: true
require 'spec_helper'
require_migration!
RSpec.describe QueueBackfillApprovalsProjectId, feature_category: :code_review_workflow do
let!(:batched_migration) { described_class::MIGRATION }
it 'schedules a new batched migration' do
reversible_migration do |migration|
migration.before -> {
expect(batched_migration).not_to have_scheduled_batched_migration
}
migration.after -> {
expect(batched_migration).to have_scheduled_batched_migration(
table_name: :approvals,
column_name: :id,
interval: described_class::DELAY_INTERVAL,
batch_size: described_class::BATCH_SIZE,
sub_batch_size: described_class::SUB_BATCH_SIZE,
gitlab_schema: :gitlab_main_cell,
job_arguments: [
:project_id,
:merge_requests,
:target_project_id,
:merge_request_id
]
)
}
end
end
end