Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-06-10 06:07:26 +00:00
parent b2492aae80
commit 40dd502d11
40 changed files with 182 additions and 88 deletions

View File

@ -1 +1 @@
0.0.38
0.0.39

View File

@ -514,7 +514,7 @@ group :development, :test do
gem 'awesome_print', require: false, feature_category: :shared
gem 'database_cleaner-active_record', '~> 2.2.0', feature_category: :database
gem 'rspec-rails', '~> 7.0.0', feature_category: :shared
gem 'rspec-rails', '~> 7.1.0', feature_category: :shared
gem 'factory_bot_rails', '~> 6.4.3', feature_category: :tooling
# Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)

View File

@ -629,7 +629,7 @@
{"name":"rspec-parameterized","version":"1.0.2","platform":"ruby","checksum":"b456dec0091924175ac13963e173cdbaa2ab3e1581a405a948addc34e3f3f4c2"},
{"name":"rspec-parameterized-core","version":"1.0.0","platform":"ruby","checksum":"287b494985e79821160af63aba4f91db8dbfa9a21cb200db34ba38f40e16ccc1"},
{"name":"rspec-parameterized-table_syntax","version":"1.0.0","platform":"ruby","checksum":"d7df951eff9c5dd367ca7d5f9ae4853bb7ab7941f9d5b35bba361d112704988c"},
{"name":"rspec-rails","version":"7.0.1","platform":"ruby","checksum":"ad2b2cb6dabca072260e21b188059645bac10659466c02a674f9ad5fd97b92f9"},
{"name":"rspec-rails","version":"7.1.1","platform":"ruby","checksum":"e15dccabed211e2fd92f21330c819adcbeb1591c1d66c580d8f2d8288557e331"},
{"name":"rspec-retry","version":"0.6.2","platform":"ruby","checksum":"6101ba23a38809811ae3484acde4ab481c54d846ac66d5037ccb40131a60d858"},
{"name":"rspec-support","version":"3.13.1","platform":"ruby","checksum":"48877d4f15b772b7538f3693c22225f2eda490ba65a0515c4e7cf6f2f17de70f"},
{"name":"rspec_junit_formatter","version":"0.6.0","platform":"ruby","checksum":"40dde674e6ae4e6cc0ff560da25497677e34fefd2338cc467a8972f602b62b15"},

View File

@ -1688,7 +1688,7 @@ GEM
rspec-parameterized-table_syntax (1.0.0)
binding_of_caller
rspec-parameterized-core (< 2)
rspec-rails (7.0.1)
rspec-rails (7.1.1)
actionpack (>= 7.0)
activesupport (>= 7.0)
railties (>= 7.0)
@ -2353,7 +2353,7 @@ DEPENDENCIES
rqrcode (~> 2.2)
rspec-benchmark (~> 0.6.0)
rspec-parameterized (~> 1.0, >= 1.0.2)
rspec-rails (~> 7.0.0)
rspec-rails (~> 7.1.0)
rspec-retry (~> 0.6.2)
rspec_junit_formatter
rspec_profiling (~> 0.0.9)

View File

@ -629,7 +629,7 @@
{"name":"rspec-parameterized","version":"1.0.2","platform":"ruby","checksum":"b456dec0091924175ac13963e173cdbaa2ab3e1581a405a948addc34e3f3f4c2"},
{"name":"rspec-parameterized-core","version":"1.0.0","platform":"ruby","checksum":"287b494985e79821160af63aba4f91db8dbfa9a21cb200db34ba38f40e16ccc1"},
{"name":"rspec-parameterized-table_syntax","version":"1.0.0","platform":"ruby","checksum":"d7df951eff9c5dd367ca7d5f9ae4853bb7ab7941f9d5b35bba361d112704988c"},
{"name":"rspec-rails","version":"7.0.1","platform":"ruby","checksum":"ad2b2cb6dabca072260e21b188059645bac10659466c02a674f9ad5fd97b92f9"},
{"name":"rspec-rails","version":"7.1.1","platform":"ruby","checksum":"e15dccabed211e2fd92f21330c819adcbeb1591c1d66c580d8f2d8288557e331"},
{"name":"rspec-retry","version":"0.6.2","platform":"ruby","checksum":"6101ba23a38809811ae3484acde4ab481c54d846ac66d5037ccb40131a60d858"},
{"name":"rspec-support","version":"3.13.1","platform":"ruby","checksum":"48877d4f15b772b7538f3693c22225f2eda490ba65a0515c4e7cf6f2f17de70f"},
{"name":"rspec_junit_formatter","version":"0.6.0","platform":"ruby","checksum":"40dde674e6ae4e6cc0ff560da25497677e34fefd2338cc467a8972f602b62b15"},

