Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
a59c9590f5
commit
9caed104bc
23 changed files with 194 additions and 64 deletions
|
@ -26,5 +26,103 @@
|
||||||
"first-line-h1": false,
|
"first-line-h1": false,
|
||||||
"code-block-style": {
|
"code-block-style": {
|
||||||
"style": "fenced"
|
"style": "fenced"
|
||||||
|
},
|
||||||
|
"proper-names": {
|
||||||
|
"names": [
|
||||||
|
"Akismet",
|
||||||
|
"Alertmanager",
|
||||||
|
"API",
|
||||||
|
"Asana",
|
||||||
|
"Auth0",
|
||||||
|
"Authentiq",
|
||||||
|
"Azure",
|
||||||
|
"Bamboo",
|
||||||
|
"Bitbucket",
|
||||||
|
"Bugzilla",
|
||||||
|
"CAS",
|
||||||
|
"CentOS",
|
||||||
|
"Consul",
|
||||||
|
"Debian",
|
||||||
|
"Elasticsearch",
|
||||||
|
"Facebook",
|
||||||
|
"Git LFS",
|
||||||
|
"git-annex",
|
||||||
|
"gitlab-ui",
|
||||||
|
"Git",
|
||||||
|
"Gitaly",
|
||||||
|
"GitHub",
|
||||||
|
"GitLab Geo",
|
||||||
|
"GitLab Monitor",
|
||||||
|
"GitLab Operator",
|
||||||
|
"GitLab Pages",
|
||||||
|
"GitLab Rails",
|
||||||
|
"GitLab Runner",
|
||||||
|
"GitLab Shell",
|
||||||
|
"GitLab Workhorse",
|
||||||
|
"GitLab",
|
||||||
|
"Gmail",
|
||||||
|
"Google",
|
||||||
|
"Grafana",
|
||||||
|
"Helm",
|
||||||
|
"HipChat",
|
||||||
|
"Ingress",
|
||||||
|
"jasmine-jquery",
|
||||||
|
"JavaScript",
|
||||||
|
"Jaeger",
|
||||||
|
"Jenkins",
|
||||||
|
"Jira",
|
||||||
|
"Jira Cloud",
|
||||||
|
"Jira Server",
|
||||||
|
"jQuery",
|
||||||
|
"JupyterHub",
|
||||||
|
"Karma",
|
||||||
|
"Kerberos",
|
||||||
|
"Knative",
|
||||||
|
"Kubernetes",
|
||||||
|
"LDAP",
|
||||||
|
"Let's Encrypt",
|
||||||
|
"Markdown",
|
||||||
|
"markdownlint",
|
||||||
|
"Mattermost",
|
||||||
|
"Microsoft",
|
||||||
|
"MinIO",
|
||||||
|
"NGINX Ingress",
|
||||||
|
"NGINX",
|
||||||
|
"OAuth",
|
||||||
|
"OAuth 2",
|
||||||
|
"OmniAuth",
|
||||||
|
"Omnibus GitLab",
|
||||||
|
"OpenID",
|
||||||
|
"OpenShift",
|
||||||
|
"PgBouncer",
|
||||||
|
"PostgreSQL",
|
||||||
|
"Prometheus",
|
||||||
|
"Puma",
|
||||||
|
"Python",
|
||||||
|
"Redis",
|
||||||
|
"Redmine",
|
||||||
|
"reCAPTCHA",
|
||||||
|
"runit",
|
||||||
|
"Salesforce",
|
||||||
|
"SAML",
|
||||||
|
"Sentry",
|
||||||
|
"Sidekiq",
|
||||||
|
"Shibboleth",
|
||||||
|
"Slack",
|
||||||
|
"SMTP",
|
||||||
|
"SSH",
|
||||||
|
"Tiller",
|
||||||
|
"Trello",
|
||||||
|
"Trello Power-Ups",
|
||||||
|
"TypeScript",
|
||||||
|
"Twitter",
|
||||||
|
"Ubuntu",
|
||||||
|
"Ultra Auth",
|
||||||
|
"Unicorn",
|
||||||
|
"unicorn-worker-killer",
|
||||||
|
"WebdriverIO",
|
||||||
|
"YouTrack"
|
||||||
|
],
|
||||||
|
"code_blocks": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ module Types
|
||||||
field :id, GraphQL::ID_TYPE, null: false,
|
field :id, GraphQL::ID_TYPE, null: false,
|
||||||
description: 'Label ID'
|
description: 'Label ID'
|
||||||
field :description, GraphQL::STRING_TYPE, null: true,
|
field :description, GraphQL::STRING_TYPE, null: true,
|
||||||
description: 'Description of the label (markdown rendered as HTML for caching)'
|
description: 'Description of the label (Markdown rendered as HTML for caching)'
|
||||||
markdown_field :description_html, null: true
|
markdown_field :description_html, null: true
|
||||||
field :title, GraphQL::STRING_TYPE, null: false,
|
field :title, GraphQL::STRING_TYPE, null: false,
|
||||||
description: 'Content of the label'
|
description: 'Content of the label'
|
||||||
|
|
|
@ -20,7 +20,7 @@ module Types
|
||||||
description: 'Title of the merge request'
|
description: 'Title of the merge request'
|
||||||
markdown_field :title_html, null: true
|
markdown_field :title_html, null: true
|
||||||
field :description, GraphQL::STRING_TYPE, null: true,
|
field :description, GraphQL::STRING_TYPE, null: true,
|
||||||
description: 'Description of the merge request (markdown rendered as HTML for caching)'
|
description: 'Description of the merge request (Markdown rendered as HTML for caching)'
|
||||||
markdown_field :description_html, null: true
|
markdown_field :description_html, null: true
|
||||||
field :state, MergeRequestStateEnum, null: false,
|
field :state, MergeRequestStateEnum, null: false,
|
||||||
description: 'State of the merge request'
|
description: 'State of the merge request'
|
||||||
|
|
|
@ -7,7 +7,7 @@ module Types
|
||||||
authorize :read_statistics
|
authorize :read_statistics
|
||||||
|
|
||||||
field :storage_size, GraphQL::INT_TYPE, null: false, description: 'The total storage in bytes'
|
field :storage_size, GraphQL::INT_TYPE, null: false, description: 'The total storage in bytes'
|
||||||
field :repository_size, GraphQL::INT_TYPE, null: false, description: 'The git repository size in bytes'
|
field :repository_size, GraphQL::INT_TYPE, null: false, description: 'The Git repository size in bytes'
|
||||||
field :lfs_objects_size, GraphQL::INT_TYPE, null: false, description: 'The LFS objects size in bytes'
|
field :lfs_objects_size, GraphQL::INT_TYPE, null: false, description: 'The LFS objects size in bytes'
|
||||||
field :build_artifacts_size, GraphQL::INT_TYPE, null: false, description: 'The CI artifacts size in bytes'
|
field :build_artifacts_size, GraphQL::INT_TYPE, null: false, description: 'The CI artifacts size in bytes'
|
||||||
field :packages_size, GraphQL::INT_TYPE, null: false, description: 'The packages size in bytes'
|
field :packages_size, GraphQL::INT_TYPE, null: false, description: 'The packages size in bytes'
|
||||||
|
|
|
@ -35,7 +35,7 @@ The following guide assumes that:
|
||||||
|
|
||||||
- You are using Omnibus and therefore you are using PostgreSQL 9.6 or later
|
- You are using Omnibus and therefore you are using PostgreSQL 9.6 or later
|
||||||
which includes the [`pg_basebackup` tool](https://www.postgresql.org/docs/9.6/app-pgbasebackup.html) and improved
|
which includes the [`pg_basebackup` tool](https://www.postgresql.org/docs/9.6/app-pgbasebackup.html) and improved
|
||||||
[Foreign Data Wrapper][FDW](https://www.postgresql.org/docs/9.6/postgres-fdw.html) support.
|
[Foreign Data Wrapper](https://www.postgresql.org/docs/9.6/postgres-fdw.html) support.
|
||||||
- You have a **primary** node already set up (the GitLab server you are
|
- You have a **primary** node already set up (the GitLab server you are
|
||||||
replicating from), running Omnibus' PostgreSQL (or equivalent version), and
|
replicating from), running Omnibus' PostgreSQL (or equivalent version), and
|
||||||
you have a new **secondary** server set up with the same versions of the OS,
|
you have a new **secondary** server set up with the same versions of the OS,
|
||||||
|
|
|
@ -2815,7 +2815,7 @@ type Label {
|
||||||
color: String!
|
color: String!
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Description of the label (markdown rendered as HTML for caching)
|
Description of the label (Markdown rendered as HTML for caching)
|
||||||
"""
|
"""
|
||||||
description: String
|
description: String
|
||||||
|
|
||||||
|
@ -2917,7 +2917,7 @@ type MergeRequest implements Noteable {
|
||||||
defaultMergeCommitMessage: String
|
defaultMergeCommitMessage: String
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Description of the merge request (markdown rendered as HTML for caching)
|
Description of the merge request (Markdown rendered as HTML for caching)
|
||||||
"""
|
"""
|
||||||
description: String
|
description: String
|
||||||
|
|
||||||
|
@ -5112,7 +5112,7 @@ type RootStorageStatistics {
|
||||||
packagesSize: Int!
|
packagesSize: Int!
|
||||||
|
|
||||||
"""
|
"""
|
||||||
The git repository size in bytes
|
The Git repository size in bytes
|
||||||
"""
|
"""
|
||||||
repositorySize: Int!
|
repositorySize: Int!
|
||||||
|
|
||||||
|
|
|
@ -2647,7 +2647,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "repositorySize",
|
"name": "repositorySize",
|
||||||
"description": "The git repository size in bytes",
|
"description": "The Git repository size in bytes",
|
||||||
"args": [
|
"args": [
|
||||||
|
|
||||||
],
|
],
|
||||||
|
@ -7591,7 +7591,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "description",
|
"name": "description",
|
||||||
"description": "Description of the label (markdown rendered as HTML for caching)",
|
"description": "Description of the label (Markdown rendered as HTML for caching)",
|
||||||
"args": [
|
"args": [
|
||||||
|
|
||||||
],
|
],
|
||||||
|
@ -13656,7 +13656,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "description",
|
"name": "description",
|
||||||
"description": "Description of the merge request (markdown rendered as HTML for caching)",
|
"description": "Description of the merge request (Markdown rendered as HTML for caching)",
|
||||||
"args": [
|
"args": [
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
|
@ -399,7 +399,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
||||||
| Name | Type | Description |
|
| Name | Type | Description |
|
||||||
| --- | ---- | ---------- |
|
| --- | ---- | ---------- |
|
||||||
| `id` | ID! | Label ID |
|
| `id` | ID! | Label ID |
|
||||||
| `description` | String | Description of the label (markdown rendered as HTML for caching) |
|
| `description` | String | Description of the label (Markdown rendered as HTML for caching) |
|
||||||
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
|
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
|
||||||
| `title` | String! | Content of the label |
|
| `title` | String! | Content of the label |
|
||||||
| `color` | String! | Background color of the label |
|
| `color` | String! | Background color of the label |
|
||||||
|
@ -414,7 +414,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
||||||
| `iid` | String! | Internal ID of the merge request |
|
| `iid` | String! | Internal ID of the merge request |
|
||||||
| `title` | String! | Title of the merge request |
|
| `title` | String! | Title of the merge request |
|
||||||
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
|
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
|
||||||
| `description` | String | Description of the merge request (markdown rendered as HTML for caching) |
|
| `description` | String | Description of the merge request (Markdown rendered as HTML for caching) |
|
||||||
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
|
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
|
||||||
| `state` | MergeRequestState! | State of the merge request |
|
| `state` | MergeRequestState! | State of the merge request |
|
||||||
| `createdAt` | Time! | Timestamp of when the merge request was created |
|
| `createdAt` | Time! | Timestamp of when the merge request was created |
|
||||||
|
@ -749,7 +749,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
||||||
| Name | Type | Description |
|
| Name | Type | Description |
|
||||||
| --- | ---- | ---------- |
|
| --- | ---- | ---------- |
|
||||||
| `storageSize` | Int! | The total storage in bytes |
|
| `storageSize` | Int! | The total storage in bytes |
|
||||||
| `repositorySize` | Int! | The git repository size in bytes |
|
| `repositorySize` | Int! | The Git repository size in bytes |
|
||||||
| `lfsObjectsSize` | Int! | The LFS objects size in bytes |
|
| `lfsObjectsSize` | Int! | The LFS objects size in bytes |
|
||||||
| `buildArtifactsSize` | Int! | The CI artifacts size in bytes |
|
| `buildArtifactsSize` | Int! | The CI artifacts size in bytes |
|
||||||
| `packagesSize` | Int! | The packages size in bytes |
|
| `packagesSize` | Int! | The packages size in bytes |
|
||||||
|
|
|
@ -335,7 +335,7 @@ deploy:
|
||||||
NOTE: **Note:**
|
NOTE: **Note:**
|
||||||
Kubernetes configuration is not supported for Kubernetes clusters
|
Kubernetes configuration is not supported for Kubernetes clusters
|
||||||
that are [managed by GitLab](../user/project/clusters/index.md#gitlab-managed-clusters).
|
that are [managed by GitLab](../user/project/clusters/index.md#gitlab-managed-clusters).
|
||||||
To follow progress on support for Gitlab-managed clusters, see the
|
To follow progress on support for GitLab-managed clusters, see the
|
||||||
[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/38054).
|
[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/38054).
|
||||||
|
|
||||||
### Complete example
|
### Complete example
|
||||||
|
|
|
@ -1456,7 +1456,7 @@ For more information, see
|
||||||
NOTE: **Note:**
|
NOTE: **Note:**
|
||||||
Kubernetes configuration is not supported for Kubernetes clusters
|
Kubernetes configuration is not supported for Kubernetes clusters
|
||||||
that are [managed by GitLab](../../user/project/clusters/index.md#gitlab-managed-clusters).
|
that are [managed by GitLab](../../user/project/clusters/index.md#gitlab-managed-clusters).
|
||||||
To follow progress on support for Gitlab-managed clusters, see the
|
To follow progress on support for GitLab-managed clusters, see the
|
||||||
[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/38054).
|
[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/38054).
|
||||||
|
|
||||||
#### Dynamic environments
|
#### Dynamic environments
|
||||||
|
|
|
@ -399,7 +399,7 @@ merge request with new or changed docs is submitted, are:
|
||||||
- The `CHANGELOG.md` does not contain duplicate versions.
|
- The `CHANGELOG.md` does not contain duplicate versions.
|
||||||
- No files in `doc/` are executable.
|
- No files in `doc/` are executable.
|
||||||
- No new `README.md` was added.
|
- No new `README.md` was added.
|
||||||
- [`markdownlint`](#markdownlint).
|
- [markdownlint](#markdownlint).
|
||||||
- Nanoc tests, which you can [run locally](#previewing-the-changes-live) before
|
- Nanoc tests, which you can [run locally](#previewing-the-changes-live) before
|
||||||
pushing to GitLab by executing the command `bundle exec nanoc check internal_links`
|
pushing to GitLab by executing the command `bundle exec nanoc check internal_links`
|
||||||
(or `internal_anchors`) on your local [`gitlab-docs`](https://gitlab.com/gitlab-org/gitlab-docs) directory:
|
(or `internal_anchors`) on your local [`gitlab-docs`](https://gitlab.com/gitlab-org/gitlab-docs) directory:
|
||||||
|
@ -420,7 +420,7 @@ help you catch common issues before raising merge requests for review of documen
|
||||||
The following are some suggested linters you can install locally and sample configuration:
|
The following are some suggested linters you can install locally and sample configuration:
|
||||||
|
|
||||||
- [`proselint`](#proselint)
|
- [`proselint`](#proselint)
|
||||||
- [`markdownlint`](#markdownlint), which is the same as the test run in [`docs-lint`](#testing)
|
- [markdownlint](#markdownlint), which is the same as the test run in [`docs-lint`](#testing)
|
||||||
|
|
||||||
NOTE: **Note:**
|
NOTE: **Note:**
|
||||||
This list does not limit what other linters you can add to your local documentation writing toolchain.
|
This list does not limit what other linters you can add to your local documentation writing toolchain.
|
||||||
|
@ -464,18 +464,18 @@ noise. The following sample `proselint` configuration disables these checks:
|
||||||
A file with `proselint` configuration must be placed in a
|
A file with `proselint` configuration must be placed in a
|
||||||
[valid location](https://github.com/amperser/proselint#checks). For example, `~/.config/proselint/config`.
|
[valid location](https://github.com/amperser/proselint#checks). For example, `~/.config/proselint/config`.
|
||||||
|
|
||||||
#### `markdownlint`
|
#### markdownlint
|
||||||
|
|
||||||
[`markdownlint`](https://github.com/DavidAnson/markdownlint) checks that Markdown
|
[markdownlint](https://github.com/DavidAnson/markdownlint) checks that Markdown
|
||||||
syntax follows [certain rules](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#rules),
|
syntax follows [certain rules](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#rules),
|
||||||
and is used by the [`docs-lint` test](#testing) with a [configuration file](#markdownlint-configuration).
|
and is used by the [`docs-lint` test](#testing) with a [configuration file](#markdownlint-configuration).
|
||||||
Our [Documentation Style Guide](styleguide.md#markdown) and [Markdown Guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/)
|
Our [Documentation Style Guide](styleguide.md#markdown) and [Markdown Guide](https://about.gitlab.com/handbook/product/technical-writing/markdown-guide/)
|
||||||
elaborate on which choices must be made when selecting Markdown syntax for GitLab
|
elaborate on which choices must be made when selecting Markdown syntax for GitLab
|
||||||
documentation. This tool helps catch deviations from those guidelines.
|
documentation. This tool helps catch deviations from those guidelines.
|
||||||
|
|
||||||
`markdownlint` can be used [on the command line](https://github.com/igorshubovych/markdownlint-cli#markdownlint-cli--),
|
markdownlint can be used [on the command line](https://github.com/igorshubovych/markdownlint-cli#markdownlint-cli--),
|
||||||
either on a single Markdown file or on all Markdown files in a project. For example, to run
|
either on a single Markdown file or on all Markdown files in a project. For example, to run
|
||||||
`markdownlint` on all documentation in the [`gitlab` project](https://gitlab.com/gitlab-org/gitlab),
|
markdownlint on all documentation in the [`gitlab` project](https://gitlab.com/gitlab-org/gitlab),
|
||||||
run the following commands from within your `gitlab` project root directory, which will
|
run the following commands from within your `gitlab` project root directory, which will
|
||||||
automatically detect the [`.markdownlint.json`](#markdownlint-configuration) config
|
automatically detect the [`.markdownlint.json`](#markdownlint-configuration) config
|
||||||
file in the root of the project, and test all files in `/doc` and its subdirectories:
|
file in the root of the project, and test all files in `/doc` and its subdirectories:
|
||||||
|
@ -490,7 +490,7 @@ If you wish to use a different config file, use the `-c` flag:
|
||||||
markdownlint -c <config-file-name> 'doc/**/*.md'
|
markdownlint -c <config-file-name> 'doc/**/*.md'
|
||||||
```
|
```
|
||||||
|
|
||||||
`markdownlint` can also be run from within text editors using [plugins/extensions](https://github.com/DavidAnson/markdownlint#related),
|
markdownlint can also be run from within text editors using [plugins/extensions](https://github.com/DavidAnson/markdownlint#related),
|
||||||
such as:
|
such as:
|
||||||
|
|
||||||
- [Sublime Text](https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint)
|
- [Sublime Text](https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint)
|
||||||
|
@ -502,9 +502,9 @@ is in use in the four repos that are the sources for <https://docs.gitlab.com>.
|
||||||
plugin/extension has different requirements regarding the configuration file, which
|
plugin/extension has different requirements regarding the configuration file, which
|
||||||
is explained in each editor's docs.
|
is explained in each editor's docs.
|
||||||
|
|
||||||
##### `markdownlint` configuration
|
##### markdownlint configuration
|
||||||
|
|
||||||
Each formatting issue that `markdownlint` checks has an associated
|
Each formatting issue that markdownlint checks has an associated
|
||||||
[rule](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#rules).
|
[rule](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#rules).
|
||||||
These rules are configured in the `.markdownlint.json` files located in the root of
|
These rules are configured in the `.markdownlint.json` files located in the root of
|
||||||
four repos that are the sources for <https://docs.gitlab.com>:
|
four repos that are the sources for <https://docs.gitlab.com>:
|
||||||
|
@ -518,7 +518,7 @@ By default all rules are enabled, so the configuration file is used to disable u
|
||||||
rules, and also to configure optional parameters for enabled rules as needed. You can
|
rules, and also to configure optional parameters for enabled rules as needed. You can
|
||||||
also check [the issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/64352) that
|
also check [the issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/64352) that
|
||||||
tracked the changes required to implement these rules, and details which rules were
|
tracked the changes required to implement these rules, and details which rules were
|
||||||
on or off when `markdownlint` was enabled on the docs.
|
on or off when markdownlint was enabled on the docs.
|
||||||
|
|
||||||
## Danger Bot
|
## Danger Bot
|
||||||
|
|
||||||
|
|
|
@ -111,11 +111,38 @@ Hard-coded HTML is valid, although it's discouraged to be used while we have `/h
|
||||||
|
|
||||||
GitLab ensures that the Markdown used across all documentation is consistent, as
|
GitLab ensures that the Markdown used across all documentation is consistent, as
|
||||||
well as easy to review and maintain, by [testing documentation changes](index.md#testing) with
|
well as easy to review and maintain, by [testing documentation changes](index.md#testing) with
|
||||||
[`markdownlint`](index.md#markdownlint). This lint test fails when any document has an issue
|
[markdownlint](index.md#markdownlint). This lint test fails when any document has an issue
|
||||||
with Markdown formatting that may cause the page to render incorrectly within GitLab.
|
with Markdown formatting that may cause the page to render incorrectly within GitLab.
|
||||||
It will also fail when a document is using non-standard Markdown (which may render
|
It will also fail when a document is using non-standard Markdown (which may render
|
||||||
correctly, but is not the current standard for GitLab documentation).
|
correctly, but is not the current standard for GitLab documentation).
|
||||||
|
|
||||||
|
#### Markdown rule `MD044/proper-names` (capitalization)
|
||||||
|
|
||||||
|
A rule that could cause confusion is `MD044/proper-names`, as it might not be immediately
|
||||||
|
clear what caused markdownlint to fail, or how to correct the failure. This rule
|
||||||
|
checks a list of known words, listed in the `.markdownlint.json` file in each project,
|
||||||
|
to verify that proper capitalization and backticks are used. Words in backticks will
|
||||||
|
be ignored by markdownlint.
|
||||||
|
|
||||||
|
In general, product names should follow the exact capitalization of the official names
|
||||||
|
of the products, protocols, etc.
|
||||||
|
|
||||||
|
Some examples that will fail if incorrect capitalization is used:
|
||||||
|
|
||||||
|
- MinIO (needs capital `IO`)
|
||||||
|
- NGINX (needs all capitals)
|
||||||
|
- runit (needs lowercase `r`)
|
||||||
|
|
||||||
|
Additionally, commands, parameters, values, filenames, etc. must be included in backticks.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
- "Change the `needs` keyword in your `.gitlab.yml`..."
|
||||||
|
- `needs` is a parameter, and `.gitlab.yml` is a file, so both need backticks. Additionally,
|
||||||
|
`.gitlab.yml` will fail markdownlint without backticks as it does not have capital G or L.
|
||||||
|
- "Run `git clone` to clone a Git repository..."
|
||||||
|
- `git clone` is a command, so it must be lowercase, while Git is the product, so
|
||||||
|
it must have a capital G.
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
### Organize by topic, not by type
|
### Organize by topic, not by type
|
||||||
|
|
|
@ -24,7 +24,7 @@ The author then adds a comment to this piece of code and adds a link to the issu
|
||||||
|
|
||||||
## How to create an A/B test
|
## How to create an A/B test
|
||||||
|
|
||||||
- [ ] Add the experiment to the `Gitlab::Experimentation::EXPERIMENTS` hash in [`experimentation.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib%2Fgitlab%2Fexperimentation.rb):
|
- Add the experiment to the `Gitlab::Experimentation::EXPERIMENTS` hash in [`experimentation.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib%2Fgitlab%2Fexperimentation.rb):
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
EXPERIMENTS = {
|
EXPERIMENTS = {
|
||||||
|
@ -40,7 +40,7 @@ The author then adds a comment to this piece of code and adds a link to the issu
|
||||||
}.freeze
|
}.freeze
|
||||||
```
|
```
|
||||||
|
|
||||||
- [ ] Use the experiment in a controller:
|
- Use the experiment in a controller:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
class RegistrationController < Applicationcontroller
|
class RegistrationController < Applicationcontroller
|
||||||
|
@ -55,8 +55,8 @@ The author then adds a comment to this piece of code and adds a link to the issu
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
- [ ] Track necessary events. See the [event tracking guide](../event_tracking/index.md) for details.
|
- Track necessary events. See the [event tracking guide](../event_tracking/index.md) for details.
|
||||||
- [ ] After the merge request is merged, use [`chatops`](../../ci/chatops/README.md) to enable the feature flag and start the experiment. For visibility, please run the command in the `#s_growth` channel:
|
- After the merge request is merged, use [`chatops`](../../ci/chatops/README.md) to enable the feature flag and start the experiment. For visibility, please run the command in the `#s_growth` channel:
|
||||||
|
|
||||||
```
|
```
|
||||||
/chatops run feature set --project=gitlab-org/gitlab experimental_sign_up_flow true
|
/chatops run feature set --project=gitlab-org/gitlab experimental_sign_up_flow true
|
||||||
|
|
|
@ -11,7 +11,7 @@ easy to maintain, and performant for the end-user.
|
||||||
|
|
||||||
### Utility Classes
|
### Utility Classes
|
||||||
|
|
||||||
As part of the effort for [cleaning up our CSS and moving our components into GitLab-UI](https://gitlab.com/groups/gitlab-org/-/epics/950)
|
As part of the effort for [cleaning up our CSS and moving our components into gitlab-ui](https://gitlab.com/groups/gitlab-org/-/epics/950)
|
||||||
led by the [GitLab UI WG](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/20623) we prefer the use of utility classes over adding new CSS. However, complex CSS can be addressed by adding component classes.
|
led by the [GitLab UI WG](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/20623) we prefer the use of utility classes over adding new CSS. However, complex CSS can be addressed by adding component classes.
|
||||||
|
|
||||||
#### Where are utility classes defined?
|
#### Where are utility classes defined?
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## ESLint
|
## ESLint
|
||||||
|
|
||||||
We use ESLint to encapsulate and enforce frontend code standards. Our configuration may be found in the [gitlab-eslint-config](https://gitlab.com/gitlab-org/gitlab-eslint-config) project.
|
We use ESLint to encapsulate and enforce frontend code standards. Our configuration may be found in the [`gitlab-eslint-config`](https://gitlab.com/gitlab-org/gitlab-eslint-config) project.
|
||||||
|
|
||||||
### Disabling ESLint in new files
|
### Disabling ESLint in new files
|
||||||
|
|
||||||
|
|
|
@ -287,8 +287,6 @@ Example response:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Notify Post Receive [UNUSED] ?
|
|
||||||
|
|
||||||
## PostReceive
|
## PostReceive
|
||||||
|
|
||||||
Called from Gitaly after a receiving a push. This triggers the
|
Called from Gitaly after a receiving a push. This triggers the
|
||||||
|
@ -300,7 +298,7 @@ the user.
|
||||||
|:----------|:-------|:---------|:------------|
|
|:----------|:-------|:---------|:------------|
|
||||||
| `identifier` | string | yes | `user-[id]` or `key-[id]` Identifying the user performing the push |
|
| `identifier` | string | yes | `user-[id]` or `key-[id]` Identifying the user performing the push |
|
||||||
| `gl_repository` | string | yes | identifier of the repository being pushed to |
|
| `gl_repository` | string | yes | identifier of the repository being pushed to |
|
||||||
| `push_options` | [string] | no | array of push options |
|
| `push_options` | string array | no | array of push options |
|
||||||
| `changes` | string | no | refs to be updated in the push in the format `oldrev newrev refname\n`. |
|
| `changes` | string | no | refs to be updated in the push in the format `oldrev newrev refname\n`. |
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -138,7 +138,7 @@ configured or there was an error reporting the status via the API.
|
||||||
|
|
||||||
### Merge Request event does not trigger a Jenkins Pipeline
|
### Merge Request event does not trigger a Jenkins Pipeline
|
||||||
|
|
||||||
Check the **/var/log/gitlab/gitlab-rails/production.log** file for messages like:
|
Check the `/var/log/gitlab/gitlab-rails/production.log` file for messages like:
|
||||||
|
|
||||||
```plaintext
|
```plaintext
|
||||||
WebHook Error => Net::ReadTimeout
|
WebHook Error => Net::ReadTimeout
|
||||||
|
@ -157,7 +157,7 @@ which is set to 10 seconds by default.
|
||||||
To fix this the `gitlab_rails['webhook_timeout']` value will need to be increased
|
To fix this the `gitlab_rails['webhook_timeout']` value will need to be increased
|
||||||
in the `gitlab.rb` config file, followed by the [`gitlab-ctl reconfigure` command](../administration/restart_gitlab.md).
|
in the `gitlab.rb` config file, followed by the [`gitlab-ctl reconfigure` command](../administration/restart_gitlab.md).
|
||||||
|
|
||||||
If you don't find the errors above, but do find *duplicate* entries like below (in **/var/log/gitlab/gitlab-rail**), this
|
If you don't find the errors above, but do find *duplicate* entries like below (in `/var/log/gitlab/gitlab-rail`), this
|
||||||
could also indicate that [webhook requests are timing out](../user/project/integrations/webhooks.md#receiving-duplicate-or-multiple-webhook-requests-triggered-by-one-event):
|
could also indicate that [webhook requests are timing out](../user/project/integrations/webhooks.md#receiving-duplicate-or-multiple-webhook-requests-triggered-by-one-event):
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -19,7 +19,7 @@ The following assumes you already have Vault installed and running.
|
||||||
|
|
||||||
1. On GitLab, click your avatar on the top-right corner, and select your user **Settings > Applications**.
|
1. On GitLab, click your avatar on the top-right corner, and select your user **Settings > Applications**.
|
||||||
1. Fill out the application **Name** and [**Redirect URI**](https://www.vaultproject.io/docs/auth/jwt.html#redirect-uris),
|
1. Fill out the application **Name** and [**Redirect URI**](https://www.vaultproject.io/docs/auth/jwt.html#redirect-uris),
|
||||||
making sure to select the **openid** scope.
|
making sure to select the **OpenID** scope.
|
||||||
1. Save application.
|
1. Save application.
|
||||||
1. Copy client ID and secret, or keep the page open for reference.
|
1. Copy client ID and secret, or keep the page open for reference.
|
||||||
![GitLab OAuth provider](img/gitlab_oauth_vault_v12_6.png)
|
![GitLab OAuth provider](img/gitlab_oauth_vault_v12_6.png)
|
||||||
|
@ -42,7 +42,7 @@ The following assumes you already have Vault installed and running.
|
||||||
|
|
||||||
1. **Write the OIDC config:**
|
1. **Write the OIDC config:**
|
||||||
|
|
||||||
Next, Vault needs to be given the application ID and secret generated by Gitlab.
|
Next, Vault needs to be given the application ID and secret generated by GitLab.
|
||||||
|
|
||||||
In the terminal session, run the following command to give Vault access to the GitLab application you've just created with an OpenID scope. This allows Vault to authenticate through GitLab.
|
In the terminal session, run the following command to give Vault access to the GitLab application you've just created with an OpenID scope. This allows Vault to authenticate through GitLab.
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ review process a new change goes through.
|
||||||
|
|
||||||
Including new features in patch releases is not possible as that would break [Semantic Versioning](https://semver.org/).
|
Including new features in patch releases is not possible as that would break [Semantic Versioning](https://semver.org/).
|
||||||
Breaking [Semantic Versioning](https://semver.org/) has the following consequences for users that
|
Breaking [Semantic Versioning](https://semver.org/) has the following consequences for users that
|
||||||
have to adhere to various internal requirements (e.g. org. compliance, verifying new features and similar):
|
have to adhere to various internal requirements (for example, org. compliance, verifying new features, and similar):
|
||||||
|
|
||||||
1. Inability to quickly upgrade to leverage bug fixes included in patch versions.
|
1. Inability to quickly upgrade to leverage bug fixes included in patch versions.
|
||||||
1. Inability to quickly upgrade to leverage security fixes included in patch versions.
|
1. Inability to quickly upgrade to leverage security fixes included in patch versions.
|
||||||
|
@ -58,9 +58,12 @@ have to adhere to various internal requirements (e.g. org. compliance, verifying
|
||||||
|
|
||||||
In cases where a strategic user has a requirement to test a feature before it is
|
In cases where a strategic user has a requirement to test a feature before it is
|
||||||
officially released, we can offer to create a Release Candidate (RC) version that will
|
officially released, we can offer to create a Release Candidate (RC) version that will
|
||||||
include the specific feature. This should be needed only in extreme cases, and can be requested for consideration by raising an issue in [release/tasks] issue tracker.
|
include the specific feature. This should be needed only in extreme cases, and can be requested for
|
||||||
It is important to note that the Release Candidate will also contain other
|
consideration by raising an issue in the [release/tasks](https://gitlab.com/gitlab-org/release/tasks/issues/new?issuable_template=Backporting-request) issue tracker.
|
||||||
features and changes as it is not possible to easily isolate a specific feature (similar reasons as noted above). The Release Candidate will be no different than any code that is deployed to GitLab.com or is publicly accessible.
|
It is important to note that the Release Candidate will also contain other features and changes as
|
||||||
|
it is not possible to easily isolate a specific feature (similar reasons as noted above). The
|
||||||
|
Release Candidate will be no different than any code that is deployed to GitLab.com or is publicly
|
||||||
|
accessible.
|
||||||
|
|
||||||
### Backporting to older releases
|
### Backporting to older releases
|
||||||
|
|
||||||
|
@ -68,11 +71,16 @@ Backporting to more than one stable release is reserved for [security releases](
|
||||||
In some cases however, we may need to backport *a bug fix* to more than one stable
|
In some cases however, we may need to backport *a bug fix* to more than one stable
|
||||||
release, depending on the severity of the bug.
|
release, depending on the severity of the bug.
|
||||||
|
|
||||||
Decision on whether backporting a change will be performed is done at the discretion of the [current release managers][release-managers], similar to what is described in the [managing bugs] process, based on *all* of the following:
|
The decision on whether backporting a change will be performed is done at the discretion of the
|
||||||
|
[current release managers](https://about.gitlab.com/community/release-managers/), similar to what is
|
||||||
|
described in the [managing bugs](https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md#managing-bugs) process,
|
||||||
|
based on *all* of the following:
|
||||||
|
|
||||||
1. Estimated [severity][severity-labels] of the bug: Highest possible impact to users based on the current definition of severity.
|
1. Estimated [severity](../development/contributing/issue_workflow.md#severity-labels) of the bug:
|
||||||
|
Highest possible impact to users based on the current definition of severity.
|
||||||
|
|
||||||
1. Estimated [priority][priority-definition] of the bug: Immediate impact on all impacted users based on the above estimated severity.
|
1. Estimated [priority](../development/contributing/issue_workflow.md#priority-labels) of the bug:
|
||||||
|
Immediate impact on all impacted users based on the above estimated severity.
|
||||||
|
|
||||||
1. Potentially incurring data loss and/or security breach.
|
1. Potentially incurring data loss and/or security breach.
|
||||||
|
|
||||||
|
@ -83,7 +91,8 @@ the current stable stable release, and two previous monthly releases.
|
||||||
For instance, if we release `11.2.1` with a fix for a severe bug introduced in
|
For instance, if we release `11.2.1` with a fix for a severe bug introduced in
|
||||||
`11.0.0`, we could backport the fix to a new `11.0.x`, and `11.1.x` patch release.
|
`11.0.0`, we could backport the fix to a new `11.0.x`, and `11.1.x` patch release.
|
||||||
|
|
||||||
To request backporting to more than one stable release for consideration, raise an issue in [release/tasks] issue tracker.
|
To request backporting to more than one stable release for consideration, raise an issue in the
|
||||||
|
[release/tasks](https://gitlab.com/gitlab-org/release/tasks/issues/new?issuable_template=Backporting-request) issue tracker.
|
||||||
|
|
||||||
### Security releases
|
### Security releases
|
||||||
|
|
||||||
|
@ -146,9 +155,3 @@ Please see the table below for some examples:
|
||||||
More information about the release procedures can be found in our
|
More information about the release procedures can be found in our
|
||||||
[release documentation](https://gitlab.com/gitlab-org/release/docs). You may also want to read our
|
[release documentation](https://gitlab.com/gitlab-org/release/docs). You may also want to read our
|
||||||
[Responsible Disclosure Policy](https://about.gitlab.com/security/disclosure/).
|
[Responsible Disclosure Policy](https://about.gitlab.com/security/disclosure/).
|
||||||
|
|
||||||
[release-managers]: https://about.gitlab.com/community/release-managers/
|
|
||||||
[priority-definition]: ../development/contributing/issue_workflow.md#priority-labels
|
|
||||||
[severity-labels]: ../development/contributing/issue_workflow.html#severity-labels
|
|
||||||
[managing bugs]: https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md#managing-bugs
|
|
||||||
[release/tasks]: https://gitlab.com/gitlab-org/release/tasks/issues/new?issuable_template=Backporting-request
|
|
||||||
|
|
|
@ -481,7 +481,7 @@ applications you have configured.
|
||||||
|
|
||||||
### Install Ingress using GitLab CI
|
### Install Ingress using GitLab CI
|
||||||
|
|
||||||
To install ingress, define the `.gitlab/managed-apps/config.yaml` file
|
To install Ingress, define the `.gitlab/managed-apps/config.yaml` file
|
||||||
with:
|
with:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
@ -408,8 +408,8 @@ Note that this sample has a few limitations:
|
||||||
- It does not regard different types of authentication mechanisms for the mirror.
|
- It does not regard different types of authentication mechanisms for the mirror.
|
||||||
- It does not work with forced updates (rewriting history).
|
- It does not work with forced updates (rewriting history).
|
||||||
- Only branches that match the `whitelisted` patterns will be proxy pushed.
|
- Only branches that match the `whitelisted` patterns will be proxy pushed.
|
||||||
- The script circumvents the git hook quarantine environment because the update of `$TARGET_REPO`
|
- The script circumvents the Git hook quarantine environment because the update of `$TARGET_REPO`
|
||||||
is seen as a ref update and git will complain about it.
|
is seen as a ref update and Git will complain about it.
|
||||||
|
|
||||||
### Mirroring with Perforce Helix via Git Fusion **(STARTER)**
|
### Mirroring with Perforce Helix via Git Fusion **(STARTER)**
|
||||||
|
|
||||||
|
|
|
@ -80,15 +80,10 @@ module Gitlab
|
||||||
# when the new_record? method incorrectly returns false.
|
# when the new_record? method incorrectly returns false.
|
||||||
#
|
#
|
||||||
# See https://gitlab.com/gitlab-org/gitlab/issues/9903#note_145329964
|
# See https://gitlab.com/gitlab-org/gitlab/issues/9903#note_145329964
|
||||||
klass
|
klass.allocate.init_with(encode_for(klass, raw))
|
||||||
.allocate
|
|
||||||
.init_with(
|
|
||||||
"attributes" => attributes_for(klass, raw),
|
|
||||||
"new_record" => new_record?(raw, klass)
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def attributes_for(klass, raw)
|
def encode_for(klass, raw)
|
||||||
# We have models that leave out some fields from the JSON export for
|
# We have models that leave out some fields from the JSON export for
|
||||||
# security reasons, e.g. models that include the CacheMarkdownField.
|
# security reasons, e.g. models that include the CacheMarkdownField.
|
||||||
# The ActiveRecord::AttributeSet we build from raw does know about
|
# The ActiveRecord::AttributeSet we build from raw does know about
|
||||||
|
@ -96,7 +91,10 @@ module Gitlab
|
||||||
missing_attributes = (klass.columns.map(&:name) - raw.keys)
|
missing_attributes = (klass.columns.map(&:name) - raw.keys)
|
||||||
missing_attributes.each { |column| raw[column] = nil }
|
missing_attributes.each { |column| raw[column] = nil }
|
||||||
|
|
||||||
klass.attributes_builder.build_from_database(raw, {})
|
coder = {}
|
||||||
|
klass.new(raw).encode_with(coder)
|
||||||
|
coder["new_record"] = new_record?(raw, klass)
|
||||||
|
coder
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_record?(raw, klass)
|
def new_record?(raw, klass)
|
||||||
|
|
|
@ -378,6 +378,12 @@ describe Gitlab::JsonCache do
|
||||||
expect(result).to eq(broadcast_message)
|
expect(result).to eq(broadcast_message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'decodes enums correctly' do
|
||||||
|
result = cache.fetch(key, as: BroadcastMessage) { 'block result' }
|
||||||
|
|
||||||
|
expect(result.broadcast_type).to eq(broadcast_message.broadcast_type)
|
||||||
|
end
|
||||||
|
|
||||||
context 'when the cached value is an instance of ActiveRecord::Base' do
|
context 'when the cached value is an instance of ActiveRecord::Base' do
|
||||||
it 'returns a persisted record when id is set' do
|
it 'returns a persisted record when id is set' do
|
||||||
backend.write(expanded_key, broadcast_message.to_json)
|
backend.write(expanded_key, broadcast_message.to_json)
|
||||||
|
|
Loading…
Reference in a new issue