From f26782b146ed115c8e36f8d6fc4c173020ab30b6 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 21 May 2021 18:11:01 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/yaml.gitlab-ci.yml | 1 - .../nav/components/top_nav_container_view.vue | 1 + .../license/20210216183237_version.yml | 12 +- .../geo/disaster_recovery/index.md | 3 + .../geo/replication/troubleshooting.md | 24 ++++ .../replication/version_specific_updates.md | 6 + doc/api/issues.md | 2 +- doc/api/projects.md | 2 +- doc/api/suggestions.md | 2 + .../documentation/restful_api_styleguide.md | 9 +- doc/development/experiment_guide/index.md | 14 +++ doc/development/i18n/merging_translations.md | 45 ++++---- doc/development/i18n/proofreader.md | 46 ++++---- doc/development/i18n/translation.md | 106 ++++++++---------- doc/development/usage_ping/dictionary.md | 6 +- doc/user/clusters/applications.md | 22 ---- doc/user/clusters/img/fluentd_v13_0.png | Bin 32445 -> 0 bytes doc/user/discussions/index.md | 7 +- .../protect/container_host_security/index.md | 4 +- .../quick_start_guide.md | 21 +--- .../container_network_security/index.md | 4 +- .../quick_start_guide.md | 29 +---- .../project/merge_requests/reviews/index.md | 6 +- .../merge_requests/reviews/suggestions.md | 4 + lib/gitlab/highlight.rb | 6 +- .../auto_devops/auto_devops_templates_spec.rb | 4 +- scripts/lint-changelog-filenames | 12 -- scripts/static-analysis | 3 +- .../components/top_nav_container_view_spec.js | 15 ++- spec/lib/gitlab/highlight_spec.rb | 2 +- spec/tooling/danger/project_helper_spec.rb | 2 - tooling/danger/project_helper.rb | 2 - 32 files changed, 203 insertions(+), 219 deletions(-) delete mode 100644 doc/user/clusters/img/fluentd_v13_0.png delete mode 100755 scripts/lint-changelog-filenames diff --git a/.gitlab/ci/yaml.gitlab-ci.yml b/.gitlab/ci/yaml.gitlab-ci.yml index c597d992760..a0961866465 100644 --- a/.gitlab/ci/yaml.gitlab-ci.yml +++ b/.gitlab/ci/yaml.gitlab-ci.yml @@ -10,5 +10,4 @@ lint-yaml: variables: LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates changelogs script: - - '[[ ! -d "ee/" ]] || export LINT_PATHS="$LINT_PATHS ee/changelogs"' - yamllint -f colored $LINT_PATHS diff --git a/app/assets/javascripts/nav/components/top_nav_container_view.vue b/app/assets/javascripts/nav/components/top_nav_container_view.vue index 21ff3ebcd7d..c52c5d1a6e5 100644 --- a/app/assets/javascripts/nav/components/top_nav_container_view.vue +++ b/app/assets/javascripts/nav/components/top_nav_container_view.vue @@ -10,6 +10,7 @@ export default { TopNavMenuItem, VuexModuleProvider, }, + inheritAttrs: false, props: { frequentItemsVuexModule: { type: String, diff --git a/config/metrics/license/20210216183237_version.yml b/config/metrics/license/20210216183237_version.yml index 69d97e17f20..ff501697e95 100644 --- a/config/metrics/license/20210216183237_version.yml +++ b/config/metrics/license/20210216183237_version.yml @@ -1,9 +1,9 @@ --- key_path: git.version -description: '' -product_section: '' -product_stage: '' -product_group: '' +description: Information about Git version +product_section: enablement +product_stage: enablement +product_group: group::distribution product_category: '' value_type: string status: data_available @@ -11,6 +11,8 @@ time_frame: none data_source: system distribution: - ce +- ee tier: - free -skip_validation: true +- premium +- ultimate diff --git a/doc/administration/geo/disaster_recovery/index.md b/doc/administration/geo/disaster_recovery/index.md index b02dcf65645..254ffff5e90 100644 --- a/doc/administration/geo/disaster_recovery/index.md +++ b/doc/administration/geo/disaster_recovery/index.md @@ -98,6 +98,9 @@ Note the following when promoting a secondary: - If you encounter an `ActiveRecord::RecordInvalid: Validation failed: Name has already been taken` error message during this process, for more information, see this [troubleshooting advice](../replication/troubleshooting.md#fixing-errors-during-a-failover-or-when-promoting-a-secondary-to-a-primary-node). +- If you run into errors when using `--force` or `--skip-preflight-checks` before 13.5 during this process, + for more information, see this + [troubleshooting advice](../replication/troubleshooting.md#errors-when-using---skip-preflight-checks-or---force). #### Promoting a **secondary** node running on a single machine diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md index 97a160fbc22..278e21386c1 100644 --- a/doc/administration/geo/replication/troubleshooting.md +++ b/doc/administration/geo/replication/troubleshooting.md @@ -756,6 +756,30 @@ this command reports `ERROR - Replication is not up-to-date` even if replication is actually up-to-date. If replication and verification output shows that it is complete, you can add `--skip-preflight-checks` to make the command complete promotion. This bug was fixed in GitLab 13.8 and later. +### Errors when using `--skip-preflight-checks` or `--force` + +Before GitLab 13.5, you could bump into one of the following errors when using +`--skip-preflight-checks` or `--force`: + +```plaintext +get_ctl_options': invalid option: --skip-preflight-checks (OptionParser::InvalidOption) + +get_ctl_options': invalid option: --force (OptionParser::InvalidOption) +``` + +This can happen with XFS or filesystems that list files in lexical order, because the +load order of the Omnibus command files can be different than expected, and a global function would get redefined. +More details can be found in [the related issue](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6076). + +The workaround is to manually run the preflight checks and promote the database, by running +the following commands on the Geo secondary site: + +```shell +sudo gitlab-ctl promotion-preflight-checks +sudo /opt/gitlab/embedded/bin/gitlab-pg-ctl promote +sudo gitlab-ctl reconfigure +sudo gitlab-rake geo:set_secondary_as_primary + ## Expired artifacts If you notice for some reason there are more artifacts on the Geo diff --git a/doc/administration/geo/replication/version_specific_updates.md b/doc/administration/geo/replication/version_specific_updates.md index 20e32dae00f..301be931b29 100644 --- a/doc/administration/geo/replication/version_specific_updates.md +++ b/doc/administration/geo/replication/version_specific_updates.md @@ -82,6 +82,12 @@ paused fails. Do not pause replication before promoting a secondary. If the node is paused, be sure to resume before promoting. To avoid this issue, upgrade to GitLab 13.4 or later. +WARNING: +Promoting the database during a failover can fail on XFS and filesystems ordering files lexically, +when using `--force` or `--skip-preflight-checks`, due to [an issue](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6076) fixed in 13.5. +The [troubleshooting steps](troubleshooting.md#errors-when-using---skip-preflight-checks-or---force) +contain a workaround if you run into errors during the failover. + ## Updating to GitLab 13.2 In GitLab 13.2, promoting a secondary node to a primary while the secondary is diff --git a/doc/api/issues.md b/doc/api/issues.md index acfca50cb5e..b4d421290e3 100644 --- a/doc/api/issues.md +++ b/doc/api/issues.md @@ -996,7 +996,7 @@ POST /projects/:id/issues | `issue_type` | string | no | The type of issue. One of `issue`, `incident`, or `test_case`. Default is `issue`. | | `labels` | string | no | Comma-separated label names for an issue | | `merge_request_to_resolve_discussions_of` | integer | no | The IID of a merge request in which to resolve all issues. This fills out the issue with a default description and mark all discussions as resolved. When passing a description or title, these values take precedence over the default values.| -| `milestone_id` | integer | no | The global ID of a milestone to assign issue | +| `milestone_id` | integer | no | The global ID of a milestone to assign issue. To find the `milestone_id` associated with a milestone, view an issue with the milestone assigned and [use the API](#single-project-issue) to retrieve the issue's details. | | `title` | string | yes | The title of an issue | | `weight` **(PREMIUM)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. | diff --git a/doc/api/projects.md b/doc/api/projects.md index b686d17a4a1..5b96bcb22e2 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -1238,7 +1238,7 @@ POST /projects/user/:user_id | `show_default_award_emojis` | boolean | **{dotted-circle}** No | Show default award emojis. | | `snippets_access_level` | string | **{dotted-circle}** No | One of `disabled`, `private`, or `enabled`. | | `snippets_enabled` | boolean | **{dotted-circle}** No | _(Deprecated)_ Enable snippets for this project. Use `snippets_access_level` instead. | -| `suggestion_commit_message` | string | **{dotted-circle}** No | The commit message used to apply merge request suggestions. | +| `suggestion_commit_message` | string | **{dotted-circle}** No | The commit message used to apply merge request [suggestions](../user/project/merge_requests/reviews/suggestions.md). | | `tag_list` | array | **{dotted-circle}** No | The list of tags for a project; put array of tags, that should be finally assigned to a project. | | `template_name` | string | **{dotted-circle}** No | When used without `use_custom_template`, name of a [built-in project template](../user/project/working_with_projects.md#built-in-templates). When used with `use_custom_template`, name of a custom project template. | | `use_custom_template` **(PREMIUM)** | boolean | **{dotted-circle}** No | Use either custom [instance](../user/admin_area/custom_project_templates.md) or [group](../user/group/custom_project_templates.md) (with `group_with_project_templates_id`) project template. | diff --git a/doc/api/suggestions.md b/doc/api/suggestions.md index 0fcb6122505..ea9baa79b4a 100644 --- a/doc/api/suggestions.md +++ b/doc/api/suggestions.md @@ -7,6 +7,8 @@ type: reference, api # Suggest Changes API **(FREE)** +This page describes the API for [suggesting changes](../user/project/merge_requests/reviews/suggestions.md). + Every API call to suggestions must be authenticated. ## Applying suggestions diff --git a/doc/development/documentation/restful_api_styleguide.md b/doc/development/documentation/restful_api_styleguide.md index e05f6760ff1..9ea91aa10b6 100644 --- a/doc/development/documentation/restful_api_styleguide.md +++ b/doc/development/documentation/restful_api_styleguide.md @@ -33,7 +33,8 @@ In the Markdown doc for a resource (AKA endpoint): ## API topic template -The following can be used as a template to get started: +Use the following template to help you get started. Be sure to list any +required attributes first in the table. ````markdown ## Descriptive title @@ -50,8 +51,10 @@ Supported attributes: | Attribute | Type | Required | Description | |:------------|:---------|:---------|:----------------------| -| `attribute` | datatype | yes/no | Detailed description. | -| `attribute` | datatype | yes/no | Detailed description. | +| `attribute` | datatype | **{check-circle}** Yes | Detailed description. | +| `attribute` | datatype | **{dotted-circle}** No | Detailed description. | +| `attribute` | datatype | **{dotted-circle}** No | Detailed description. | +| `attribute` | datatype | **{dotted-circle}** No | Detailed description. | Example request: diff --git a/doc/development/experiment_guide/index.md b/doc/development/experiment_guide/index.md index 0d534a974a1..e39ef48517f 100644 --- a/doc/development/experiment_guide/index.md +++ b/doc/development/experiment_guide/index.md @@ -60,3 +60,17 @@ feature flags, and there is currently no strong suggestion to use one over the o Historical Context: `Experimentation Module` was built iteratively with the needs that appeared while implementing Growth sub-department experiments, while GLEX was built with the findings of the team and an easier to use API. + +### Add new icons and illustrations for experiments + +Some experiments may require you to add custom icons or illustrations to our codebase. +This process is lengthy and at this stage, the outcome of the experiment uncertain. +Therefore, you should postpone this effort until the [experiment cleanup process](https://about.gitlab.com/handbook/engineering/development/growth/#experiment-cleanup-issue). + +We recommend the following workflow: + +1. Add an icon or illustration as an `.svg` file in the `/app/assets/images` (or EE) path in the GitLab repository. +1. Use `image_tag` or `image_path` to render it via the asset pipeline. +1. **If the experiment is a success**, designers add the new icon or illustration to the Pajamas UI kit as part of the cleanup process. + Engineers can then add it to the [SVG library](https://gitlab-org.gitlab.io/gitlab-svgs/) and modify the implementation based on the + [Frontend Development Guidelines](../fe_guide/icons.md#usage-in-hamlrails-2). diff --git a/doc/development/i18n/merging_translations.md b/doc/development/i18n/merging_translations.md index 48474a68d16..a3c6fc86693 100644 --- a/doc/development/i18n/merging_translations.md +++ b/doc/development/i18n/merging_translations.md @@ -9,7 +9,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w CrowdIn automatically syncs the `gitlab.pot` file with the CrowdIn service, presenting newly added externalized strings to the community of translators. -[GitLab CrowdIn Bot](https://gitlab.com/gitlab-crowdin-bot) also creates merge requests +The [GitLab CrowdIn Bot](https://gitlab.com/gitlab-crowdin-bot) also creates merge requests to take newly approved translation submissions and merge them into the `locale//gitlab.po` files. Check the [merge requests created by `gitlab-crowdin-bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&author_username=gitlab-crowdin-bot) to see new and merged merge requests. @@ -17,35 +17,34 @@ to see new and merged merge requests. ## Validation By default CrowdIn commits translations with `[skip ci]` in the commit -message. This is done to avoid a bunch of pipelines being run. Before -merging translations, make sure to trigger a pipeline to validate -translations, we have static analysis validating things CrowdIn -doesn't do. Create a new pipeline at `https://gitlab.com/gitlab-org/gitlab/pipelines/new` -(need Developer access permissions) for the `master-i18n` branch. +message. This avoids an excessive number of pipelines from running. +Before merging translations, make sure to trigger a pipeline to validate +translations. Static analysis validates things CrowdIn doesn't do. Create +a new pipeline at [`https://gitlab.com/gitlab-org/gitlab/pipelines/new`](https://gitlab.com/gitlab-org/gitlab/pipelines/new) +(need developer permissions) for the `master-i18n` branch. If there are validation errors, the easiest solution is to disapprove the offending string in CrowdIn, leaving a comment with what is -required to fix the offense. There is an +required to fix the errors. There's an [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/23256) -suggesting to automate this process. Disapproving excludes the -invalid translation, the merge request is then updated within a few +that suggests automating this process. Disapproving excludes the +invalid translation. The merge request is then updated within a few minutes. -If the translation has failed validation due to angle brackets `<` or `>` -it should be disapproved on CrowdIn as our strings should be -using [variables](externalization.md#html) for HTML instead. +If the translation fails validation due to angle brackets (`<` or `>`), +it should be disapproved in CrowdIn. Our strings must use [variables](externalization.md#html) +for HTML instead. -It might be handy to pause the integration on the CrowdIn side for a -little while so translations don't keep coming. This can be done by -clicking `Pause sync` on the [CrowdIn integration settings -page](https://translate.gitlab.com/project/gitlab-ee/settings#integration). +It might be useful to pause the integration on the CrowdIn side for a +moment so translations don't keep coming. You can do this by clicking +**Pause sync** on the [CrowdIn integration settings page](https://translate.gitlab.com/project/gitlab-ee/settings#integration). ## Merging translations After all translations are determined to be appropriate and the pipelines pass, you can merge the translations into the default branch. When merging translations, -be sure to select the **Remove source branch** check box, which causes CrowdIn -to recreate the `master-i18n` from the default branch after merging the new +be sure to select the **Remove source branch** checkbox. This causes CrowdIn +to recreate the `master-i18n` branch from the default branch after merging the new translation. We are discussing [automating this entire process](https://gitlab.com/gitlab-org/gitlab/-/issues/19896). @@ -54,10 +53,8 @@ We are discussing [automating this entire process](https://gitlab.com/gitlab-org CrowdIn creates a new merge request as soon as the old one is closed or merged. But it does not recreate the `master-i18n` branch every -time. To force CrowdIn to recreate the branch, close any [open merge -request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&author_username=gitlab-crowdin-bot) -and delete the -[`master-18n`](https://gitlab.com/gitlab-org/gitlab/-/branches/all?utf8=✓&search=master-i18n). +time. To force CrowdIn to recreate the branch, close any [open merge requests](https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&author_username=gitlab-crowdin-bot) +and delete the [`master-18n`](https://gitlab.com/gitlab-org/gitlab/-/branches/all?utf8=✓&search=master-i18n) branch. This might be needed when the merge request contains failures that have been fixed on the default branch. @@ -76,8 +73,8 @@ recreate it with the following steps: 1. Sign in to CrowdIn with the GitLab integration. 1. Go to **Settings > Integrations > GitLab > Set Up Integration**. 1. Select the `gitlab-org/gitlab` repository. -1. In `Select Branches for Translation`, select `master`. -1. Ensure the `Service Branch Name` is `master-i18n`. +1. In **Select Branches for Translation**, select `master`. +1. Ensure the **Service Branch Name** is `master-i18n`. ## Manually update the translation levels diff --git a/doc/development/i18n/proofreader.md b/doc/development/i18n/proofreader.md index a15eb4c3bc2..56767f73c61 100644 --- a/doc/development/i18n/proofreader.md +++ b/doc/development/i18n/proofreader.md @@ -121,35 +121,35 @@ are very appreciative of the work done by translators and proofreaders! ## Become a proofreader -Before requesting Proofreader permissions in CrowdIn, be sure you have a history -of contributing translations to the GitLab project. +Before requesting proofreader permissions in CrowdIn, be sure you have a history of contributing +translations to the GitLab project. 1. Contribute translations to GitLab. See instructions for [translating GitLab](translation.md). - Translating GitLab is a community effort that requires team work and - attention to detail. Proofreaders play an important role helping new - contributors, and ensuring the consistency and quality of translations. - Your conduct and contributions as a translator should reflect this before - requesting to be a proofreader. + Translating GitLab is a community effort that requires teamwork and attention to detail. + Proofreaders play an important role helping new contributors, and ensuring the consistency and + quality of translations. Your conduct and contributions as a translator should reflect this + before requesting to be a proofreader. -1. Request proofreader permissions by opening a merge request to add yourself - to the list of proofreaders. +1. Request proofreader permissions by opening a merge request to add yourself to the list of + proofreaders. - Open the [proofreader.md source file](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/i18n/proofreader.md) and click **Edit**. + Open the [`proofreader.md` source file](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/i18n/proofreader.md) and click **Edit**. - Add your language in alphabetical order, and add yourself to the list - including: - - name - - link to your GitLab profile - - link to your CrowdIn profile + Add your language in alphabetical order and add yourself to the list, including: - In the merge request description, include links to any projects you have - previously translated. + - Name + - Link to your GitLab profile + - Link to your CrowdIn profile -1. Your request to become a proofreader is considered on the merits of - your previous translations by [GitLab team members](https://about.gitlab.com/company/team/) - or [Core team members](https://about.gitlab.com/community/core-team/) who are fluent in - the language or current proofreaders. - - When a request is made for the first proofreader for a language and there are no [GitLab team members](https://about.gitlab.com/company/team/) - or [Core team members](https://about.gitlab.com/community/core-team/) who speak the language, we shall request links to previous translation work in other communities or projects. + In the merge request description, include links to any projects you have previously translated. + +1. [GitLab team members](https://about.gitlab.com/company/team/), + [Core team members](https://about.gitlab.com/community/core-team/), + or current proofreaders fluent in the language consider your request to become a proofreader + based on the merits of your previous translations. + + - If you request to become the first proofreader for a language and there are no GitLab or Core + team members who speak that language, we request links to previous translation work in other + communities or projects. diff --git a/doc/development/i18n/translation.md b/doc/development/i18n/translation.md index e311df919b6..f2592d9a8b9 100644 --- a/doc/development/i18n/translation.md +++ b/doc/development/i18n/translation.md @@ -6,47 +6,39 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Translating GitLab -For managing the translation process we use [CrowdIn](https://crowdin.com). +For managing the translation process, we use [CrowdIn](https://crowdin.com). +To contribute translations at [`translate.gitlab.com`](https://translate.gitlab.com), +you must create a CrowdIn account. You may create a new account or use any of their supported +sign-in services. -## Using CrowdIn +## Language selections -The first step is to get familiar with CrowdIn. +GitLab is being translated into many languages. To select a language to contribute to: -### Sign In - -To contribute translations at -you must create a CrowdIn account. -You may create a new account or use any of their supported sign in services. - -### Language Selections - -GitLab is being translated into many languages. - -1. Find the language that you want to contribute to, in our +1. Find the language that you want to contribute to, in the [GitLab CrowdIn project](https://crowdin.com/project/gitlab-ee). - - If the language that you're looking for is available, proceed - to the next step. - - If the language you are looking for is not available, - [open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). Notify our CrowdIn - administrators by including `@gitlab-org/manage/import` in your issue. - - After the issue/Merge Request is complete, restart this procedure. -1. Next, you can view list of files and folders. - Select `gitlab.pot` to open the translation editor. -### Translation Editor + - If the language you want is available, proceed to the next step. + - If the language you want is not available, + [open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). + Notify our CrowdIn administrators by including `@gitlab-org/manage/import` in your issue. + - After the issue and any merge requests are complete, restart this procedure. + +1. View the list of files and folders. Select `gitlab.pot` to open the translation editor. + +### Translation editor The online translation editor is the easiest way to contribute translations. ![CrowdIn Editor](img/crowdin-editor.png) -1. Strings for translation are listed in the left panel -1. Translations are entered into the central panel. - Multiple translations are required for strings that contains plurals. - The string to be translated is shown above with glossary terms highlighted. - If the string to be translated is not clear, you can 'Request Context' +- Strings for translation are listed in the left panel. +- Translations are entered into the central panel. Multiple translations are required for strings + that contain plurals. The string to translate is shown in the above image with glossary terms + highlighted. If the string to translate isn't clear, you can request context. -A glossary of common terms is available in the right panel by clicking Terms. -Comments can be added to discuss a translation with the community. +A glossary of common terms is available in the **Terms** tab in the right panel. In the **Comments** +tab, you can add comments to discuss a translation with the community. Remember to **Save** each translation. @@ -56,21 +48,18 @@ Be sure to check the following guidelines before you translate any strings. ### Namespaced strings -When an externalized string is prepended with a namespace, e.g. -`s_('OpenedNDaysAgo|Opened')`, the namespace should be removed from the final -translation. -For example in French `OpenedNDaysAgo|Opened` would be translated to -`Ouvert•e`, not `OpenedNDaysAgo|Ouvert•e`. +When an externalized string is prepended with a namespace (for example, +`s_('OpenedNDaysAgo|Opened')`), the namespace should be removed from the final translation. For +example, in French, `OpenedNDaysAgo|Opened` is translated to `Ouvert•e`, not +`OpenedNDaysAgo|Ouvert•e`. ### Technical terms -Some technical terms should be treated like proper nouns and not be translated. - -Technical terms that should always be in English are noted in the glossary when -using . - -This helps maintain a logical connection and consistency between tools (e.g. -`git` client) and GitLab. +You should treat some technical terms like proper nouns and not translate them. Technical terms that +should always be in English are noted in the glossary when using +[`translate.gitlab.com`](https://translate.gitlab.com). +This helps maintain a logical connection and consistency between tools (for example, a Git client) +and GitLab. ### Formality @@ -78,36 +67,33 @@ The level of formality used in software varies by language: | Language | Formality | Example | | -------- | --------- | ------- | -| French | formal | `vous` for `you` | -| German | informal | `du` for `you` | +| French | formal | `vous` for `you` | +| German | informal | `du` for `you` | -You can refer to other translated strings and notes in the glossary to assist -determining a suitable level of formality. +Refer to other translated strings and notes in the glossary to assist you in determining a suitable +level of formality. ### Inclusive language -[Diversity](https://about.gitlab.com/handbook/values/#diversity) is a GitLab value. -We ask you to avoid translations which exclude people based on their gender or -ethnicity. -In languages which distinguish between a male and female form, use both or -choose a neutral formulation. +[Diversity, inclusion, and belonging](https://about.gitlab.com/handbook/values/#diversity-inclusion) +are GitLab values. We ask you to avoid translations that exclude people based on their gender or +ethnicity. In languages that distinguish between a male and female form, use both or choose a +neutral formulation. -For example in German, the word "user" can be translated into "Benutzer" (male) or "Benutzerin" (female). -Therefore "create a new user" would translate into "Benutzer(in) anlegen". +For example, in German, the word _user_ can be translated into _Benutzer_ (male) or _Benutzerin_ +(female). Therefore, _create a new user_ translates to _Benutzer(in) anlegen_. ### Updating the glossary -To propose additions to the glossary please +To propose additions to the glossary, please [open an issue](https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&utf8=✓&state=all&label_name[]=Category%3AInternationalization). -## French Translation Guidelines - -### Inclusive language in French +## French translation guidelines -In French, the "écriture inclusive" is now over (see on [Legifrance](https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000036068906/)). -So, to include both genders, write "Utilisateurs et utilisatrices" instead of "Utilisateur·rice·s". -When space is missing, the male gender should be used alone. +In French, the _écriture inclusive_ is now over (see on [Legifrance](https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000036068906/)). +To include both genders, write _Utilisateurs et utilisatrices_ instead of _Utilisateur·rice·s_. If +there is not enough space, use the male gender alone. diff --git a/doc/development/usage_ping/dictionary.md b/doc/development/usage_ping/dictionary.md index 1f0f885ebe3..e331a64d202 100644 --- a/doc/development/usage_ping/dictionary.md +++ b/doc/development/usage_ping/dictionary.md @@ -6960,15 +6960,15 @@ Tiers: `premium`, `ultimate` ### `git.version` -Missing description +Information about Git version [YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210216183237_version.yml) -Group: `` +Group: `group::distribution` Status: `data_available` -Tiers: `free` +Tiers: `free`, `premium`, `ultimate` ### `gitaly.clusters` diff --git a/doc/user/clusters/applications.md b/doc/user/clusters/applications.md index 967d9b19709..501f7a8692f 100644 --- a/doc/user/clusters/applications.md +++ b/doc/user/clusters/applications.md @@ -1069,7 +1069,6 @@ You can install the following applications with one click: - [Knative](#knative) - [Crossplane](#crossplane) - [Elastic Stack](#elastic-stack) -- [Fluentd](#fluentd) With the exception of Knative, the applications are installed in a dedicated namespace called `gitlab-managed-apps`. @@ -1561,27 +1560,6 @@ kubectl port-forward svc/kibana-kibana 5601:5601 Then, you can visit Kibana at `http://localhost:5601`. -### Fluentd - -> Introduced in GitLab 12.10 for project- and group-level clusters. - -[Fluentd](https://www.fluentd.org/) is an open source data collector, which enables -you to unify the data collection and consumption to better use and understand -your data. Fluentd sends logs in syslog format. - -To enable Fluentd: - -1. Navigate to **Operations > Kubernetes** and click - **Applications**. Enter a host, port, and protocol - for sending the WAF logs with syslog. -1. Provide the host domain name or URL in **SIEM Hostname**. -1. Provide the host port number in **SIEM Port**. -1. Select a **SIEM Protocol**. -1. Select at least one of the available logs (such as WAF or Cilium). -1. Click **Save changes**. - -![Fluentd input fields](img/fluentd_v13_0.png) - ## Upgrading applications > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/24789) in GitLab 11.8. diff --git a/doc/user/clusters/img/fluentd_v13_0.png b/doc/user/clusters/img/fluentd_v13_0.png deleted file mode 100644 index edc732852386b18e70f4c6f03aed88aa521c739a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32445 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 diff --git a/doc/user/discussions/index.md b/doc/user/discussions/index.md index 50007545a65..fd4eb01b98a 100644 --- a/doc/user/discussions/index.md +++ b/doc/user/discussions/index.md @@ -7,7 +7,8 @@ type: reference, howto # Threads **(FREE)** -GitLab encourages communication through comments, threads, and suggestions. +GitLab encourages communication through comments, threads, and +[code suggestions](../project/merge_requests/reviews/suggestions.md). For example, you can create a comment in the following places: @@ -22,7 +23,9 @@ There are standard comments, and you also have the option to create a comment in the form of a thread. A comment can also be [turned into a thread](#start-a-thread-by-replying-to-a-standard-comment) when it receives a reply. -The comment area supports [Markdown](../markdown.md) and [quick actions](../project/quick_actions.md). You can edit your own +The comment area supports [Markdown](../markdown.md) and [quick actions](../project/quick_actions.md). +You can [suggest code changes](../project/merge_requests/reviews/suggestions.md) in your comment, +which the user can accept through the user interface. You can edit your own comment at any time, and anyone with [Maintainer access level](../permissions.md) or higher can also edit a comment made by someone else. diff --git a/doc/user/project/clusters/protect/container_host_security/index.md b/doc/user/project/clusters/protect/container_host_security/index.md index 102001d4f87..33121c0dd52 100644 --- a/doc/user/project/clusters/protect/container_host_security/index.md +++ b/doc/user/project/clusters/protect/container_host_security/index.md @@ -28,8 +28,8 @@ users define profiles for these technologies. See the [installation guide](quick_start_guide.md) for the recommended steps to install the Container Host Security capabilities. This guide shows the recommended way of installing Container -Host Security through GMAv2. However, it's also possible to do a manual installation through our -Helm chart. +Host Security through the Cluster Management Project. However, it's also possible to do a manual +installation through our Helm chart. ## Features diff --git a/doc/user/project/clusters/protect/container_host_security/quick_start_guide.md b/doc/user/project/clusters/protect/container_host_security/quick_start_guide.md index fa4a5fb61d0..456036fc926 100644 --- a/doc/user/project/clusters/protect/container_host_security/quick_start_guide.md +++ b/doc/user/project/clusters/protect/container_host_security/quick_start_guide.md @@ -6,9 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Getting started with Container Host Security -The following steps are recommended for installing Container Host Security. Although you can install -some capabilities through GMAv1, we [recommend](#using-gmav1-with-gmav2) that you install -applications through GMAv2 exclusively when using Container Network Security. +The following steps are recommended for installing Container Host Security. ## Installation steps @@ -21,7 +19,7 @@ The following steps are recommended to install and use Container Host Security t 1. Install and configure an Ingress node: - - [Install the Ingress node via CI/CD (GMAv2)](../../../../clusters/applications.md#install-ingress-using-gitlab-cicd). + - [Install the Ingress node via CI/CD (Cluster Management Project)](../../../../clusters/applications.md#install-ingress-using-gitlab-cicd). - [Determine the external endpoint via the manual method](../../../../clusters/applications.md#determining-the-external-endpoint-manually). - Navigate to the Kubernetes page and enter the [DNS address for the external endpoint](../../index.md#base-domain) into the **Base domain** field on the **Details** tab. Save the changes to the Kubernetes @@ -63,19 +61,6 @@ initial troubleshooting steps that resolve the most common problems: `kubectl delete namespaces ` in your Kubernetes cluster. - Rerun the application project pipeline to redeploy the application. -### Using GMAv1 with GMAv2 - -When GMAv1 and GMAv2 are used together on the same cluster, users may experience problems with -applications being uninstalled or removed from the cluster. This is because GMAv2 actively -uninstalls applications that are installed with GMAv1 and not configured to be installed with GMAv2. -It's possible to use a mixture of applications installed with GMAv1 and GMAv2 by ensuring that the -GMAv1 applications are installed **after** the GMAv2 cluster management project pipeline runs. GMAv1 -applications must be reinstalled after each run of that pipeline. This approach isn't recommended as -it's error-prone and can lead to downtime as applications are uninstalled and later reinstalled. -When using Container Network Security, the preferred and recommended path is to install all -necessary components with GMAv2 and the cluster management project. - **Related documentation links:** -- [GitLab Managed Apps v1 (GMAv1)](../../../../clusters/applications.md#install-with-one-click-deprecated) -- [GitLab Managed Apps v2 (GMAv2)](../../../../clusters/management_project.md) +- [Cluster Management Project](../../../../clusters/management_project.md) diff --git a/doc/user/project/clusters/protect/container_network_security/index.md b/doc/user/project/clusters/protect/container_network_security/index.md index a7cdd73acd7..461b44a77ef 100644 --- a/doc/user/project/clusters/protect/container_network_security/index.md +++ b/doc/user/project/clusters/protect/container_network_security/index.md @@ -20,8 +20,8 @@ disabled by default, as they must usually be customized to match application-spe See the [installation guide](quick_start_guide.md) for the recommended steps to install GitLab Container Network Security. This guide shows the recommended way of installing Container Network -Security through GMAv2. However, it's also possible to install Cilium manually through our Helm -chart. +Security through the Cluster Management Project. However, it's also possible to install Cilium +manually through our Helm chart. ## Features diff --git a/doc/user/project/clusters/protect/container_network_security/quick_start_guide.md b/doc/user/project/clusters/protect/container_network_security/quick_start_guide.md index bf419c69885..16eb86d74e2 100644 --- a/doc/user/project/clusters/protect/container_network_security/quick_start_guide.md +++ b/doc/user/project/clusters/protect/container_network_security/quick_start_guide.md @@ -6,9 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Getting started with Container Network Security -The following steps are recommended for installing Container Network Security. Although you can -install some capabilities through GMAv1, we [recommend](#using-gmav1-with-gmav2) that you install -applications through GMAv2 exclusively when using Container Network Security. +The following steps are recommended for installing Container Network Security. ## Installation steps @@ -21,7 +19,7 @@ The following steps are recommended to install and use Container Network Securit 1. Install and configure an Ingress node: - - [Install the Ingress node via CI/CD (GMAv2)](../../../../clusters/applications.md#install-ingress-using-gitlab-cicd). + - [Install the Ingress node via CI/CD (Cluster Management Project)](../../../../clusters/applications.md#install-ingress-using-gitlab-cicd). - [Determine the external endpoint via the manual method](../../../../clusters/applications.md#determining-the-external-endpoint-manually). - Navigate to the Kubernetes page and enter the [DNS address for the external endpoint](../../index.md#base-domain) into the **Base domain** field on the **Details** tab. Save the changes to the Kubernetes @@ -83,12 +81,8 @@ Additional information about the statistics page is available in the ## Forwarding logs to a SIEM Cilium logs can be forwarded to a SIEM or an external logging system through syslog protocol by -installing and configuring Fluentd. Fluentd can be installed through GitLab in two ways: - -- The [GMAv1 method](../../../../clusters/applications.md#fluentd) -- The [GMAv2 method](../../../../clusters/applications.md#install-fluentd-using-gitlab-cicd) - -GitLab strongly encourages using only the GMAv2 method to install Fluentd. +installing and configuring Fluentd. Fluentd can be installed through the GitLab +[Cluster Management Project](../../../../clusters/applications.md#install-fluentd-using-gitlab-cicd). ## Viewing the logs @@ -135,19 +129,6 @@ initial troubleshooting steps that resolve the most common problems: - Delete the relevant namespace in Kubernetes by running `kubectl delete namespaces ` in your Kubernetes cluster. - Rerun the application project pipeline to redeploy the application. -### Using GMAv1 with GMAv2 - -When GMAv1 and GMAv2 are used together on the same cluster, users may experience problems with -applications being uninstalled or removed from the cluster. This is because GMAv2 actively -uninstalls applications that are installed with GMAv1 and not configured to be installed with GMAv2. -It's possible to use a mixture of applications installed with GMAv1 and GMAv2 by ensuring that the -GMAv1 applications are installed **after** the GMAv2 cluster management project pipeline runs. GMAv1 -applications must be reinstalled after each run of that pipeline. This approach isn't recommended as -it's error-prone and can lead to downtime as applications are uninstalled and later reinstalled. -When using Container Network Security, the preferred and recommended path is to install all -necessary components with GMAv2 and the cluster management project. - **Related documentation links:** -- [GitLab Managed Apps v1 (GMAv1)](../../../../clusters/applications.md#install-with-one-click-deprecated) -- [GitLab Managed Apps v2 (GMAv2)](../../../../clusters/management_project.md) +- [Cluster Management Project](../../../../clusters/management_project.md) diff --git a/doc/user/project/merge_requests/reviews/index.md b/doc/user/project/merge_requests/reviews/index.md index e98a230c0de..9c88664ebb5 100644 --- a/doc/user/project/merge_requests/reviews/index.md +++ b/doc/user/project/merge_requests/reviews/index.md @@ -9,9 +9,9 @@ type: index, reference [Merge requests](../index.md) are the primary method of making changes to files in a GitLab project. [Create and submit a merge request](../creating_merge_requests.md) -to propose changes. Your team makes [suggestions](suggestions.md) and leaves -[comments](../../../discussions/index.md). When your work is reviewed, your team -members can choose to accept or reject it. +to propose changes. Your team leaves [comments](../../../discussions/index.md), and +makes [code suggestions](suggestions.md) you can accept from the user interface. +When your work is reviewed, your team members can choose to accept or reject it. ## View merge requests diff --git a/doc/user/project/merge_requests/reviews/suggestions.md b/doc/user/project/merge_requests/reviews/suggestions.md index 0c8dd384b88..9409cc569a6 100644 --- a/doc/user/project/merge_requests/reviews/suggestions.md +++ b/doc/user/project/merge_requests/reviews/suggestions.md @@ -140,3 +140,7 @@ to your branch to address your reviewers' requests. WARNING: Suggestions applied from multiple authors creates a commit authored by the user applying the suggestions. + +## Related links + +- [Suggestions API](../../../../api/suggestions.md) diff --git a/lib/gitlab/highlight.rb b/lib/gitlab/highlight.rb index e4857280969..2d58bb88816 100644 --- a/lib/gitlab/highlight.rb +++ b/lib/gitlab/highlight.rb @@ -11,9 +11,11 @@ module Gitlab end def self.too_large?(size) - return false unless size.to_i > Gitlab.config.extra['maximum_text_highlight_size_kilobytes'] + file_size_limit = Gitlab.config.extra['maximum_text_highlight_size_kilobytes'] - over_highlight_size_limit.increment(source: "text highlighter") if Feature.enabled?(:track_file_size_over_highlight_limit) + return false unless size.to_i > file_size_limit + + over_highlight_size_limit.increment(source: "file size: #{file_size_limit}") if Feature.enabled?(:track_file_size_over_highlight_limit) true end diff --git a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb index fe2d821576b..2538f249010 100644 --- a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb +++ b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb @@ -18,7 +18,7 @@ module QA end where(:template) do - %w[rails spring express] + %w[express] end with_them do @@ -45,7 +45,7 @@ module QA Flow::Login.sign_in end - it 'works with Auto DevOps', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/240946', type: :flaky } do + it 'works with Auto DevOps' do %w[build code_quality test].each do |job| pipeline.visit! diff --git a/scripts/lint-changelog-filenames b/scripts/lint-changelog-filenames deleted file mode 100755 index fc07b7153aa..00000000000 --- a/scripts/lint-changelog-filenames +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -lint_paths="changelogs/unreleased" -[ -d "ee/" ] && lint_paths="$lint_paths ee/changelogs/unreleased" - -invalid_files=$(find $lint_paths -type f -not -name "*.yml" -not -name ".gitkeep") - -if [ -n "$invalid_files" ]; then - echo "Changelog files must end in .yml, but these did not:" - echo "$invalid_files" | sed -e "s/^/* /" - exit 1 -fi diff --git a/scripts/static-analysis b/scripts/static-analysis index 136b2966244..f004d2246ec 100755 --- a/scripts/static-analysis +++ b/scripts/static-analysis @@ -38,8 +38,7 @@ class StaticAnalysis %w[yarn run block-dependencies] => 0.35, %w[scripts/lint-rugged] => 0.23, %w[scripts/gemfile_lock_changed.sh] => 0.02, - %w[scripts/frontend/check_no_partial_karma_jest.sh] => 0.01, - %w[scripts/lint-changelog-filenames] => 0.01 + %w[scripts/frontend/check_no_partial_karma_jest.sh] => 0.01 }.reject { |k| k.nil? }.sort_by { |a| -a[1] }.to_h.keys.freeze def run_tasks! diff --git a/spec/frontend/nav/components/top_nav_container_view_spec.js b/spec/frontend/nav/components/top_nav_container_view_spec.js index b08d75f36ce..12bee7a515e 100644 --- a/spec/frontend/nav/components/top_nav_container_view_spec.js +++ b/spec/frontend/nav/components/top_nav_container_view_spec.js @@ -23,13 +23,14 @@ const TEST_OTHER_PROPS = { describe('~/nav/components/top_nav_container_view.vue', () => { let wrapper; - const createComponent = (props = {}) => { + const createComponent = (props = {}, options = {}) => { wrapper = shallowMount(TopNavContainerView, { propsData: { ...DEFAULT_PROPS, ...TEST_OTHER_PROPS, ...props, }, + ...options, }); }; @@ -44,6 +45,7 @@ describe('~/nav/components/top_nav_container_view.vue', () => { return { vuexModule: parent.props('vuexModule'), props: parent.findComponent(FrequentItemsApp).props(), + attributes: parent.findComponent(FrequentItemsApp).attributes(), }; }; @@ -67,14 +69,23 @@ describe('~/nav/components/top_nav_container_view.vue', () => { ); describe('default', () => { + const EXTRA_ATTRS = { 'data-test-attribute': 'foo' }; + beforeEach(() => { - createComponent(); + createComponent({}, { attrs: EXTRA_ATTRS }); + }); + + it('does not inherit extra attrs', () => { + expect(wrapper.attributes()).toEqual({ + class: expect.any(String), + }); }); it('renders frequent items app', () => { expect(findFrequentItemsApp()).toEqual({ vuexModule: DEFAULT_PROPS.frequentItemsVuexModule, props: TEST_OTHER_PROPS, + attributes: expect.objectContaining(EXTRA_ATTRS), }); }); diff --git a/spec/lib/gitlab/highlight_spec.rb b/spec/lib/gitlab/highlight_spec.rb index a5e4d37d306..74388273c8d 100644 --- a/spec/lib/gitlab/highlight_spec.rb +++ b/spec/lib/gitlab/highlight_spec.rb @@ -54,7 +54,7 @@ RSpec.describe Gitlab::Highlight do end it 'increments the metric for oversized files' do - expect { result }.to change { over_highlight_size_limit('text highlighter') }.by(1) + expect { result }.to change { over_highlight_size_limit('file size: 0.0001') }.by(1) end it 'returns plain version for long content' do diff --git a/spec/tooling/danger/project_helper_spec.rb b/spec/tooling/danger/project_helper_spec.rb index e07d9a8a6f2..3275b41ba6e 100644 --- a/spec/tooling/danger/project_helper_spec.rb +++ b/spec/tooling/danger/project_helper_spec.rb @@ -162,8 +162,6 @@ RSpec.describe Tooling::Danger::ProjectHelper do 'workhorse/main.go' | [:workhorse] 'workhorse/internal/upload/upload.go' | [:workhorse] - 'changelogs/foo' | [:none] - 'ee/changelogs/foo' | [:none] 'locale/gitlab.pot' | [:none] 'FOO' | [:unknown] diff --git a/tooling/danger/project_helper.rb b/tooling/danger/project_helper.rb index c965c02378c..c0aa27b7a0c 100644 --- a/tooling/danger/project_helper.rb +++ b/tooling/danger/project_helper.rb @@ -38,8 +38,6 @@ module Tooling %r{\A(ee/)?config/feature_flags/} => :feature_flag, - %r{\A(ee/)?(changelogs/unreleased)(-ee)?/} => :changelog, - %r{\Adoc/development/usage_ping/dictionary\.md\z} => [:docs, :product_intelligence], %r{\Adoc/.*(\.(md|png|gif|jpg))\z} => :docs, %r{\A(CONTRIBUTING|LICENSE|MAINTENANCE|PHILOSOPHY|PROCESS|README)(\.md)?\z} => :docs,