View File

@ -1682,7 +1682,7 @@ GEM
rspec-parameterized-table_syntax (1.0.0)
binding_of_caller
rspec-parameterized-core (< 2)
rspec-rails (7.0.1)
rspec-rails (7.1.1)
actionpack (>= 7.0)
activesupport (>= 7.0)
railties (>= 7.0)
@ -2348,7 +2348,7 @@ DEPENDENCIES
rqrcode (~> 2.2)
rspec-benchmark (~> 0.6.0)
rspec-parameterized (~> 1.0, >= 1.0.2)
rspec-rails (~> 7.0.0)
rspec-rails (~> 7.1.0)
rspec-retry (~> 0.6.2)
rspec_junit_formatter
rspec_profiling (~> 0.0.9)

View File

@ -8,7 +8,7 @@ gitlab_schemas:
lock_gitlab_schemas:
- gitlab_main
- gitlab_main_clusterwide
- gitlab_main_clusterwide_setting
- gitlab_main_cell_setting
- gitlab_main_user
- gitlab_main_cell
- gitlab_main_cell_local

View File

@ -8,7 +8,7 @@ gitlab_schemas:
- gitlab_main_cell_local
- gitlab_pm
- gitlab_main_clusterwide
- gitlab_main_clusterwide_setting
- gitlab_main_cell_setting
- gitlab_main_user
lock_gitlab_schemas:
- gitlab_ci

View File

@ -7,7 +7,7 @@ gitlab_schemas:
lock_gitlab_schemas:
- gitlab_main
- gitlab_main_clusterwide
- gitlab_main_clusterwide_setting
- gitlab_main_cell_setting
- gitlab_main_user
- gitlab_main_cell
- gitlab_main_cell_local

View File

@ -7,5 +7,5 @@ feature_categories:
description: Stores instance-wide AI-related settings
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172007
milestone: '17.6'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -9,4 +9,4 @@ description: Stores uploads for Appearance model
introduced_by_url:
milestone: '17.11'
table_size: small
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting

View File

@ -7,5 +7,5 @@ feature_categories:
description: TODO
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/40104eead753e7e8ea77951a74a3941546c35aab
milestone: '6.8'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: TODO
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/cf37bef287d7dd5d2dce3e2276489767b8c0671f
milestone: '10.8'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -11,5 +11,5 @@ feature_categories:
description: GitLab application settings
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/8589b4e137f50293952923bb07e2814257d7784d
milestone: '7.7'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: GitLab can display broadcast messages to users of a GitLab instance
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/f1ecf53c1e55fbbc66cb2d7d12fb411cbfc2ace8
milestone: '6.3'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: Information about Cloud Connector features
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/140456
milestone: '16.8'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: Used to store information related to the instance's license
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/d1f2b09fadcfba210c5121bd214b910b9f9809fd
milestone: '7.11'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: Contains Plan specific limits (CI minute quantities for example)
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19438
milestone: '12.5'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: Stores instance-wide security policies related settings
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191298
milestone: '18.1'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -8,5 +8,5 @@ description: Persists JWT tokens for AI features (e.g. Code Suggestions) to auth
the GitLab instance
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125383
milestone: '16.2'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -7,5 +7,5 @@ feature_categories:
description: In-app messages targeted at specific namespaces
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179303
milestone: '17.10'
gitlab_schema: gitlab_main_clusterwide_setting
gitlab_schema: gitlab_main_cell_setting
table_size: small

View File

@ -1,5 +1,5 @@
name: gitlab_main_clusterwide_setting
description: Schema for all Cluster setting tables, ex. application_settings, etc.
name: gitlab_main_cell_setting
description: Schema for all cell setting tables, ex. application_settings, etc.
allow_cross_joins:
- gitlab_shared
- gitlab_main

View File

