|
1 | 1 | # CI job rehearsals
|
2 | 2 |
|
3 |
| -Pull requests to this repository that contain changes affecting Prow job setup |
4 |
| -trigger a so-called "rehearsal". Jobs that would be affected by a PR are |
5 |
| -executed as if run against a target component repository after job changes |
6 |
| -would be merged. This provides job config authors early feedback about how job |
7 |
| -config changes impact CI setup for a given repo. |
8 |
| - |
9 |
| -## How rehearsal works |
10 |
| - |
11 |
| -All pull requests trigger a `ci/prow/pj-rehearse` job, which detects the jobs |
12 |
| -affected by the proposed change. For each job selected for rehearsal (for |
13 |
| -various reasons, we are not able to rehearse all jobs), new Prowjob is |
14 |
| -dynamically created, reporting results via a GitHub context named with the |
15 |
| -`ci/rehearse/$org/$repo/$branch/$test` pattern. Both the "driver" job |
16 |
| -(`ci/prow/pj-rehearse`) and the actual rehearsals are optional, which means |
17 |
| -that their failures do not block Tide from merging the PR. The driver job waits |
18 |
| -for individual rehearsals to finish, and its own PASS/FAIL value depends on |
19 |
| -them: it will fail if at least one of the rehearsals did not succeed. |
20 |
| - |
21 |
| -## Which jobs are rehearsed |
22 |
| - |
23 |
| -At the moment, we are not able to rehearse all affected jobs for various |
24 |
| -reasons. Currently, we only rehearse `Presubmit` jobs affected by the |
25 |
| -following changes: |
26 |
| - |
27 |
| -1. Newly added presubmit jobs |
28 |
| -2. Presubmit jobs whose `spec:` field was changed |
29 |
| -3. Presubmit jobs whose `agent:` field was changed to `kubernetes` from a |
30 |
| - different value |
31 |
| - |
32 |
| -These jobs are then further filtered to exclude jobs where some factor prevents |
33 |
| -us from reliably rehearsing them. Decisions about why a job was excluded from |
34 |
| -rehearsing are logged in the output of the `ci/prow/pj-rehearse` job. Most |
35 |
| -importantly, we are currently *not* rehearsing template-based jobs. |
36 |
| - |
37 |
| -## Rehearsal reruns |
38 |
| - |
39 |
| -It is not possible to re-run individual rehearsal jobs (they do not react to any |
40 |
| -trigger command themselves). Rerunning rehearsals must be always done by |
41 |
| -re-triggering the "driver" job (`ci/prow/pj-rehearse`), which then re-triggers |
42 |
| -each individual rehearsal job, including those that were passing before. |
43 |
| - |
44 |
| -## Future work |
45 |
| -In the near future, we would like to enlarge the set of jobs that are |
46 |
| -rehearsed. First, changes to several fields other that `spec:` should cause a |
47 |
| -rehearsal. Afterwards, we would like to enable rehearsing template-based jobs. |
48 |
| -Additionally, we want to consider for rehearsal even jobs that are affected by |
49 |
| -a change *indirectly*, e.g., by a change of an underlying ci-operator config |
50 |
| -file, template or other asset used by the job. |
| 3 | +The documentation for rehearsals was moved [here](https://steps.ci.openshift.org/help/release#rehearsals). |
0 commit comments