Skip to content

Update examples for CI rules

Marcel Amirault requested to merge docs-rules-examples-fix into master

What does this MR do?

Related to #217446 (closed)

This MR attempts to greatly improve our docs for the rules keyword. Some of the examples were not clear, some of the explanations were too brief, and there were not enough examples of valid if clauses, especially for people who were switching from only/except to `rules, and who were accustomed to the simpler keywords you could use with the old way.

Also, some rules examples would definitely cause duplicate branch/MR pipelines if people tried to use them exactly as written, so I've updated the majority of examples so that they can be used on their own safely, for testing.

The benefits and uses of workflow: rules will be updated in a follow-up MR.

A key change: suggest and explain in detail that using $CI_PIPELINE_SOURCE is a safe way to determine which pipeline to add jobs to, including MR pipelines and push pipelines. I have included a table of the possible values, which should make this easy(er) to use.

Advantages:

  • Easier to intuit what's happening. if: '$CI_MERGE_REQUEST_IID' vs if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  • The exact same variable can be used for both push pipelines and merge request pipelines.
  • We have examples, like our templates, that have separate rules to include both branches and tags. The "push" pipeline source works for both. If you need only one or the other, then you can still use the old way. Templates to be updated later.
  • Even works with parent-child pipelines (to be updated in a follow-up). Set the parent to MR pipeline, branch pipeline, whatever, then set the child to if: '$CI_PIPELINE_SOURCE == "parent_pipeline"'. If the trigger job runs, the child pipeline jobs will run if it has this rule (as a workflow:rule or job rules)
  • If $CI_MERGE_REQUEST_* variables are exposed in other pipelines in the future, pipelines using this style to include/exclude MR pipelines will not break. See #27658 (closed) for example.

Disadvantages:

  • ?

I've also:

  • adjusted the nesting of the rules sections, which were at the wrong depth (see screenshots below)
  • Moved the #### Permitted attributes section to be higher in the list, as it makes sense to explain that first, then explain the individual clauses later.

Screenshots

TOC Before

Screen_Shot_2020-06-09_at_23.18.45

TOC After

Screen_Shot_2020-06-09_at_23.18.06

Related issues

Author's checklist (required)

When applicable:

Review checklist

All reviewers can help ensure accuracy, clarity, completeness, and adherence to the Documentation Guidelines and Style Guide.

1. Primary Reviewer

  • Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes.

2. Technical Writer

  • Optional: Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable DevOps stage.

3. Maintainer

  1. Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review.
  2. Ensure a release milestone is set.
  3. If there has not been a technical writer review, create an issue for one using the Doc Review template.
Edited by 🤖 GitLab Bot 🤖

Merge request reports