@ -16,7 +16,7 @@ allow_cross_transactions:
- gitlab_main_cell
- gitlab_main_cell_local
- gitlab_main_clusterwide
- gitlab_main_clusterwide_setting
- gitlab_main_cell_setting
allow_cross_foreign_keys:
- gitlab_main
- gitlab_main_cell

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
class SetApiRateLimitsToZero < Gitlab::Database::Migration[2.3]
restrict_gitlab_migration gitlab_schema: :gitlab_main_clusterwide_setting
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell_setting
milestone '18.0'

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
class SetZoektLostNodeThreshold < Gitlab::Database::Migration[2.3]
restrict_gitlab_migration gitlab_schema: :gitlab_main_clusterwide_setting
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell_setting
milestone '18.1'

View File

@ -0,0 +1,30 @@
# frozen_string_literal: true
class DropIndexOnExternalNameForComplianceControls < Gitlab::Database::Migration[2.3]
disable_ddl_transaction!
milestone '18.1'
TABLE_NAME = :compliance_requirements_controls
INDEX_NAME = :i_unique_external_control_name_per_requirement
NEW_INDEX_NAME = :i_uniq_external_control_name_per_requirement
def up
add_concurrent_index TABLE_NAME,
[:compliance_requirement_id, :external_control_name],
unique: true,
where: "external_control_name IS NOT NULL AND external_control_name != ''",
name: NEW_INDEX_NAME
remove_concurrent_index_by_name TABLE_NAME, name: INDEX_NAME
end
def down
add_concurrent_index TABLE_NAME,
[:compliance_requirement_id, :external_control_name],
unique: true,
where: "external_control_name IS NOT NULL",
name: INDEX_NAME
remove_concurrent_index_by_name TABLE_NAME, name: NEW_INDEX_NAME
end
end

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
class DropWorkspacesActualStateUpdatedAtDefault < Gitlab::Database::Migration[2.3]
milestone '18.1'
def change
change_column_default :workspaces, :actual_state_updated_at, from: '1970-01-01', to: nil
end
end

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
class PopulateDefaultValueForPersonalAccessTokensPrefix < Gitlab::Database::Migration[2.3]
restrict_gitlab_migration gitlab_schema: :gitlab_main_clusterwide_setting
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell_setting
milestone '18.1'
def up

View File

@ -0,0 +1 @@
164e1321d00ffdde7517c43b945c1da62183040ee3cb91675c2c1b9b3308e778

View File

@ -0,0 +1 @@
3a0167beb437c5918d787f5abe6309b47f921485ebc70dcdb79593e8a1e44cc4

View File

