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.