openSUSE:Build Service Concept build scheduling strategies
Build Scheduling Strategies
OBS 2.0 (and later) offers two mechanisms to modify the default behaviour of job scheduling. These can be set by attributes for each repository in project meta information.
You can either use the web UI, going to YOUR_PROJECT, openSUSE:Factory in the picture, and clicking on the Meta tab link, next to Attributes and Status:
Or you can use OSC:
osc meta prj -e YOUR_PROJECT
# Example <repository name="standard" rebuild="transitive" block="all" linkedbuild="off"> ... </repository>
Build Trigger Setting
The build trigger setting can be set via the rebuild
attribute. Possible settings are:
- transitive: The default behaviour, do a clean build of all depending packages
- direct: Just build the package with changed sources and direct depending packages. But not indirect depending packages.
- local: Just build packages with changed sources.
Note: You can run into dependency problems in case you select "direct" or "local" without noticing this in the build state. Your packages might not even be installable or have random runtime errors (like not starting up or crashing applications), even when they claim to be "succeeded". You can also not be sure that you will be able to re-build them later. So never do a official shipment with this setting of a release.
Block mode
Usually the build of a package gets blocked when a package required to build it is still building. The block
attribute can modify this behaviour:
- all: The default behaviour, don't start the build if a depending package is currently building.
- local: Just care about packages in your project for the block mode.
- never: Never set a package to blocked.
Note: When using something else then "all" you will have to deal with a number of problems:
- Intermediate builds can have dependency and runtime problems.
- Your packages will get built more often, take more resources on the server side. As a result the dispatcher will rate your repository down.
Links
Accepted values for linkedbuild
:
- off: DEFAULT: do not build packages from project links
- localdep: only build project linked packages if they depend on a local package
- alldirect: only build packages directly in the linked projects, but skip any packages in projects the linked project links to (available in OBS-2.11)
- all: treat packages from project links like local packages