Meego Wiki
Views

Release Infrastructure/BOSS/Participants

From MeeGo wiki
< Release Infrastructure | BOSS(Difference between revisions)
Jump to: navigation, search
(Add instructions for osc installation)
 
(9 intermediate revisions not shown)
Line 1: Line 1:
List of participants ported / implemented for BOSS SkyNET :
List of participants ported / implemented for BOSS SkyNET :
 +
== Installation Prerequisites ==
 +
Some partiticipants will require the osc tool to interact with OBS. This will be installed as a dependency to relevant participants.
 +
The version included in Debian is too old and the required repository must be added:
 +
<pre>
 +
cat <<EOF > /etc/apt/sources.list.d/MINT-tools.list
 +
deb http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_6.0/ /
 +
EOF
 +
</pre>
== OBS prechecks ==
== OBS prechecks ==
Line 7: Line 15:
Package : https://build.pub.meego.com/package/show?package=boss-participant-prechecks&project=Project:MINT:Testing
Package : https://build.pub.meego.com/package/show?package=boss-participant-prechecks&project=Project:MINT:Testing
 +
 +
Configuration : The file at /etc/oscrc needs to be edited so that these participants can communicate with the OBS instance.
=== check_already_testing ===
=== check_already_testing ===
Line 12: Line 22:
name possibly in the Testing project. If the checksum matches it sets STATUS
name possibly in the Testing project. If the checksum matches it sets STATUS
= FAILED
= FAILED
 +
 +
This is for over-eager developers - or if two people in a team submit
 +
close together.
=== check_no_changes ===
=== check_no_changes ===
Line 17: Line 30:
name possibly in the Target project. If the checksum matches it sets STATUS =
name possibly in the Target project. If the checksum matches it sets STATUS =
FAILED
FAILED
 +
 +
Developers sometimes submit without doing a proper update - this
 +
catches that situation.
=== check_multiple_destinations ===
=== check_multiple_destinations ===
Line 29: Line 45:
   * Spec file : *.spec
   * Spec file : *.spec
and sets STATUS = FAILED if not
and sets STATUS = FAILED if not
 +
 +
Nb the presence of the .changes file is important for the changelog
 +
participants to operate correctly
=== check_package_built_at_source ===
=== check_package_built_at_source ===
 +
 +
Prerequisite : check_has_valid_repo
 +
Checks if the packages being submitted are built successfully against the  
Checks if the packages being submitted are built successfully against the  
designated target repository for the architectures of interest and sets STATUS = FAILED if not
designated target repository for the architectures of interest and sets STATUS = FAILED if not
Line 52: Line 74:
Finds a repository in the source project that builds ONLY against a certain target
Finds a repository in the source project that builds ONLY against a certain target
project / repo , sets STATUS = FAILED if it does not find one.
project / repo , sets STATUS = FAILED if it does not find one.
 +
 +
=== check_has_relevant_changelog ===
 +
 +
Prerequisite : get_relevant_changelog
 +
 +
Checks that each package in the request actions has a non empty relevant change entries field.
 +
 +
Use this if you want to enforce that new entries be added to the .changes file before allowing a request to be accepted.
 +
 +
=== check_is_from_devel :regexp ===
 +
 +
Checks that each package in the request originates from a project the matches the regexp provided as a parameter.
 +
 +
== Resolving Requests ==
 +
 +
