diff options
Diffstat (limited to 'doc/ci/jobs/job_control.md')
-rw-r--r-- | doc/ci/jobs/job_control.md | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/doc/ci/jobs/job_control.md b/doc/ci/jobs/job_control.md index 39ab0998291..d26c698af89 100644 --- a/doc/ci/jobs/job_control.md +++ b/doc/ci/jobs/job_control.md @@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w When a new pipeline starts, GitLab checks the pipeline configuration to determine which jobs should run in that pipeline. You can configure jobs to run depending on -the status of variables, the pipeline type, and so on. +factors like the status of variables, or the pipeline type. To configure a job to be included or excluded from certain pipelines, you can use: @@ -107,6 +107,33 @@ job: - make build ``` +#### Skip job if the branch is empty + +Use [`rules:changes:compare_to`](../yaml/index.md#ruleschangescompare_to) to avoid +running a job when the branch is empty, which saves CI/CD resources. Compare the +branch to the default branch, and if the branch: + +- Doesn't have changed files, the job doesn't run. +- Has changed files, the job runs. + +For example, in a project with `main` as the default branch: + +```yaml +job: + script: + - echo "This job only runs for branches that are not empty" + rules: + - if: $CI_COMMIT_BRANCH + changes: + compare_to: refs/heads/main + paths: + - '*' +``` + +The rule for this job compares all files and paths (`*`) in the current branch against +the default branch `main`. The rule matches and the job runs only when there are +changes to the files in the branch. + ### Complex rules You can use all `rules` keywords, like `if`, `changes`, and `exists`, in the same @@ -1061,7 +1088,7 @@ docker_build: When the `DOCKERFILES_DIR` variable is expanded in the `changes:` section, the full path becomes `path/to/files//*`. The double slashes might cause unexpected behavior -depending on the keyword used, shell and OS of the runner, and so on. +depending on factors like the keyword used, or the shell and OS of the runner. ### `You are not allowed to download code from this project.` error message |