121 lines
4.9 KiB
ReStructuredText
121 lines
4.9 KiB
ReStructuredText
.. _summary:
|
|
|
|
Summary of Dist Git Deployment
|
|
==============================
|
|
|
|
This document is a summary of all the interactions with all the services identified
|
|
in this investigation. It also summarize the features that are currently available
|
|
in current dist git deployment.
|
|
|
|
Here is a diagram showing all the interactions between dist git and services in Fedora
|
|
infrastructure.
|
|
|
|
.. image:: ../_static/dist_git_interactions.drawio.png
|
|
:target: ../_images/dist_git_interactions.drawio.png
|
|
|
|
API
|
|
----
|
|
|
|
Following is the list of all dist git API endpoints that are currently used by services
|
|
in Fedora infrastructure.
|
|
|
|
More information about endpoints could be found in `API documentation
|
|
<https://src.fedoraproject.org/api/0>`_.
|
|
|
|
- ``/api/0/fork`` creates a fork of project
|
|
- ``/api/0/projects`` lists all the projects
|
|
- ``/api/0/<namespace>/<package_name>`` returns all the info about project
|
|
- ``/api/0/<namespace>/<package_name>/c/<commit_hash>/flag`` adds/edits flag on commit
|
|
- ``/api/0/<namespace>/<package_name>/git/branches`` modifies ACL for the git repository
|
|
- ``/api/0/<namespace>/<package_name>/git/modifyacls`` lists all branches in the git repository
|
|
- ``/api/0/<namespace>/<package_name>/hascommit`` checks whether a specified user has commit
|
|
access to repository
|
|
- ``/api/0/<namespace>/<package_name>/pull-request/new`` opens a new pull request
|
|
- ``/api/0/<namespace>/<package_name>/pull-request/<pr_id>/flag`` adds/edits flag on pull request
|
|
- ``/api/0/<namespace>/<package_name>/pull-request/<pr-id>/merge`` merges a pull request
|
|
- ``/api/0/<namespace>/<package_name>/watchers/update`` sets watch status for specified user
|
|
- ``/_dg/anitya/<namespace>/<package_name>`` gets/sets monitoring settings
|
|
- ``/_dg/bzoverrides/<namespace>/<package_name>`` gets/sets the bugzilla overrides for
|
|
the project. Used for EPEL maintainers.
|
|
- ``/_dg/orphan/<namespace>/<package_name>`` orphans a package
|
|
|
|
|
|
Messaging Schema
|
|
----------------
|
|
|
|
Following is the list of all the dist git topics that are being listened by services
|
|
in Fedora Infrastructure.
|
|
|
|
More information about messaging schema could be found in `Fedora Messaging documentation
|
|
<https://fedora-messaging.readthedocs.io/en/stable/user-guide/schemas.html#pagure>`_
|
|
|
|
- ``org.fedoraproject.prod.pagure.git.receive`` when commit is pushed to repository
|
|
- ``org.fedoraproject.prod.pagure.pull-request.new`` when new PR is opened
|
|
- ``org.fedoraproject.prod.pagure.pull-request.rebased`` when PR is rebased
|
|
- ``org.fedoraproject.prod.pagure.pull-request.updated`` when PR is updated
|
|
- ``org.fedoraproject.prod.pagure.pull-request.comment.added`` when comment is added to PR
|
|
|
|
|
|
HTTP Endpoints
|
|
--------------
|
|
|
|
Following is the list of all the dist git HTTP endpoints that are being accessed by services
|
|
in Fedora Infrastructure.
|
|
|
|
- ``/<namespace>/<package_name>/blob/rawhide/f/gating.yaml`` to get the Rawhide
|
|
gating settings. This file is in the default branch.
|
|
- ``/<namespace>/<package_name>/raw/rawhide/f/dead.package`` to check if the package is
|
|
retired. This file is the only file in default branch when the package is retired.
|
|
- ``/<namespace>/<package_name>/raw/<branch>/f/<package_name>.yaml`` to obtain
|
|
definition file for module
|
|
- ``/extras/pagure_bz.json`` to get list of maintainers for packages.
|
|
- ``/extras/pagure_owner_alias.json`` to get owners of packages.
|
|
- ``/extras/pagure_poc.json`` to get point of contacts for packages.
|
|
|
|
|
|
Git Interactions
|
|
----------------
|
|
|
|
On dist git every package is also git repository and hence it could be cloned and allow the
|
|
packager to do any git operation with it.
|
|
|
|
|
|
Access Control
|
|
--------------
|
|
|
|
Dist git is using `ACL implementation
|
|
<https://pagure.io/pagure/blob/master/f/pagure/lib/git_auth.py>`_ from Pagure.
|
|
Access Control Lists are used to control permissions of users to package sources.
|
|
|
|
|
|
Web Interface Features
|
|
----------------------
|
|
|
|
This is a list of specific UI features that are not inherited from Pagure. The rest
|
|
is inherited from Pagure.
|
|
|
|
- Links to `Koji <https://koji.fedoraproject.org/koji/>`_,
|
|
`Bodhi <https://bodhi.fedoraproject.org/>`_,
|
|
`Bugzilla <https://bugzilla.redhat.com>`_,
|
|
`Fedora Packages <https://packages.fedoraproject.org/>`_
|
|
and `Koschei <https://koschei.fedoraproject.org/>`_
|
|
- ``Issues`` tab is just a link to bugzilla tracker for the repository
|
|
- Monitoring status setting (backend implemented in `dist git
|
|
<https://pagure.io/pagure-dist-git/blob/master/f/pagure_distgit/plugin.py>`_)
|
|
- Orphaning and taking orphaned projects (backend implemented in `dist git
|
|
<https://pagure.io/pagure-dist-git/blob/master/f/pagure_distgit/plugin.py>`_)
|
|
|
|
|
|
Lookaside Cache
|
|
---------------
|
|
|
|
https://src.fedoraproject.org/repo/pkgs/ is hosting lookaside cache, which is used
|
|
by build system to obtain sources for the packages. It is hosted on same machine as dist
|
|
git and contains folder structure in which the sources are stored.
|
|
|
|
|
|
FAS integration
|
|
---------------
|
|
|
|
Dist git is using `FAS integration
|
|
<https://pagure.io/pagure/blob/master/f/pagure/ui/oidc_login.py>`_ from Pagure.
|