From cdd5a4880cc462f7a9166374750f33ed59ad9cc4 Mon Sep 17 00:00:00 2001 From: Evan Read Date: Wed, 30 Jan 2019 10:20:50 +0000 Subject: [PATCH] Documentation now matches UI copy --- doc/ci/caching/index.md | 12 ++-- doc/ci/docker/using_kaniko.md | 2 +- doc/ci/environments.md | 2 +- .../examples/artifactory_and_gitlab/index.md | 2 +- doc/ci/examples/container_scanning.md | 4 +- .../index.md | 2 +- ...and-deploy-python-application-to-heroku.md | 2 +- ...t-and-deploy-ruby-application-to-heroku.md | 2 +- doc/ci/triggers/README.md | 2 +- doc/ci/variables/README.md | 63 ++++++++++-------- doc/ci/variables/img/variables.png | Bin 34838 -> 0 bytes doc/ci/yaml/README.md | 8 +-- doc/topics/autodevops/index.md | 4 +- doc/topics/autodevops/quick_start_guide.md | 4 +- doc/user/project/integrations/prometheus.md | 2 +- .../integrations/prometheus_library/index.md | 2 +- .../prometheus_library/kubernetes.md | 2 +- .../project/new_ci_build_permissions_model.md | 2 +- 18 files changed, 61 insertions(+), 56 deletions(-) delete mode 100644 doc/ci/variables/img/variables.png diff --git a/doc/ci/caching/index.md b/doc/ci/caching/index.md index 495ec099111..8b2ce425cf5 100644 --- a/doc/ci/caching/index.md +++ b/doc/ci/caching/index.md @@ -29,7 +29,7 @@ needed to compile the project: Cache was designed to be used to speed up invocations of subsequent runs of a given job, by keeping things like dependencies (e.g., npm packages, Go vendor packages, etc.) so they don't have to be re-fetched from the public internet. - While the cache can be abused to pass intermediate build results between + While the cache can be abused to pass intermediate build results between stages, there may be cases where artifacts are a better fit. - `artifacts`: **Use for stage results that will be passed between stages.** Artifacts were designed to upload some compiled/generated bits of the build, @@ -40,10 +40,10 @@ needed to compile the project: comply to this rule trigger an unintuitive and illogical error message (an enhancement is discussed at [https://gitlab.com/gitlab-org/gitlab-ce/issues/15530](https://gitlab.com/gitlab-org/gitlab-ce/issues/15530) - ). Artifacts need to be uploaded to the GitLab instance (not only the GitLab - runner) before the next stage job(s) can start, so you need to evaluate - carefully whether your bandwidth allows you to profit from parallelization - with stages and shared artifacts before investing time in changes to the + ). Artifacts need to be uploaded to the GitLab instance (not only the GitLab + runner) before the next stage job(s) can start, so you need to evaluate + carefully whether your bandwidth allows you to profit from parallelization + with stages and shared artifacts before investing time in changes to the setup. @@ -90,7 +90,7 @@ cache, when declaring `cache` in your jobs, use one or a mix of the following: that will be only available to a particular project. - [Use a `key`](../yaml/README.md#cache-key) that fits your workflow (e.g., different caches on each branch). For that, you can take advantage of the - [CI/CD predefined variables](../variables/README.md#predefined-variables-environment-variables). + [CI/CD predefined variables](../variables/README.md#predefined-environment-variables). TIP: **Tip:** Using the same Runner for your pipeline, is the most simple and efficient way to diff --git a/doc/ci/docker/using_kaniko.md b/doc/ci/docker/using_kaniko.md index aa6b387bc58..f354cdb398e 100644 --- a/doc/ci/docker/using_kaniko.md +++ b/doc/ci/docker/using_kaniko.md @@ -40,7 +40,7 @@ In the following example, kaniko is used to build a Docker image and then push it to [GitLab Container Registry](../../user/project/container_registry.md). The job will run only when a tag is pushed. A `config.json` file is created under `/kaniko/.docker` with the needed GitLab Container Registry credentials taken from the -[environment variables](../variables/README.md#predefined-variables-environment-variables) +[environment variables](../variables/README.md#predefined-environment-variables) GitLab CI/CD provides. In the last step, kaniko uses the `Dockerfile` under the root directory of the project, builds the Docker image and pushes it to the project's Container Registry while tagging it with the Git tag: diff --git a/doc/ci/environments.md b/doc/ci/environments.md index b9b5ceab7fb..6a9917f6430 100644 --- a/doc/ci/environments.md +++ b/doc/ci/environments.md @@ -249,7 +249,7 @@ the basis of [Review apps](review_apps/index.md). NOTE: **Note:** The `name` and `url` parameters can use most of the CI/CD variables, -including [predefined](variables/README.md#predefined-variables-environment-variables), +including [predefined](variables/README.md#predefined-environment-variables), [project/group ones](variables/README.md#variables) and [`.gitlab-ci.yml` variables](yaml/README.md#variables). You however cannot use variables defined under `script` or on the Runner's side. There are also other variables that diff --git a/doc/ci/examples/artifactory_and_gitlab/index.md b/doc/ci/examples/artifactory_and_gitlab/index.md index 04b48938e1a..9e657275d50 100644 --- a/doc/ci/examples/artifactory_and_gitlab/index.md +++ b/doc/ci/examples/artifactory_and_gitlab/index.md @@ -107,7 +107,7 @@ Now it's time we set up [GitLab CI/CD](https://about.gitlab.com/features/gitlab- GitLab CI/CD uses a file in the root of the repo, named `.gitlab-ci.yml`, to read the definitions for jobs that will be executed by the configured GitLab Runners. You can read more about this file in the [GitLab Documentation](https://docs.gitlab.com/ee/ci/yaml/). -First of all, remember to set up variables for your deployment. Navigate to your project's **Settings > CI/CD > Variables** page +First of all, remember to set up variables for your deployment. Navigate to your project's **Settings > CI/CD > Environment variables** page and add the following ones (replace them with your current values, of course): - **MAVEN_REPO_URL**: `http://artifactory.example.com:8081/artifactory` (your Artifactory URL) diff --git a/doc/ci/examples/container_scanning.md b/doc/ci/examples/container_scanning.md index 68330261910..31c3df81fef 100644 --- a/doc/ci/examples/container_scanning.md +++ b/doc/ci/examples/container_scanning.md @@ -22,7 +22,7 @@ container_scanning: variables: DOCKER_DRIVER: overlay2 ## Define two new variables based on GitLab's CI/CD predefined variables - ## https://docs.gitlab.com/ee/ci/variables/#predefined-variables-environment-variables + ## https://docs.gitlab.com/ee/ci/variables/#predefined-environment-variables CI_APPLICATION_REPOSITORY: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG CI_APPLICATION_TAG: $CI_COMMIT_SHA allow_failure: true @@ -87,7 +87,7 @@ container_scanning: variables: DOCKER_DRIVER: overlay2 ## Define two new variables based on GitLab's CI/CD predefined variables - ## https://docs.gitlab.com/ee/ci/variables/#predefined-variables-environment-variables + ## https://docs.gitlab.com/ee/ci/variables/#predefined-environment-variables CI_APPLICATION_REPOSITORY: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG CI_APPLICATION_TAG: $CI_COMMIT_SHA allow_failure: true diff --git a/doc/ci/examples/deploy_spring_boot_to_cloud_foundry/index.md b/doc/ci/examples/deploy_spring_boot_to_cloud_foundry/index.md index 8873a1596f7..6499413baf0 100644 --- a/doc/ci/examples/deploy_spring_boot_to_cloud_foundry/index.md +++ b/doc/ci/examples/deploy_spring_boot_to_cloud_foundry/index.md @@ -104,7 +104,7 @@ to ensure our deployments only happen when we push to the master branch. Now, since the steps defined in `.gitlab-ci.yml` require credentials to login to CF, you'll need to add your CF credentials as [environment -variables](../../variables/README.md#predefined-variables-environment-variables) +variables](../../variables/README.md#predefined-environment-variables) on GitLab CI/CD. To set the environment variables, navigate to your project's **Settings > CI/CD** and expand **Variables**. Name the variables `CF_USERNAME` and `CF_PASSWORD` and set them to the correct values. diff --git a/doc/ci/examples/test-and-deploy-python-application-to-heroku.md b/doc/ci/examples/test-and-deploy-python-application-to-heroku.md index b59271e400f..61bf68fa0e8 100644 --- a/doc/ci/examples/test-and-deploy-python-application-to-heroku.md +++ b/doc/ci/examples/test-and-deploy-python-application-to-heroku.md @@ -47,7 +47,7 @@ This project has three jobs: ## Store API keys -You'll need to create two variables in **Settings > CI/CD > Variables** in your GitLab project: +You'll need to create two variables in **Settings > CI/CD > Environment variables** in your GitLab project: - `HEROKU_STAGING_API_KEY` - Heroku API key used to deploy staging app. - `HEROKU_PRODUCTION_API_KEY` - Heroku API key used to deploy production app. diff --git a/doc/ci/examples/test-and-deploy-ruby-application-to-heroku.md b/doc/ci/examples/test-and-deploy-ruby-application-to-heroku.md index 33a353f17f5..46e6efccaf8 100644 --- a/doc/ci/examples/test-and-deploy-ruby-application-to-heroku.md +++ b/doc/ci/examples/test-and-deploy-ruby-application-to-heroku.md @@ -43,7 +43,7 @@ This project has three jobs: ## Store API keys -You'll need to create two variables in your project's **Settings > CI/CD > Variables**: +You'll need to create two variables in your project's **Settings > CI/CD > Environment variables**: - `HEROKU_STAGING_API_KEY` - Heroku API key used to deploy staging app. - `HEROKU_PRODUCTION_API_KEY` - Heroku API key used to deploy production app. diff --git a/doc/ci/triggers/README.md b/doc/ci/triggers/README.md index c9a60feb73f..61037360326 100644 --- a/doc/ci/triggers/README.md +++ b/doc/ci/triggers/README.md @@ -224,5 +224,5 @@ removed with one of the future versions of GitLab. You are advised to [ee-2017]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2017 [ee]: https://about.gitlab.com/pricing/ [variables]: ../variables/README.md -[predef]: ../variables/README.md#predefined-variables-environment-variables +[predef]: ../variables/README.md#predefined-environment-variables [registry]: ../../user/project/container_registry.md diff --git a/doc/ci/variables/README.md b/doc/ci/variables/README.md index ac46e0eedc6..45667caf65d 100644 --- a/doc/ci/variables/README.md +++ b/doc/ci/variables/README.md @@ -4,27 +4,33 @@ table_display_block: true # GitLab CI/CD Variables -When receiving a job from GitLab CI, the [Runner] prepares the build environment. -It starts by setting a list of **predefined variables** (environment variables) -and a list of **user-defined variables**. +When receiving a job from GitLab CI, the [Runner](https://docs.gitlab.com/runner/) prepares the build environment. +It starts by setting a list of: + +- [Predefined environment variables](#predefined-environment-variables). +- Other variables. ## Priority of variables -The variables can be overwritten and they take precedence over each other in -this order: +Variables of different types can take precedence over other variables, depending on where they are defined. -1. [Trigger variables][triggers] or [scheduled pipeline variables](../../user/project/pipelines/schedules.md#making-use-of-scheduled-pipeline-variables) (take precedence over all) -1. Project-level [variables](#variables) or [protected variables](#protected-variables) -1. Group-level [variables](#variables) or [protected variables](#protected-variables) -1. YAML-defined [job-level variables](../yaml/README.md#variables) -1. YAML-defined [global variables](../yaml/README.md#variables) -1. [Deployment variables](#deployment-variables) -1. [Predefined variables](#predefined-variables-environment-variables) (are the - lowest in the chain) +The order of precedence for variables is (from highest to lowest): -For example, if you define `API_TOKEN=secure` as a project variable and -`API_TOKEN=yaml` in your `.gitlab-ci.yml`, the `API_TOKEN` will take the value -`secure` as the project variables are higher in the chain. +1. [Trigger variables](../triggers/README.md#pass-job-variables-to-a-trigger) or [scheduled pipeline variables](../../user/project/pipelines/schedules.md#making-use-of-scheduled-pipeline-variables). +1. Project-level [variables](#variables) or [protected variables](#protected-variables). +1. Group-level [variables](#variables) or [protected variables](#protected-variables). +1. YAML-defined [job-level variables](../yaml/README.md#variables). +1. YAML-defined [global variables](../yaml/README.md#variables). +1. [Deployment variables](#deployment-variables). +1. [Predefined environment variables](#predefined-environment-variables). + +For example, you define: + +- `API_TOKEN=secure` as a project variable. +- `API_TOKEN=yaml` in your `.gitlab-ci.yml`. + +`API_TOKEN` will take the value `secure` as the project variables take precedence over those defined +in `.gitlab-ci.yml`. ## Unsupported variables @@ -32,10 +38,10 @@ There are cases where some variables cannot be used in the context of a `.gitlab-ci.yml` definition (for example under `script`). Read more about which variables are [not supported](where_variables_can_be_used.md). -## Predefined variables (Environment variables) +## Predefined environment variables Some of the predefined environment variables are available only if a minimum -version of [GitLab Runner][runner] is used. Consult the table below to find the +version of [GitLab Runner](https://docs.gitlab.com/runner/) is used. Consult the table below to find the version of Runner required. NOTE: **Note:** @@ -160,7 +166,7 @@ This feature requires GitLab Runner 0.5.0 or higher and GitLab 7.14 or higher. GitLab CI allows you to add to `.gitlab-ci.yml` variables that are set in the build environment. The variables are hence saved in the repository, and they -are meant to store non-sensitive project configuration, e.g., `RAILS_ENV` or +are meant to store non-sensitive project configuration. For example, `RAILS_ENV` or `DATABASE_URL`. For example, if you set the variable below globally (not inside a job), it will @@ -208,16 +214,18 @@ GitLab CI allows you to define per-project or per-group variables that are set in the pipeline environment. The variables are stored out of the repository (not in `.gitlab-ci.yml`) and are securely passed to GitLab Runner making them available during a pipeline run. It's the recommended method to -use for storing things like passwords, SSH keys and credentials. +use for storing things like passwords, SSH keys, and credentials. -Project-level variables can be added by going to your project's -**Settings > CI/CD**, then finding the section called **Variables**. +Project-level variables can be added by: -Likewise, group-level variables can be added by going to your group's -**Settings > CI/CD**, then finding the section called **Variables**. -Any variables of [subgroups] will be inherited recursively. +1. Navigating to your project's **Settings > CI/CD** page. +1. Inputing variable keys and values in the **Environment variables** section. -![Variables](img/variables.png) +Group-level variables can be added by: + +1. Navigating to your group's **Settings > CI/CD** page. +1. Inputing variable keys and values in the **Environment variables** section. Any variables of + [subgroups](../../user/group/subgroups/index.md) will be inherited recursively. Once you set them, they will be available for all subsequent pipelines. You can also [protect your variables](#protected-variables). @@ -621,11 +629,8 @@ Below you can find supported syntax reference: [envs]: ../environments.md [protected branches]: ../../user/project/protected_branches.md [protected tags]: ../../user/project/protected_tags.md -[runner]: https://docs.gitlab.com/runner/ [shellexecutors]: https://docs.gitlab.com/runner/executors/ [triggered]: ../triggers/README.md -[triggers]: ../triggers/README.md#pass-job-variables-to-a-trigger -[subgroups]: ../../user/group/subgroups/index.md [builds-policies]: ../yaml/README.md#only-and-except-complex [gitlab-deploy-token]: ../../user/project/deploy_tokens/index.md#gitlab-deploy-token [registry]: ../../user/project/container_registry.md diff --git a/doc/ci/variables/img/variables.png b/doc/ci/variables/img/variables.png deleted file mode 100644 index 0795f7c888f856b63f3451fbdfbb696303b6644a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34838 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%0DPZGY65q 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 diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index fb69d888b94..4c39b14b1d0 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -1520,7 +1520,7 @@ parallel. This value has to be greater than or equal to two (2) and less than or This creates N instances of the same job that run in parallel. They're named sequentially from `job_name 1/N` to `job_name N/N`. -For every job, `CI_NODE_INDEX` and `CI_NODE_TOTAL` [environment variables](../variables/README.html#predefined-variables-environment-variables) are set. +For every job, `CI_NODE_INDEX` and `CI_NODE_TOTAL` [environment variables](../variables/README.html#predefined-environment-variables) are set. A simple example: @@ -1977,7 +1977,7 @@ The YAML-defined variables are also set to all created service containers, thus allowing to fine tune them. Except for the user defined variables, there are also the ones [set up by the -Runner itself](../variables/README.md#predefined-variables-environment-variables). +Runner itself](../variables/README.md#predefined-environment-variables). One example would be `CI_COMMIT_REF_NAME` which has the value of the branch or tag name for which project is built. Apart from the variables you can set in `.gitlab-ci.yml`, there are also the so called @@ -2027,8 +2027,8 @@ variables: ``` NOTE: **Note:** `GIT_STRATEGY` is not supported for -[Kubernetes executor](https://docs.gitlab.com/runner/executors/kubernetes.html), -but may be in the future. See the [support Git strategy with Kubernetes executor feature proposal](https://gitlab.com/gitlab-org/gitlab-runner/issues/3847) +[Kubernetes executor](https://docs.gitlab.com/runner/executors/kubernetes.html), +but may be in the future. See the [support Git strategy with Kubernetes executor feature proposal](https://gitlab.com/gitlab-org/gitlab-runner/issues/3847) for updates. ### Git submodule strategy diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index ff798a51eb7..325de50cab0 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -193,7 +193,7 @@ To add a different cluster for each environment: and Ingress. 1. Make sure you have [configured your DNS](#auto-devops-base-domain) with the specified Auto DevOps domains. -1. Navigate to your project's **Settings > CI/CD > Variables** and add +1. Navigate to your project's **Settings > CI/CD > Environment variables** and add the `AUTO_DEVOPS_DOMAIN` variables with their respective environment scope. @@ -693,7 +693,7 @@ also be customized, and you can easily use a [custom buildpack](#custom-buildpac | `POSTGRES_ENABLED` | Whether PostgreSQL is enabled; defaults to `"true"`. Set to `false` to disable the automatic deployment of PostgreSQL. | | `POSTGRES_USER` | The PostgreSQL user; defaults to `user`. Set it to use a custom username. | | `POSTGRES_PASSWORD` | The PostgreSQL password; defaults to `testing-password`. Set it to use a custom password. | -| `POSTGRES_DB` | The PostgreSQL database name; defaults to the value of [`$CI_ENVIRONMENT_SLUG`](../../ci/variables/README.md#predefined-variables-environment-variables). Set it to use a custom database name. | +| `POSTGRES_DB` | The PostgreSQL database name; defaults to the value of [`$CI_ENVIRONMENT_SLUG`](../../ci/variables/README.md#predefined-environment-variables). Set it to use a custom database name. | | `BUILDPACK_URL` | The buildpack's full URL. It can point to either Git repositories or a tarball URL. For Git repositories, it is possible to point to a specific `ref`, for example `https://github.com/heroku/heroku-buildpack-ruby.git#v142` | | `SAST_CONFIDENCE_LEVEL` | The minimum confidence level of security issues you want to be reported; `1` for Low, `2` for Medium, `3` for High; defaults to `3`.| | `DEP_SCAN_DISABLE_REMOTE_CHECKS` | Whether remote Dependency Scanning checks are disabled; defaults to `"false"`. Set to `"true"` to disable checks that send data to GitLab central servers. [Read more about remote checks](https://gitlab.com/gitlab-org/security-products/dependency-scanning#remote-checks).| diff --git a/doc/topics/autodevops/quick_start_guide.md b/doc/topics/autodevops/quick_start_guide.md index 6326aadcdf2..9749bd63f2b 100644 --- a/doc/topics/autodevops/quick_start_guide.md +++ b/doc/topics/autodevops/quick_start_guide.md @@ -83,7 +83,7 @@ under which this application will be deployed. ![GitLab GKE cluster details](img/guide_gitlab_gke_details.png) 1. Once ready, click **Create Kubernetes cluster**. - + NOTE: **Note:** Do not select `f1-micro` from the **Machine type** dropdown. `f1-micro` machines cannot support a full GitLab installation. @@ -216,7 +216,7 @@ deployment and clicking a square will take you to the pod's logs page. TIP: **Tip:** There is only one pod hosting the application at the moment, but you can add more pods by defining the [`REPLICAS` variable](index.md#environment-variables) -under **Settings > CI/CD > Variables**. +under **Settings > CI/CD > Environment variables**. ### Working with branches diff --git a/doc/user/project/integrations/prometheus.md b/doc/user/project/integrations/prometheus.md index 09ca10ef972..a4698fd172a 100644 --- a/doc/user/project/integrations/prometheus.md +++ b/doc/user/project/integrations/prometheus.md @@ -132,7 +132,7 @@ If the "No data found" screen continues to appear, it could be due to: [prometheus-docker-image]: https://hub.docker.com/r/prom/prometheus/ [prometheus-yml]:samples/prometheus.yml [gitlab.com-ip-range]: https://gitlab.com/gitlab-com/infrastructure/issues/434 -[ci-environment-slug]: ../../../ci/variables/#predefined-variables-environment-variables +[ci-environment-slug]: ../../../ci/variables/#predefined-environment-variables [ce-8935]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8935 [ce-10408]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/10408 [promgldocs]: ../../../administration/monitoring/prometheus/index.md diff --git a/doc/user/project/integrations/prometheus_library/index.md b/doc/user/project/integrations/prometheus_library/index.md index a79bc2bce06..f47884996d8 100644 --- a/doc/user/project/integrations/prometheus_library/index.md +++ b/doc/user/project/integrations/prometheus_library/index.md @@ -29,6 +29,6 @@ In order to isolate and only display relevant metrics for a given environment, GitLab needs a method to detect which labels are associated. To do that, GitLab uses the defined queries and fills in the environment specific variables. Typically this involves looking for the -[`$CI_ENVIRONMENT_SLUG`](../../../../ci/variables/README.md#predefined-variables-environment-variables), +[`$CI_ENVIRONMENT_SLUG`](../../../../ci/variables/README.md#predefined-environment-variables), but may also include other information such as the project's Kubernetes namespace. Each search query is defined in the [exporter specific documentation](#exporters). diff --git a/doc/user/project/integrations/prometheus_library/kubernetes.md b/doc/user/project/integrations/prometheus_library/kubernetes.md index 6b190deaa6c..7a45c87ada0 100644 --- a/doc/user/project/integrations/prometheus_library/kubernetes.md +++ b/doc/user/project/integrations/prometheus_library/kubernetes.md @@ -34,4 +34,4 @@ Prometheus needs to be deployed into the cluster and configured properly in orde In order to isolate and only display relevant CPU and Memory metrics for a given environment, GitLab needs a method to detect which containers it is running. Because these metrics are tracked at the container level, traditional Kubernetes labels are not available. -Instead, the [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) or [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) name should begin with [CI_ENVIRONMENT_SLUG](../../../../ci/variables/README.md#predefined-variables-environment-variables). It can be followed by a `-` and additional content if desired. For example, a deployment name of `review-homepage-5620p5` would match the `review/homepage` environment. +Instead, the [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) or [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) name should begin with [CI_ENVIRONMENT_SLUG](../../../../ci/variables/README.md#predefined-environment-variables). It can be followed by a `-` and additional content if desired. For example, a deployment name of `review-homepage-5620p5` would match the `review/homepage` environment. diff --git a/doc/user/project/new_ci_build_permissions_model.md b/doc/user/project/new_ci_build_permissions_model.md index 9a53036b4d1..d7a1a69f29d 100644 --- a/doc/user/project/new_ci_build_permissions_model.md +++ b/doc/user/project/new_ci_build_permissions_model.md @@ -238,6 +238,6 @@ test: [triggers]: ../../ci/triggers/README.md [update-docs]: https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update [workhorse]: https://gitlab.com/gitlab-org/gitlab-workhorse -[jobenv]: ../../ci/variables/README.md#predefined-variables-environment-variables +[jobenv]: ../../ci/variables/README.md#predefined-environment-variables [2fa]: ../profile/account/two_factor_authentication.md [pat]: ../profile/personal_access_tokens.md