summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-04-05 11:30:02 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-04-05 11:30:02 +0200
commit323bac4a6e1de5d9ba9c1cb3a2868f514888c44a (patch)
treed0681f7f8563bfca53acbfb39edc4b0002f0e37d
parent4ef3e835cfee2ea63c29398d86d642571821fe32 (diff)
downloadgitlab-ce-323bac4a6e1de5d9ba9c1cb3a2868f514888c44a.tar.gz
Improve docs about pipeline variables expressions
-rw-r--r--doc/ci/variables/README.md55
-rw-r--r--doc/ci/yaml/README.md3
2 files changed, 46 insertions, 12 deletions
diff --git a/doc/ci/variables/README.md b/doc/ci/variables/README.md
index 9f268f47e6f..381405a9db9 100644
--- a/doc/ci/variables/README.md
+++ b/doc/ci/variables/README.md
@@ -454,8 +454,8 @@ export CI_REGISTRY_PASSWORD="longalfanumstring"
> Variables expressions were added in GitLab 10.7.
It is possible to use variables expressions with only / except policies in
-`.gitlab-ci.yml`. By using this approach you can limit what builds are going to
-be created within a pipeline after pushing code to GitLab.
+`.gitlab-ci.yml`. By using this approach you can limit what jobs are going to
+be created within a pipeline after pushing a code to GitLab.
This is particularly useful in combination with secret variables and triggered
pipeline variables.
@@ -470,22 +470,21 @@ deploy:
- $STAGING
```
-Each provided variables expression is going to be evaluated before creating
-a pipeline.
+Each expression provided is going to be evaluated before creating a pipeline.
If any of the conditions in `variables` evaluates to truth when using `only`,
a new job is going to be created. If any of the expressions evaluates to truth
when `except` is being used, a job is not going to be created.
-This follows usual rules for `only` / `except` policies.
+This follows usual rules for [`only` / `except` policies][builds-policies].
### Supported syntax
-Below you can find currently supported syntax reference:
+Below you can find supported syntax reference:
1. Equality matching using a string
- Example: `$VARIABLE == "some value"`
+ > Example: `$VARIABLE == "some value"`
You can use equality operator `==` to compare a variable content to a
string. We support both, double quotes and single quotes to define a string
@@ -494,26 +493,59 @@ Below you can find currently supported syntax reference:
1. Checking for an undefined value
- It sometimes happens that you want to check whether variable is defined or
- not. To do that, you can compare variable to `null` value, like
+ > Example: `$VARIABLE == null`
+
+ It sometimes happens that you want to check whether a variable is defined
+ or not. To do that, you can compare a variable to `null` keyword, like
`$VARIABLE == null`. This expression is going to evaluate to truth if
- variable is not set.
+ variable is not defined.
1. Checking for an empty variable
+ > Example: `$VARIABLE == ""`
+
If you want to check whether a variable is defined, but is empty, you can
simply compare it against an empty string, like `$VAR == ''`.
1. Comparing two variables
- It is possible to compare two variables. `$VARIABLE_1 == $VARIABLE_2`.
+ > Example: `$VARIABLE_1 == $VARIABLE_2`
+
+ It is possible to compare two variables. This is going to compare values
+ of these variables.
1. Variable presence check
+ > Example: `$STAGING`
+
If you only want to create a job when there is some variable present,
which means that it is defined and non-empty, you can simply use
variable name as an expression, like `$STAGING`. If `$STAGING` variable
is defined, and is non empty, expression will evaluate to truth.
+ `$STAGING` value needs to a string, with length higher than zero.
+ Variable that contains only whitespace characters is not an empty variable.
+
+### Unsupported predefined variables
+
+Because GitLab evaluates variables before creating jobs, we do not support a
+few variables that depend on persistence layer, like `$CI_JOB_ID`.
+
+Environments (like `production` or `staging`) are also being created based on
+what jobs pipeline consists of, thus some environment-specific variables are
+not supported as well.
+
+We do not support variables containing tokens because of security reasons.
+
+You can find a full list of unsupported variables below:
+
+- `CI_JOB_ID`
+- `CI_JOB_TOKEN`
+- `CI_BUILD_ID`
+- `CI_BUILD_TOKEN`
+- `CI_REGISTRY_USER`
+- `CI_REGISTRY_PASSWORD`
+- `CI_REPOSITORY_URL`
+- `CI_ENVIRONMENT_URL`
[ce-13784]: https://gitlab.com/gitlab-org/gitlab-ce/issues/13784 "Simple protection of CI secret variables"
[eep]: https://about.gitlab.com/products/ "Available only in GitLab Premium"
@@ -525,3 +557,4 @@ Below you can find currently supported syntax reference:
[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
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md
index be114e7008e..68aa64b3834 100644
--- a/doc/ci/yaml/README.md
+++ b/doc/ci/yaml/README.md
@@ -354,7 +354,7 @@ deploy:
- $STAGING
```
-Learn more about variables expressions on a separate page.
+Learn more about variables expressions on [a separate page][variables-expressions].
## `tags`
@@ -1574,3 +1574,4 @@ CI with various languages.
[ce-7447]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7447
[ce-12909]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12909
[schedules]: ../../user/project/pipelines/schedules.md
+[variables-expressions]: ../variables/README.md#variables-expressions