From Fedora Project Wiki
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
The Build Pipeline Overview (BPO) component is a read-only user interface (UI) that will provide information about any module.
The Build Pipeline Overview (BPO) component is a read-only user interface (UI) that will provide information about the build process of modules.


The main three functions could be something like this:
== WHY ==
* Browsing and searching for modules
* Showing build state of a module
* Showing content of a module and relationships between modules


== Browsing modules ==
Information about module builds are scattered all over the place - in BPO, Koji, Bodhi, mirrormanager, ...
Every module can be uniquely identified by the name of the module, version, and release (NVR). The interface should allow you to find a module based on NVR, show last version of a module, etc.


There should be one UI that would show you all the information needed.


== Build states ==
== WHAT ==
 
This page describes the first minimal version of BPO.
 
It will be focused on developers and release engineers. Later versions should be also focused on QA people, PMs, and end-users.
 
The first version should:
# be ready* for flock
# help people understand the whole concept
# be subject to discussions, changes, extensions, ...
 
<nowiki>*</nowiki> Take this as a proposal by asamalik - it is nothing official or agreed at this moment. Ready would mean some initial hackish implementation that would help people to see the build process.
 
=== WHAT - the usability side ===
 
The first version will be focused on developers and release engineers with the following use-cases:
 
Developer:
* patches a package (component) for CVE, and wants to see:
** which modules will be rebuilt
** status of these rebuilds
* creates/updates a module (the yaml spec file) and wants to see:
** a state of the build process of this module
** a list of modules that depend on this one and will be rebuilt + status of these rebuilds
 
Rel-eng:
* a CVE has been patched in a package (component) and they want to see:
** list of artifacts affected by this update
** build states of modules from which are the artifacts composed
** "all green" meaning everything has been rebuilt = CVE fixed everywhere, so they can make a press release about it
 
There will be other people with roles like QA, PM, end-users. Their use-cases will be covered in later versions of the BPO.
 
=== WHAT - the technical side ===
 
There will be three entities:
# '''components''' (RPM package)
# '''modules'''
# '''artifacts''' (modular repo, iso, docker image)
 
And there would be three basic functions:
# '''Search''' components, modules, and artifacts.
# Browse ''''relations'''' between components, modules, and artifacts.
# See '''details''' of components, modules, and artifacts.
 
Details would be as follows:
# Detail of a component
#* list of modules in which is this component included
#* build state of these modules
#* list of artifacts in which is this component included
# Detail of a module
#* list of components included in this module
#* list of modules that are dependencies of this module
#* build state of these modules
#* list of modules that depend on this module
#* build state of these modules
#* list of artifacts that are composed with this module
# Detail of an artifact
#* list of modules that are included in this artifact
#* their build states
 
==== Relationships ====
A module has the following relationships. The UI should allow to navigate trough these relationships to see details of other modules. It should also show the build states of all of these.
 
[[File:BPO-relationships.png|600px]]
 
==== Build states ====
The build pipeline and corresponding build sates are shown on the picture below. The interface should show the state of a module in this pipeline.
The build pipeline and corresponding build sates are shown on the picture below. The interface should show the state of a module in this pipeline.


[[File:BPO-build-states.png|600px]]
[[File:BPO-build-states.png|600px]]


== HOW ==


== Relationships ==
The BPO will be composed of several microservices as shown on the following image:
A module has the following relationships. The UI should allow to navigate trough these relationships to see details of other modules. It should also show the build states of all of these.
 
[[File:BPO-architecture.png|600px]]
 
There are three types of services:
 
* Updaters - these will fetch fedmsg messages or periodically query other services for data and update Elasticsearch.
* Elasticsearch - storage and search engine for data.
* User interfaces - web UI and API presenting data from Elasticsearch. These are read-only.


[[File:BPO-relationships.png|600px]]
=== Data representation ===
Elasticsearch is a document database. A module or a module stack will be represented by a single document. All components will be part of the document, and all dependencies will be just links to other documents.

Latest revision as of 07:44, 22 August 2016

The Build Pipeline Overview (BPO) component is a read-only user interface (UI) that will provide information about the build process of modules.

WHY

Information about module builds are scattered all over the place - in BPO, Koji, Bodhi, mirrormanager, ...

There should be one UI that would show you all the information needed.

WHAT

This page describes the first minimal version of BPO.

It will be focused on developers and release engineers. Later versions should be also focused on QA people, PMs, and end-users.

The first version should:

  1. be ready* for flock
  2. help people understand the whole concept
  3. be subject to discussions, changes, extensions, ...

* Take this as a proposal by asamalik - it is nothing official or agreed at this moment. Ready would mean some initial hackish implementation that would help people to see the build process.

WHAT - the usability side

The first version will be focused on developers and release engineers with the following use-cases:

Developer:

  • patches a package (component) for CVE, and wants to see:
    • which modules will be rebuilt
    • status of these rebuilds
  • creates/updates a module (the yaml spec file) and wants to see:
    • a state of the build process of this module
    • a list of modules that depend on this one and will be rebuilt + status of these rebuilds

Rel-eng:

  • a CVE has been patched in a package (component) and they want to see:
    • list of artifacts affected by this update
    • build states of modules from which are the artifacts composed
    • "all green" meaning everything has been rebuilt = CVE fixed everywhere, so they can make a press release about it

There will be other people with roles like QA, PM, end-users. Their use-cases will be covered in later versions of the BPO.

WHAT - the technical side

There will be three entities:

  1. components (RPM package)
  2. modules
  3. artifacts (modular repo, iso, docker image)

And there would be three basic functions:

  1. Search components, modules, and artifacts.
  2. Browse 'relations' between components, modules, and artifacts.
  3. See details of components, modules, and artifacts.

Details would be as follows:

  1. Detail of a component
    • list of modules in which is this component included
    • build state of these modules
    • list of artifacts in which is this component included
  2. Detail of a module
    • list of components included in this module
    • list of modules that are dependencies of this module
    • build state of these modules
    • list of modules that depend on this module
    • build state of these modules
    • list of artifacts that are composed with this module
  3. Detail of an artifact
    • list of modules that are included in this artifact
    • their build states

Relationships

A module has the following relationships. The UI should allow to navigate trough these relationships to see details of other modules. It should also show the build states of all of these.

BPO-relationships.png

Build states

The build pipeline and corresponding build sates are shown on the picture below. The interface should show the state of a module in this pipeline.

BPO-build-states.png

HOW

The BPO will be composed of several microservices as shown on the following image:

BPO-architecture.png

There are three types of services:

  • Updaters - these will fetch fedmsg messages or periodically query other services for data and update Elasticsearch.
  • Elasticsearch - storage and search engine for data.
  • User interfaces - web UI and API presenting data from Elasticsearch. These are read-only.

Data representation

Elasticsearch is a document database. A module or a module stack will be represented by a single document. All components will be part of the document, and all dependencies will be just links to other documents.