Skip to content

Commit 46d1a8a

Browse files
committed
testing strategy: add policy for non-blocking jobs by path
This was motivated in part by kubernetes/test-infra#33463 (comment) and is part of an effort to document best practices.
1 parent ade28d6 commit 46d1a8a

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

Diff for: contributors/devel/sig-testing/testing-strategy.md

+38
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,44 @@ The Kubernetes job uses [prow](https://prow.k8s.io) to implement the CI system.
2626
- **Postsubmit:** Runs after code is merged. Useful for building artifacts.
2727
- **Periodic:** Runs at scheduled intervals. Ideal for monitoring trends and catching regressions.
2828

29+
#### Non-blocking triggered by path
30+
31+
Usually, blocking pre-submit jobs run by default and non-blocking jobs don't. The `/test` command
32+
has to be used explicitly for such non-blocking jobs. It is possible to configure such
33+
jobs so that they [run automatically when certain paths are modified](https://github.com/kubernetes/test-infra/blob/ee70308f09c10f7cd933c26c98acc7ebf785d436/config/jobs/kubernetes/sig-node/sig-node-presubmit.yaml#L3201-L3202).
34+
35+
Non-blocking jobs cannot detect all regressions. A test flake might succeed
36+
when tested only once during presubmit. When defining the path trigger, it's
37+
impossible to list everything that might cause a need to run tests
38+
(e.g. tool changes, updates in packages that a feature depends on). Therefore
39+
it is required to have a periodic job which runs the same tests regularly.
40+
41+
The advantage of also having a non-blocking job that gets triggered automatically is
42+
that reviewers don't need to remember to run it and that problems get
43+
discovered sooner. Without it, maintainers are forced to diagnose regressions
44+
in a periodic job and then have to ping the contributor who caused the problem.
45+
If that contributor is unresponsive, maintainers may have to fix the problem
46+
themselves.
47+
48+
Instead, the burden is on the contributor whose pull request fails the
49+
tests. If they are unresponsive, their change doesn't get merged and there's no
50+
regression.
51+
52+
> [!CAUTION]
53+
> A non-blocking job that fails confuses other contributors
54+
> who are not familiar with the job or the failures. If it runs too often, it
55+
> wastes CI resources.
56+
57+
To avoid those negative consequences for the project, the guidelines for
58+
setting up such a job are:
59+
60+
* The job owners are responsive and react to problems with the job.
61+
* The job must have a low failure rate to avoid confusion in drive-by pull requests.
62+
* The importance of the feature must justify the extra CI resources (depends
63+
on how often it gets triggered).
64+
* The `run_if_changed` regular expression must be narrow enough that
65+
the job doesn't run for unrelated changes.
66+
2967
#### SIG Release Blocking and Informing jobs
3068

3169
SIG Release maintains two sets of jobs that decide whether the release is

0 commit comments

Comments
 (0)