@ -26168,7 +26168,7 @@ CREATE TABLE workspaces (
workspaces_agent_config_version integer NOT NULL,
desired_config_generator_version integer,
project_ref text,
actual_state_updated_at timestamp with time zone DEFAULT '1970-01-01 00:00:00+00'::timestamp with time zone NOT NULL,
actual_state_updated_at timestamp with time zone NOT NULL,
CONSTRAINT check_15543fb0fa CHECK ((char_length(name) <= 64)),
CONSTRAINT check_157d5f955c CHECK ((char_length(namespace) <= 64)),
CONSTRAINT check_2b401b0034 CHECK ((char_length(deployment_resource_version) <= 64)),
@ -33328,7 +33328,7 @@ CREATE UNIQUE INDEX i_sbom_occurrences_vulnerabilities_on_occ_id_and_vuln_id ON
CREATE INDEX i_software_license_policies_on_custom_software_license_id ON software_license_policies USING btree (custom_software_license_id);
CREATE UNIQUE INDEX i_unique_external_control_name_per_requirement ON compliance_requirements_controls USING btree (compliance_requirement_id, external_control_name) WHERE (external_control_name IS NOT NULL);
CREATE UNIQUE INDEX i_uniq_external_control_name_per_requirement ON compliance_requirements_controls USING btree (compliance_requirement_id, external_control_name) WHERE ((external_control_name IS NOT NULL) AND (external_control_name <> ''::text));
CREATE INDEX i_vuln_occurrences_on_proj_report_loc_dep_pkg_ver_file_img ON vulnerability_occurrences USING btree (project_id, report_type, ((((location -> 'dependency'::text) -> 'package'::text) ->> 'name'::text)), (((location -> 'dependency'::text) ->> 'version'::text)), COALESCE((location ->> 'file'::text), (location ->> 'image'::text))) WHERE (report_type = ANY (ARRAY[2, 1]));

View File

@ -228,3 +228,27 @@ include:
In this example, the `.gitlab/ci/development.gitlab-ci.yml` file is included by default.
But if a different `pipeline-type` input option is used, a different configuration file is included.
### Use CI/CD inputs in variable expressions
You can use [CI/CD inputs](_index.md) to customize variable expressions.
For example:
```yaml
example-job:
script: echo "Testing"
rules:
- if: '"$[[ inputs.some_example ]]" == "test-branch"'
```
The expression is evaluated in two steps:
1. Input interpolation: Before the pipeline is created, inputs are replaced with the input value.
In this example, the `$[[ inputs.some_example ]]` input is replaced with the [set value](_index.md#set-input-values).
For example, if the value is:
- `test-branch`, the expression becomes `if: '"test-branch" == "test-branch"'`.
- `$CI_COMMIT_BRANCH`, the expression becomes `if: '"$CI_COMMIT_BRANCH" == "test-branch"'`.
1. Expression evaluation: After the inputs are interpolated, GitLab attempts to create the pipeline.
During pipeline creation, the expressions are evaluated to determine which jobs to add to the pipeline.

View File

@ -411,6 +411,8 @@ the expression. For example:
- `if: $VARIABLE`
You can also [use CI/CD inputs in variable expressions](../inputs/examples.md#use-cicd-inputs-in-variable-expressions).
### Compare a variable to a regular expression
You can do regular expression matching on variable values with the `=~` and `!~` operators.

View File

@ -14,7 +14,7 @@ Below are available schemas related to Cells and Organizations:
| Schema | Description |
| ------ | ----------- |
| `gitlab_main_cell`| Use for all tables in the `main:` database that are for an Organization. For example, `projects` and `groups` |
| `gitlab_main_clusterwide_setting` | All tables in the `main:` database related to Cluster settings. For example, `application_settings`. |
| `gitlab_main_cell_setting` | All tables in the `main:` database related to cell settings. For example, `application_settings`. |
| `gitlab_main_clusterwide` (deprecated) | All tables in the `main:` database where all rows, or a subset of rows needs to be present across the cluster, in the [Cells](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/) architecture. For example, `plans`. For the [Cells 1.0 architecture](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/iterations/cells-1.0/), there are no real clusterwide tables as each cell will have its own database. In effect, these tables will still be stored locally in each cell. |
| `gitlab_main_cell_local` | For tables in the `main:` database that are related to features that is distinct for each cell. For example, `zoekt_nodes`, or `shards`. These cell-local tables should not have any foreign key references from/to organization tables. |
| `gitlab_ci` | Use for all tables in the `ci:` database that are for an Organization. For example, `ci_pipelines` and `ci_builds` |

View File

@ -29,7 +29,7 @@ Each table of GitLab needs to have a `gitlab_schema` assigned:
| -------- | ----------- | ------- |
| `gitlab_main`| All tables that are being stored in the `main:` database. | Currently, this is being replaced with `gitlab_main_cell`, for the purpose of building the [Cells](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/) architecture. |
| `gitlab_main_cell` | See [Cells / Organizations schemas](../cells/_index.md#available-cells--organization-schemas) | |
| `gitlab_main_clusterwide_setting` | See [Cells / Organizations schemas](../cells/_index.md#available-cells--organization-schemas) | |
| `gitlab_main_cell_setting` | See [Cells / Organizations schemas](../cells/_index.md#available-cells--organization-schemas) | |
| `gitlab_main_clusterwide` | See [Cells / Organizations schemas](../cells/_index.md#available-cells--organization-schemas) | |
| `gitlab_main_cell_local` | See [Cells / Organizations schemas](../cells/_index.md#available-cells--organization-schemas) | |
| `gitlab_ci` | All CI tables that are being stored in the `ci:` database (for example, `ci_pipelines`, `ci_builds`) | |

View File

@ -35,7 +35,9 @@ Use GitLab Observability (O11y) to:
- View distributed traces, logs, and metrics in a single platform.
- Identify and troubleshoot performance bottlenecks in your applications.
Support for improvements is proposed in [issue 8](https://gitlab.com/experimental-observability/gitlab_o11y/-/issues/8).
{{< alert type="disclaimer" />}}
By adding observability to GitLab itself users can gain [these (planned) features](https://gitlab.com/gitlab-org/embody-team/experimental-observability/gitlab_o11y/-/issues/8).
## Set up a GitLab Observability instance
@ -120,7 +122,7 @@ docker info | grep "Docker Root Dir"
```shell
cd /mnt/data
git clone -b main https://gitlab.com/experimental-observability/gitlab_o11y.git
git clone -b main https://gitlab.com/gitlab-org/embody-team/experimental-observability/gitlab_o11y.git
cd gitlab_o11y/deploy/docker
docker-compose up -d
```
@ -189,10 +191,32 @@ docker run --detach \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--env O11Y_URL="http://[your-o11y-instance-ip]:8080" \
gitlab/gitlab-ce:latest
```
The `O11Y_URL` environment variable must be configured in the GitLab configuration file:
1. Access the container:
```shell
docker exec -it gitlab /bin/bash
```
1. Edit `/etc/gitlab/gitlab.rb`:
```ruby
gitlab_rails['env'] = {
'O11Y_URL' => 'http://[your-o11y-instance-ip]:8080'
}
```
1. Reconfigure GitLab:
```shell
gitlab-ctl reconfigure
gitlab-ctl restart
```
{{< /tab >}}
{{< /tabs >}}
@ -204,23 +228,23 @@ The Observability feature is behind a feature flag. To enable it:
1. Access the Rails console:
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
```shell
sudo gitlab-rails console
```
{{< /tab >}}
{{< tab title="Docker" >}}
```shell
docker exec -it gitlab gitlab-rails console
```
{{< /tab >}}
{{< /tabs >}}
1. Enable the feature flag for your group:

View File

@ -179,6 +179,7 @@ If the import is successful, the new compliance framework appears in the list. A
{{< history >}}
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186525) in GitLab 17.11 [with a flag](../../../administration/feature_flags.md) named `enable_standards_adherence_dashboard_v2`. Enabled by default.
- External control name [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/192177) in GitLab 18.1.
{{< /history >}}
@ -289,7 +290,7 @@ To add an external control when creating or editing a framework:
1. Select **New framework** or edit an existing one.
1. In the **Requirements** section, select **New requirement**.
1. Select **Add an external control**.
1. In the fields edit **External URL** and **`HMAC` shared secret**.
1. In the fields edit **External Control Name**, **External URL** and **`HMAC` shared secret**.
1. Select **Save changes to the framework** to save the requirement.
#### External control lifecycle

View File

@ -51,22 +51,42 @@ You might receive notifications for one of the following reasons:
> - [A comment is edited to include a user mention](../discussions/_index.md#edit-a-comment-to-add-a-mention).
> - An administrator has blocked notifications.
## Edit notification settings
## Global notification settings
Getting many notifications can be overwhelming. You can tune the notifications you receive.
Your global notification settings are the default settings, unless you specify
different settings for a project or a group.
For example, you might want to be notified about all activity in a specific project.
For other projects, you only want to be notified when you are mentioned by name.
These notification settings apply only to you. They do not affect the notifications received by
anyone else.
### Edit notification settings
To edit your notification settings:
1. On the left sidebar, select your avatar.
1. Select **Preferences**.
1. On the left sidebar, select **Notifications**.
1. Edit the desired global, group, or project notification settings.
Edited settings are automatically saved.
1. In **Global notification email**, enter the email address your notifications are sent to.
Defaults to your primary email address.
1. For **Global notification level**, select the default [notification level](#notification-levels)
to apply to your notifications.
1. Select the **Receive notifications about your own activity** checkbox to receive
notifications about your own activity. Not selected by default.
### Notification levels
For each project and group you can select one of the following levels:
| Level | Description |
| ----------- | ----------- |
| Global | Your default global settings apply. |
| Watch | Receive notifications for [most activity](#events-not-included-in-the-watch-level). |
| Participate | Receive notifications for threads you have participated in. |
| On mention | Receive notifications when you are [mentioned](../discussions/_index.md#mentions) in a comment. |
| Disabled | Receive no notifications. |
| Custom | Receive notifications for selected events and threads you have participated in. |
### Notification scope
@ -75,10 +95,10 @@ project and group.
Notification scope is applied from the broadest to most specific levels:
- Your **global**, or default, notification level applies if you
- Your global, or _default_, notification level applies if you
have not selected a notification level for the project or group in which the activity occurred.
- Your **group** setting overrides your default setting.
- Your **project** setting overrides the group setting.
- Your group setting overrides your default setting.
- Your project setting overrides the group setting.
When you set the notification level to **Global** for a project or subgroup, it does not directly inherit your global notification settings.
Instead, it goes up the hierarchy and inherits the next non-global notification level that is configured, in the following order:
@ -88,44 +108,26 @@ Instead, it goes up the hierarchy and inherits the next non-global notification
1. The ancestor groups' settings (going up the hierarchy).
1. The global notification setting as the final fallback setting.
#### Example
For example, you set your default global notification setting to **Watch**, and your group and project notification levels as follows:
You set your global notification setting to **Watch**, and your group and project notification levels as follows:
```mermaid
%%{init: { "fontFamily": "GitLab Sans", 'theme':'neutral' }}%%
flowchart TD
accTitle: Notification hierarchy
accDescr: Example of a group, subgroup, and project
```plaintext
Group A: Global
├── Subgroup B: Participate
└── Project C: Global
N[Default/global notification level set to Watch]
N --> A
A[Group A: Notification level set to Global]
A-. Inherits Watch level .-> N
A --> B[Subgroup B: Notification level set to Participate]
B --> C[Project C: Notification level set to Global]
C-. Inherits Participate level .-> B
```
In this example, project C inherits the **Participate** notification level from subgroup B.
Project C inherits the **Participate** notification level from subgroup B.
It does not inherit the **Watch** notification level from your global notification settings.
### Notification levels
For each project and group you can select one of the following levels:
| Level | Description |
| ----------- | ----------- |
| Global | Your global settings apply. |
| Watch | Receive notifications for [most activity](#events-not-included-in-the-watch-level). |
| Participate | Receive notifications for threads you have participated in. |
| On mention | Receive notifications when you are [mentioned](../discussions/_index.md#mentions) in a comment. |
| Disabled | Receive no notifications. |
| Custom | Receive notifications for selected events and threads you have participated in. |
### Global notification settings
Your **Global notification settings** are the default settings unless you select
different values for a project or a group.
- **Notification email**: the email address your notifications are sent to.
Defaults to your primary email address.
- **Global notification level**: the default [notification level](#notification-levels)
which applies to all your notifications.
- **Receive notifications about your own activity**: select this checkbox to receive
notifications about your own activity. Not selected by default.
### Group notifications
You can select a notification level and email address for each group.

View File

@ -23,7 +23,7 @@ module Gitlab
gitlab_main_cell: :gitlab_main,
gitlab_main_cell_local: :gitlab_main,
gitlab_ci_cell_local: :gitlab_ci,
gitlab_main_clusterwide_setting: :gitlab_main,
gitlab_main_cell_setting: :gitlab_main,
gitlab_main_user: :gitlab_main
}.freeze

View File

@ -37,7 +37,7 @@ RSpec.describe Gitlab::Database::Dictionary, feature_category: :database do
it 'returns a hash of name and schema mappings' do
expect(dictionary.to_name_and_schema_mapping).to include(
{
'application_settings' => :gitlab_main_clusterwide_setting,
'application_settings' => :gitlab_main_cell_setting,
'members' => :gitlab_main_cell
}
)
@ -49,7 +49,7 @@ RSpec.describe Gitlab::Database::Dictionary, feature_category: :database do
entry = dictionary.find_by_table_name('application_settings')
expect(entry).to be_instance_of(Gitlab::Database::Dictionary::Entry)
expect(entry.key_name).to eq('application_settings')
expect(entry.gitlab_schema).to eq('gitlab_main_clusterwide_setting')
expect(entry.gitlab_schema).to eq('gitlab_main_cell_setting')
end
it 'returns nil if the entry is not found' do
@ -108,7 +108,7 @@ RSpec.describe Gitlab::Database::Dictionary, feature_category: :database do
it 'returns the name of the table and its gitlab schema' do
expect(database_dictionary.name_and_schema).to match_array([
'application_settings',
:gitlab_main_clusterwide_setting
:gitlab_main_cell_setting
])
end
end
@ -171,7 +171,7 @@ RSpec.describe Gitlab::Database::Dictionary, feature_category: :database do
describe '#schema?' do
it 'checks if the given schema matches the schema of the table' do
expect(database_dictionary.schema?('gitlab_main')).to eq(false)
expect(database_dictionary.schema?('gitlab_main_clusterwide_setting')).to eq(true)
expect(database_dictionary.schema?('gitlab_main_cell_setting')).to eq(true)
end
end