(→Notification) |
(Add instructions for osc installation) |
||
| (19 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 8: | Line 16: | ||
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 === | ||
Compares the checksum of the packages being submitted to packages of the same | 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 | 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 === | ||
Compares the checksum of the packages being submitted to packages of the same | 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 = | 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 === | ||
Checks if the request tries to submit packages to multiple projects at the same | Checks if the request tries to submit packages to multiple projects at the same | ||
time and sets STATUS = FAILED if so | time and sets STATUS = FAILED if so | ||
| - | === | + | === check_package_is_complete === |
Checks if each of the packages being submitted contains at least the following | Checks if each of the packages being submitted contains at least the following | ||
files : | files : | ||
| Line 31: | Line 46: | ||
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 === | ||
| + | |||
| + | 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 |
| - | === | + | === check_spec === |
Checks if the spec file of each of the packages being submitted is valid. Currently | 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 | the only validity check applied is that it shouldn't contain the %changelog tag | ||
| Line 42: | Line 63: | ||
OBS is responsible for inserting the .changes file contents into the spec file. | 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 | Gets the request submitter email from OBS and makes sure it is not an empty string | ||
sets STATUS = FAILED otherwise. | sets STATUS = FAILED otherwise. | ||
| - | === | + | === check_submitter_is_maintainer === |
Checks the request submitter is actually a maintainer in the source project from | Checks the request submitter is actually a maintainer in the source project from | ||
which the request is origination, sets STATUS = FAILED otherwise. | 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 | 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 63: | Line 176: | ||
Package : https://build.pub.meego.com/package/show?package=boss-participant-notify&project=Project:MINT:Testing | Package : https://build.pub.meego.com/package/show?package=boss-participant-notify&project=Project:MINT:Testing | ||
| - | === | + | === notify === |
Email notification based on templates. | Email notification based on templates. | ||
| - | === | + | === notify_irc :msg, :irc_channel === |
| - | TODO | + | #TODO IRC notification to an IRC bot. |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | == OBS / BuildService Participants == | |
| - | + | Several participants interact with the OBS using the buildservice library. | |
| - | + | ||
| - | the | + | |
| - | + | 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> | ||
List of participants ported / implemented for BOSS SkyNET :
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
GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-prechecks
Configuration : The file at /etc/oscrc needs to be edited so that these participants can communicate with the OBS instance.
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.
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.
Checks if the request tries to submit packages to multiple projects at the same time and sets STATUS = FAILED if so
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
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
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.
Gets the request submitter email from OBS and makes sure it is not an empty string sets STATUS = FAILED otherwise.
Checks the request submitter is actually a maintainer in the source project from which the request is origination, sets STATUS = FAILED otherwise.
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.
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.
Checks that each package in the request originates from a project the matches the regexp provided as a parameter.
Package : boss-participant-resolverequest
Used to accept or decline a submit request.
Parameters:
Fields:
Config:
GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-getchangelog
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:
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.
Interacts with bugzilla to:
Links :
Prerequisites :
Takes the following parameters (can be different depending on the target bugzilla):
For the comment :
or
GIT : https://meego.gitorious.org/meego-infrastructure-tools/boss-participant-notify
NOTE: skynet branch for now
Email notification based on templates.
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>