|
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