Meego Wiki
Views

Release Infrastructure/BOSS/Participants

From MeeGo wiki
< Release Infrastructure | BOSS(Difference between revisions)
Jump to: navigation, search
(explain usage)
(Add instructions for osc installation)
 
(7 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 78: Line 86:
Checks that each package in the request originates from a project the matches the regexp provided as a parameter.
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 ==
==  Changelog ==
Line 89: Line 119:
Gets the .changes file from the project/package and puts it into the
Gets the .changes file from the project/package and puts it into the
'changelog' field.  Note that for SRCSRV_REQUEST_*, project is the
'changelog' field.  Note that for SRCSRV_REQUEST_*, project is the
-
*target* and may not return the expected log.  get_relevant_changelog
+
_target_ and may not return the expected log.   
-
may be more relevant
+
Thus get_relevant_changelog may be more relevant for that case.
Dependencies:
Dependencies:
Line 99: Line 129:
Gets the .changes file for the source project/package/revision and
Gets the .changes file for the source project/package/revision and
does a diff against the target project/package putting the 'added'
does a diff against the target project/package putting the 'added'
-
lines into the 'relevant_changelog' field.
+
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#
This is particularly useful for acting on external links such as bug#
Line 110: Line 141:
== Bugzilla ==
== 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 ==
== Documentation ==
Line 130: Line 181:
=== 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 / 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
 +
<code>
 +
[obs]
 +
oscrc = /etc/skynet/default.oscrc
 +
</code>
 +
 +
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:
 +
<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