Prow is a Kubernetes based CI/CD system that has several types of jobs and is used at KubeVirt project.
General PR’s, etc are tested by Prow to be validated to be reviewed by doing some sanity checks defined by developers.
In general, the internals on how it works can be checked at Life of a Prow Job, and of course in the presentation made by Juanma on https://talks.godoc.org/github.com/jparrill/hands-on-prow/hands-on-prow.slide#1.
There are other repos (involved in the project ecosystem) that have tests to validate the information provided on them.
The community repositories include:
Those repos contain useful information for new users, like the
try-it scenarios, the Laboratories, Katacoda scenarios, Community supporting files (like logos, proposals, etc).
For each repo we’ve some types of jobs:
periodical: Run automatically to validate that the repo, without further changes is still working (for example, detecting broken URL’s).
presubmit: Validates that the incoming PR will not break the environment.
post-submit: After merging the PR, the repo is still working.
Jobs are defined in the project-infra repository, for example:
Those jobs define the image to use (image and tag), and the commands to execute. In the examples above we’re using ‘Docker-in-Docker’ (dind) images and we’re targetting the KubeVirt-tutorial repository.
The jobs, when executed as part of the Prow workflow, run the commands defined in the repo itself, for example for
kubevirt-tutorial check the following folder:
That folder contains three scripts:
tests, which do setup the environment for running the validations, that is:
- install required software on top of the used images.
- prepare the scripts to be executed via mdsh which extracts markdown from lab files to be executed against the cluster setup by Prow (using
- Run each script and report status
Once the execution has finished, if the final status is
ok, the status is reported back to the GitHub PR so that it can be reviewed by mantainers of the repo.
The jobs executed and the logs are available on the Prow instance we use, for example:
- Pre-submit link checker: https://prow.apps.ovirt.org/?job=kubevirt-io-presubmit-link-checker
- Periodical link checker: https://prow.apps.ovirt.org/?job=kubevirt-io-periodic-link-checker
- KubeVirt Tutorial
If you find that a test should be performed to further validate the integrity and information provided, feel free to raise issues or even a PR against the
project-infra repository so that we can get it improved!