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 edc73285238..00000000000 Binary files a/doc/user/clusters/img/fluentd_v13_0.png and /dev/null differ 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,