openSUSE:Build Service Backend Key Components
The OBS contains several components; this page provides an overview.
The main OBS servers are found in /usr/lib/obs/
There is one Source server per OBS which manages the sources, revisions, project/package metadata, the "link"-handling, (submit)requests, binary package search, etc
The source server is the interface for the frontend and may pass events to one or more repservers.
It has a http interface.
The system serves binaries to the workers or frontend api. It receives build results from the workers and maintain the build history.
It also handles resulting packages and notifies the signing server.
It offers build dependency calculatation what binaries are needed for specific jobs for the local builds (usually "osc build").
repservers may exists multiple times, for example to host i586 packages on one system and ppc on another one.
workers register at rep servers for building jobs.
It has a http interface.
There is a scheduler service for each architecture, it calculate build dependencies via all packages in all projects and all repositories. It creates build job descriptions in case it finds packages which can get build.
It eats all events about changed sources or finished build jobs for dependency recalculation.
It has no api, but it can process commands send as events via another service.
There is one dispatcher per OBS which hands out requests to workers based on jobs generated by the schedulers.
It has no api, just reading the jobs directories and notifing the workers.
The publisher responds to publish events, generated by the scheduler. It transfers packages for a project to the repository trees, generate meta data and uploads content to download servers.
It has no api, just reads events from publish directory and reads project config how to create repos.
The worker is started on a build host and manages the actual build. It talks to source and repo servers and gets notified by the dispatcher.
A bs_worker may build for multiple OBS server instances.
Is an optional process to monitor bs_workers. It kills running job registrations in case a worker dies without a clean shutdown message.
Is a recommended process to sign packages after build. The process must run, if you have configured BSConfig::sign...
A worker is triggered by the dispatcher, requests binaries from the reposerver, source from the srcserver and sends the resulting packages to the repserver.
The repserver then triggers an event for the signing server, once signed, the scheduler will fetch the job, sort it into a repository and finally creates an event for the publisher when the repository build cycle completes.
See also : openSUSE:Build Service Deployment