diff options
Diffstat (limited to 'doc/ci/yaml/README.md')
-rw-r--r-- | doc/ci/yaml/README.md | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 1d735f4e221..c2d6ed58118 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -729,7 +729,18 @@ Learn more about [variables expressions](../variables/README.md#environment-vari Using the `changes` keyword with `only` or `except` makes it possible to define if a job should be created based on files modified by a Git push event. -For example: +This means the `only:changes` policy is useful for pipelines where: + +- `$CI_PIPELINE_SOURCE == 'push'` +- `$CI_PIPELINE_SOURCE == 'merge_request_event'` +- `$CI_PIPELINE_SOURCE == 'external_pull_request_event'` + +If there is no Git push event, such as for pipelines with +[sources other than the three above](../variables/predefined_variables.html#variables-reference), +`changes` cannot determine if a given file is new or old, and will always +return true. + +A basic example of using `only: changes`: ```yaml docker build: @@ -910,8 +921,9 @@ at all, the behavior defaults to `job:when`, which continues to default to #### `rules:changes` -`changes` works exactly the same way as [`only`/`except`](#onlychangesexceptchanges), -accepting an array of paths. +`rules: changes` works exactly the same way as `only: changes` and `except: changes`, +accepting an array of paths. Similarly, it will always return true if there is no +Git push event. See [`only/except: changes`](#onlychangesexceptchanges) for more information. For example: |