Package : [https://build.pub.meego.com/package/show?package=boss-participant-resolverequest&project=Project:MINT boss-participant-resolverequest]
 +
 +
=== change_request_state ===
 +
 +
Used to accept or decline a submit request.
 +
 +
Parameters:
 +
* :action (accept/reject) : Determines what to do with the request
 +
 +
Fields:
 +
* 'msg' : The contents of the 'msg' array in the workitem is used as the action message
 +
 +
Config:
 +
* See [[#OBS / BuildService Participants]]
 +
 +
=== build_trial ===
 +
 +
=== revert_trial ===
 +
 +
 +
==  Changelog ==
 +
 +
GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-getchangelog
 +
 +
* branch skynet
 +
 +
=== get_changelog ===
 +
 +
Gets the .changes file from the project/package and puts it into the
 +
'changelog' field.  Note that for SRCSRV_REQUEST_*, project is the
 +
_target_ and may not return the expected log. 
 +
Thus get_relevant_changelog may be more relevant for that case.
 +
 +
Dependencies:
 +
* /etc/skynet/
 +
 +
=== get_relevant_changelog ===
 +
 +
Gets the .changes file for the source project/package/revision and
 +
does a diff against the target project/package putting the 'added'
 +
lines into a 'relevant_changelog' field for each package in the
 +
request's actions array.
 +
 +
This is particularly useful for acting on external links such as bug#
 +
or feature# mentioned in the new changelog lines.
 +
 +
The complexity of a diff provides for situations where multiple
 +
changelog entries are made in one area of a project before the package
 +
is finally accepted.
 +
 +
== Bugzilla ==
 +
 +
Interacts with bugzilla to:
 +
* add comments to bugs
 +
* change bug status
 +
 +
Links :
 +
* GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-bugzilla
 +
* Package : https://build.pub.meego.com/package/show?package=boss-participant-bugzilla&project=Project:MINT:Testing
 +
* Configuration : The file at /etc/skynet/bugzilla.conf needs to be edited so that the participant can communicate with the Bugzilla instance. The file has lots of comments to explain the settings.
 +
 +
Prerequisites :
 +
* Bugzilla with REST api installed (https://wiki.mozilla.org/Bugzilla:REST_API)
 +
* get_relevant_changelog
 +
 +
Takes the following parameters (can be different depending on the target bugzilla):
 +
* status :          UNCONFIRMED/NEW/ASSIGNED/REOPENED/RESOLVED/VERIFIED/CLOSED
 +
* resolution :      FIXED/INVALID/WONTFIX/DUPLICATE/WORKSFORME/MOVED
 +
For the comment :
 +
* comment :          Comment text for the bug
 +
or
 +
* template :        Cheetah template file passed the workitem hash
 +
 +
== Documentation ==
 +
 +
== Image Creation ==
 +
== Notification ==
== Notification ==
Line 66: Line 180:
=== notify_irc :msg, :irc_channel ===
=== notify_irc :msg, :irc_channel ===
-
#TODO IRC notification to an IRC bot.  
+
#TODO IRC notification to an IRC bot.
-
 
+
-
== OBS process / workflow ==
+
-
 
+
-
 
+
-
GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-launcher-robogrator
+
-
 
+
-
NOTE: skynet branch for now
+
-
Package : https://build.pub.meego.com/package/show?package=boss-launcher-robogrator&project=Project:MINT:Testing
+
== OBS / BuildService Participants ==
-
=== robogrator ===
+
Several participants interact with the OBS using the buildservice library.
-
Listens to the obsEvent queue for OBS events and launches ruote processes from
+
-
the matching namesepace (directory hierarchy) configured in /etc/skynet/robogrator.conf
+
-
http://wiki.meego.com/Release_Infrastructure/BOSS/OBS_Event_List
+
They use the skynet configuration system to look for an 'oscrc' value
 +
in the [obs] section.
 +
eg
 +
<code>
 +
[obs]
 +
oscrc = /etc/skynet/default.oscrc
 +
</code>
-
=== standard_workflow_handler ===
+
This is a normal oscrc file (mode 600) and should contain [apiurl] sections with
-
Reference implementation of how to do useful things with OBS events.
+
an aliases section that includes the namespace value set by the OBS in
 +
the obsEvent (see BSConfig.pm)
 +
eg:
 +
<code>
 +
[https://api.pub.meego.com]
 +
aliases=OBS
 +
user=<user>
 +
passx=<passx>
 +
</code>

Latest revision as of 09:25, 30 July 2011

List of participants ported / implemented for BOSS SkyNET :

Contents

Installation Prerequisites

Some partiticipants will require the osc tool to interact with OBS. This will be installed as a dependency to relevant participants. The version included in Debian is too old and the required repository must be added:

cat <<EOF > /etc/apt/sources.list.d/MINT-tools.list
deb http://download.opensuse.org/repositories/openSUSE:/Tools/Debian_6.0/ /
EOF

OBS prechecks

GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-prechecks

Package : https://build.pub.meego.com/package/show?package=boss-participant-prechecks&project=Project:MINT:Testing

Configuration : The file at /etc/oscrc needs to be edited so that these participants can communicate with the OBS instance.

check_already_testing

Compares the checksum of the packages being submitted to packages of the same name possibly in the Testing project. If the checksum matches it sets STATUS = FAILED

This is for over-eager developers - or if two people in a team submit close together.

check_no_changes

Compares the checksum of the packages being submitted to packages of the same name possibly in the Target project. If the checksum matches it sets STATUS = FAILED

Developers sometimes submit without doing a proper update - this catches that situation.

check_multiple_destinations

Checks if the request tries to submit packages to multiple projects at the same time and sets STATUS = FAILED if so

check_package_is_complete

Checks if each of the packages being submitted contains at least the following files :

 * Source tarball : *.tar.gz *.tar.bz2 or *.tgz
 * Changes file : *.changes
 * Spec file : *.spec

and sets STATUS = FAILED if not

Nb the presence of the .changes file is important for the changelog participants to operate correctly

check_package_built_at_source

Prerequisite : check_has_valid_repo

Checks if the packages being submitted are built successfully against the designated target repository for the architectures of interest and sets STATUS = FAILED if not

check_spec

Checks if the spec file of each of the packages being submitted is valid. Currently the only validity check applied is that it shouldn't contain the %changelog tag and sets STATUS = FAILED if it does

OBS is responsible for inserting the .changes file contents into the spec file.

get_submitter_email

Gets the request submitter email from OBS and makes sure it is not an empty string sets STATUS = FAILED otherwise.

check_submitter_is_maintainer

Checks the request submitter is actually a maintainer in the source project from which the request is origination, sets STATUS = FAILED otherwise.

check_has_valid_repo

Finds a repository in the source project that builds ONLY against a certain target project / repo , sets STATUS = FAILED if it does not find one.

check_has_relevant_changelog

Prerequisite : get_relevant_changelog

Checks that each package in the request actions has a non empty relevant change entries field.

Use this if you want to enforce that new entries be added to the .changes file before allowing a request to be accepted.

check_is_from_devel :regexp

Checks that each package in the request originates from a project the matches the regexp provided as a parameter.

Resolving Requests

Package : boss-participant-resolverequest

change_request_state

Used to accept or decline a submit request.

Parameters:

  •  :action (accept/reject) : Determines what to do with the request

Fields:

  • 'msg' : The contents of the 'msg' array in the workitem is used as the action message

Config:

build_trial

revert_trial

Changelog

GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-getchangelog

  • branch skynet

get_changelog

Gets the .changes file from the project/package and puts it into the 'changelog' field. Note that for SRCSRV_REQUEST_*, project is the _target_ and may not return the expected log. Thus get_relevant_changelog may be more relevant for that case.

Dependencies:

  • /etc/skynet/

get_relevant_changelog

Gets the .changes file for the source project/package/revision and does a diff against the target project/package putting the 'added' lines into a 'relevant_changelog' field for each package in the request's actions array.

This is particularly useful for acting on external links such as bug# or feature# mentioned in the new changelog lines.

The complexity of a diff provides for situations where multiple changelog entries are made in one area of a project before the package is finally accepted.

Bugzilla

Interacts with bugzilla to:

  • add comments to bugs
  • change bug status

Links :

Prerequisites :

Takes the following parameters (can be different depending on the target bugzilla):

  • status : UNCONFIRMED/NEW/ASSIGNED/REOPENED/RESOLVED/VERIFIED/CLOSED
  • resolution : FIXED/INVALID/WONTFIX/DUPLICATE/WORKSFORME/MOVED

For the comment :

  • comment : Comment text for the bug

or

  • template : Cheetah template file passed the workitem hash

Documentation

Image Creation

Notification

GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-notify

NOTE: skynet branch for now

Package : https://build.pub.meego.com/package/show?package=boss-participant-notify&project=Project:MINT:Testing

notify

Email notification based on templates.

notify_irc :msg, :irc_channel

  1. TODO IRC notification to an IRC bot.

OBS / BuildService Participants

Several participants interact with the OBS using the buildservice library.

They use the skynet configuration system to look for an 'oscrc' value in the [obs] section. eg [obs] oscrc = /etc/skynet/default.oscrc

This is a normal oscrc file (mode 600) and should contain [apiurl] sections with an aliases section that includes the namespace value set by the OBS in the obsEvent (see BSConfig.pm) eg: [1] aliases=OBS user=<user> passx=<passx>

Personal tools