To give a concrete example, here is a PR that has been validated by Zuul, approved by the
package maintainer and published by Zuul on Koji.


Four jobs have run to validate the PR (triggered at PR creation/update):

- rpm-scratch-build: Package build as scratch on Koji
- rpm-linter: Run the rpm-lint command on packages built by Koji
- rpm-rpminspect: Run the rpminspect command on packages built by Koji
- rpm-test: Run the included tests/tests.yml functional tests on a Fedora Rawhide VMs

Then the maintainer, after a look at the test results, flagged the PR with the 'gateit'
flag to trigger the publication part of the workflow. Then Zuul:

- merged the PR
- run the job rpm-build to build on Koji

More details on this wiki page: https://fedoraproject.org/wiki/Zuul-based-ci