Retester

An overview of the retester implementation.

What Is Retester?

Retester is a tool that evaluate which pull requests should be retested, and then retest by @openshift-ci-robot ’s commenting /retest-required on the pull requests.

How Do We Set up Retester?

Retester completely reuses tide configuration, whatever onboards to Tide, gets onboarded to retester too. Retester is aware of Prow and the concept of optional and required jobs. It only triggers retests on PRs where at least one required Prow job is failing.

We can enable the retester on a repository by adding a flag --enable-on-repo=<org>/<repo> to the retester’s deployment and exclude it from the old retester by -repo:<org>/<repo> in the query. The following example shows how to achieve it for repo openshift/ci-tools:

1
2
3
4
5
6
7
8
9
  spec:
    containers:
    - image: retester:latest
      name: retester
      command:
      - retester
      args:
      ...
      - --enable-on-repo=openshift/ci-tools       # Enable the retester on repo openshift/ci-tools
1
2
3
4
5
6
7
  name: periodic-retester
  spec:
    containers:
    - args:
      - --query=is:pr state:open label:lgtm label:approved status:failure comments:<2500
        ...
        -repo:openshift/ci-tools                  # Exclude repo openshift/ci-tools

Back-off

Retests are paused after three attempts against one base/PR HEAD combination, and the PR is explicitly held (/hold) after nine retests of a single PR HEAD.