Pagure Dist Git Interactions With Fedora CI
Fedora CI is a service that handles Continuous Integration of packages in Fedora project. As that it interacts with dist-git. Fedora CI consists of multiple services:
Jenkins - Fedora hosted instance that runs the tests
Greenwave - service to evaluate gating policies on test results
ResultsDB - stores results of the tests
WaiverDB - service for recording waivers against test results
Possible Interactions
The following are a set of documented interactions possible between Pagure Dist Git and Fedora CI.
Rawhide gating
To configure rawhide gating rules for Greenwave user needs to add
gating.yaml
file to package repository
Notification about results
Notification about CI results is done by creating flags using API calls:
/api/0/<package_name>/pull-request/<pr_id>/flag
/api/0/<package_name>/c/<commit_id>/flag
Those flags are then visible on the corresponding commit or pull request.
Triggering tests on pull requests
The automatic trigger of CI when creating pull request is done by emitting message topic
pull-request.new
and it’s consumed by Jenkins
Changes proposed
In order to switch out Pagure Dist Git for an alternative that provides a relatively compatible API pattern, the following changes must be made in the places mentioned below.
Necessary
If URL for dist git is change it will need to be reflected in each component that is part of Fedora CI and directly interacts with dist-git:
Greenwave - HTTP get request to the repository to check the
gating.yaml
Unnecessary
In case message schema will change we would need to update the topics that are consumed by Fedora CI. The configuration for Jenkins is here.