Review mbs SOP

Signed-off-by: Michal Konečný <mkonecny@redhat.com>
This commit is contained in:
Michal Konečný 2021-09-06 17:13:54 +02:00
parent 3823b5ccdf
commit 7d0b205093
2 changed files with 24 additions and 37 deletions

View file

@ -67,7 +67,7 @@
** xref:making-ssl-certificates.adoc[SSL Certificate Creation - SOP]
** xref:massupgrade.adoc[Mass Upgrade Infrastructure - SOP]
** xref:mastermirror.adoc[Master Mirror Infrastructure - SOP]
** xref:mbs.adoc[mbs - SOP in review ]
** xref:mbs.adoc[Module Build Service Infra - SOP]
** xref:memcached.adoc[memcached - SOP in review ]
** xref:message-tagging-service.adoc[message-tagging-service - SOP in review ]
** xref:mirrorhiding.adoc[mirrorhiding - SOP in review ]

View file

@ -12,26 +12,25 @@ Contact::
#fedora-modularity, #fedora-admin, #fedora-releng
Persons::
jkaluza, fivaldi, breilly, mikem
Location::
Phoenix
Public addresses::
* mbs.fedoraproject.org
Servers::
* mbs-frontend0[1-2].phx2.fedoraproject.org
* mbs-backend01.phx2.fedoraproject.org
* mbs-frontend0[1-2].iad2.fedoraproject.org
* mbs-backend01.iad2.fedoraproject.org
Purpose::
Build modules for Fedora.
== Description
Users submit builds to mbs.fedoraproject.org referencing their modulemd
file in dist-git. (In the future, users will not submit their own module
builds. The [.title-ref]#freshmaker# daemon (running in infrastructure)
will watch for .spec file changes and modulemd.yaml file changes -- it
Users submit builds to _mbs.fedoraproject.org_ referencing their modulemd
file in https://src.fedoraproject.org/[dist-git]. (In the future,
users will not submit their own module
builds. The _freshmaker_ daemon (running in infrastructure)
will watch for `.spec` file changes and `modulemd.yaml` file changes -- it
will submit the relevant module builds to the MBS on behalf of users.)
The request to build a module is received by the MBS flask app running
on the mbs-frontend nodes.
on the `mbs-frontend` nodes.
Cursory validation of the submitted modulemd is performed on the
frontend: are the named packages valid? Are their branches valid? The
@ -46,7 +45,7 @@ the rpm builds are submitted.
These are grouped and limited in two ways:
* First, there is a global NUM_CONCURRENT_BUILDS config option that
* First, there is a global `NUM_CONCURRENT_BUILDS` config option that
controls how many koji builds the MBS is allowed to have open at any
time. It serves as a throttle.
* Second, a given module may specify that it's components should have a
@ -66,8 +65,8 @@ future CI interactions.)
=== The mbs-build command
The https://pagure.io/fm-orchestrator[fm-orchestrator repo] and the
[.title-ref]#module-build-service# package provide an
[.title-ref]#mbs-build# command with a few subcommands. For general
_module-build-service_ package provide an
_mbs-build_ command with a few subcommands. For general
help:
....
@ -127,8 +126,8 @@ psabata's build #570 of shared-userspace-f26 is in the "build" state
=== The releng repo
There are more tools located in the [.title-ref]#scripts/mbs/# directory
of the releng repo: https://pagure.io/releng/blob/master/f/scripts/mbs
There are more tools located in the `scripts/mbs/` directory
of the releng repo: https://pagure.io/releng/blob/main/f/scripts/mbs
== Cancelling a module build
@ -141,11 +140,10 @@ $ mbs-build cancel $BUILD_ID
MBS admins can also cancel builds of any user.
[NOTE]
.Note
====
MBS admins are defined as members of the groups listed in the
[.title-ref]#ADMIN_GROUPS# configuration options in
[.title-ref]#roles/mbs/common/templates/config.py#.
`ADMIN_GROUPS` configuration options in
`roles/mbs/common/templates/config.py`.
====
== Logs
@ -153,12 +151,12 @@ The frontend logs are on mbs-frontend0[1-2] in
`/var/log/httpd/error_log`.
The backend logs are on mbs-backend01. Look in the journal for the
[.title-ref]#fedmsg-hub# service.
`fedmsg-hub` service.
== Upgrading
The package in question is [.title-ref]#module-build-service#. Please
use the [.title-ref]#playbooks/manual/upgrade/mbs.yml# playbook.
The package in question is `module-build-service`. Please
use the `playbooks/manual/upgrade/mbs.yml` playbook.
== Managing Bootstrap Modules
@ -179,32 +177,21 @@ The existence of the tag is not enough for the bootstrap module to be
useable by MBS. MBS discovers the bootstrap module as a possible
dependency for other yet-to-be-built modules by querying PDC. During
normal operation, these entries in PDC are automatically created by
pdc-updater on pdc-backend02, but for the bootstrap tag they need to be
`pdc-updater` on _pdc-backend02_, but for the bootstrap tag they need to be
manually created and linked to the new bootstrap tag.
The fm-orchestrator repo has a
https://pagure.io/fm-orchestrator/blob/master/f/bootstrap[bootstrap/]
directory with tools that we used to create the first bootstrap entries.
If you need to create a new bootsrap entry or modify an existing one,
use these tools for inspiration. They are not general purpose and will
likely have to be modified to do what is needed. In particular, see
[.title-ref]#import-to-pdc.py# as an example of creating a new entry and
[.title-ref]#activate-in-pdc.py# for an example of editing an existing
entry.
To be usable, you'll need a token with rights to speak to staging/prod
PDC. See the PDC SOP for information on client configuration in
[.title-ref]#/etc/pdc.d/# and on where to find those tokens.
`/etc/pdc.d/` and on where to find those tokens.
== Things that could go wrong
=== Overloading koji
If koji is overloaded, it should be acceptable to _stop_ the fedmsg-hub
daemon on mbs-backend01 at any time.
daemon on _mbs-backend01_ at any time.
[NOTE]
.Note
====
As builds finish in koji, they will be _missed_ by the backend.. but
when it restarts it should find them in datagrepper. If that fails as
@ -213,5 +200,5 @@ after startup that checks koji for anything it may have missed, at which
point it will resume functioning.
====
If koji continues to be overloaded after startup, try decreasing the
[.title-ref]#NUM_CONCURRENT_BUILDS# option in the config file in
[.title-ref]#roles/mbs/common/templates/#.
`NUM_CONCURRENT_BUILDS` option in the config file in
`roles/mbs/common/templates/`.