Skip to content

Maintenance classes

Björn Geuken edited this page Jan 31, 2018 · 6 revisions

Maintenance classes & Co

This guide is focusing on the classes and helpers that are getting involved when working with maintenance requests.

For getting a better picture of the maintenance workflows that can be used in OBS, please refer to our Online Documentation.

A graphic with the full maintenance cycle as well as a brief explanation of the general maintenance workflow can be found in the Maintenance Support chapter of our reference guide.

The maintenance project

Project with kind attribute of value 'maintenance'. Maintenance projects have additional Incidents and Maintained Projects tabs in the UI.

Meta file:

<project name="My:Maintenance:Project" kind="maintenance">
  ...
  <maintenance>
    <maintains project="Maintained:Project:A"/>
    <maintains project="Maintained:Project:B"/>
  </maintenance>
</project>

Maintained projects can be created via the Maintained Projects tab. Maintenance incidents can be created via the project page.

MaintainedProject

Connects two projects, the maintenance project and the maintained project.

For openSUSE these projects usually have the kind attribute set to 'maintenance_release'. But that's not mandatory.

MaintenanceIncident

Connects two projects, the maintenance project and the maintenance incident project. Maintenance incident projects have a kind attribute with value 'maintenance_incident'. Project names of maintenance incidents are in the form of $maintenance_project:$n where n is a counter starting from 0.

Packages inside the maintenance incident project have a suffix that depends on the release target, eg. my_package.openSUSE_13.2_Update.

Meta file of a maintenance incident project:

<project name="My:Maintenance:0" kind="maintenance_incident">
  ...
</project>

BsRequestActionMaintenanceIncident

Request to start a new maintenance incident. Subclass of BsRequestAction.

Requires a release target project, either defined via the target_releaseproject attribute or the target_project.

BsRequestActionMaintenanceRelease

Request to release a package. Subclass of BsRequestAction.

Requires at least one release target definition for the source project.

ReleaseTarget

Release targets store the connection between two repositories; the repository where we build the binaries and the target_repository where we plan to release (copy) the binaries to.

Meta file of a project with release targets:

<project name="Project:A">
  ...
  <repository name="my_repository">
    <releasetarget project="Project:B" repository="repository_b" trigger="manual"/>
  </repository>
</project>

Maintenance related Attributes

There are a few maintenance related attributes. Below you can find a short explanation to each of them.

OBS:MaintenanceIdTemplate

Can be used to overwrite the default scheme of naming maintenance release ids.

OBS:Maintained

Marks project as maintained. Supposedly used by the 'osc mbranch' command. Not used by OBS itself.

OBS:UpdateProject

Marks project as locked. The attribute value defines the project used for updates. Used to channel binaries during an update.

Clone this wiki locally