Update examples for CI rules
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'
vsif: '$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
TOC After
Related issues
Author's checklist (required)
-
Follow the Documentation Guidelines and Style Guide. - If you have
developer
access or higher (for example, GitLab team members or Core Team members)-
Apply the documentation label, plus: - The corresponding DevOps stage and group label, if applicable.
-
development guidelines when changing docs under
doc/development/*
,CONTRIBUTING.md
, orREADME.md
. -
development guidelines and Documentation guidelines when changing docs under
development/documentation/*
. - development guidelines and Description templates (.gitlab/*) when creating/updating issue and MR description templates.
-
Assign the designated Technical Writer.
-
When applicable:
-
Update the permissions table. -
Link docs to and from the higher-level index page, plus other related docs where helpful. -
Add GitLab's version history note(s). -
Add the product tier badge. -
Add/update the feature flag section. -
If you're changing document headings, search doc/*
,app/views/*
, andee/app/views/*
for old headings replacing with the new ones to avoid broken anchors.
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. -
Add Technical Writing and docs::
workflow label. -
Add docs-only when the only files changed are under doc/*
.
-
3. Maintainer
-
Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review. -
Ensure a release milestone is set. -
If there has not been a technical writer review, create an issue for one using the Doc Review template.