Differences between revisions 34 and 45 (spanning 11 versions)
Revision 34 as of 2015-08-27 07:38:51
Size: 5240
Editor: chapoton
Comment:
Revision 45 as of 2015-09-29 17:29:54
Size: 5817
Editor: chapoton
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
== Installing the patchbot ==

It is safer to run the patchbot in an unused sage install.

 * --(Install the patchbot using '''sage -i patchbot''' )--

 ||<#FFFF00> '''WARNING:''' the current spkg in sage is not up-to-date ||

 * The latest version 2.5.2 can currently (2015-09) only be found there: [[http://trac.sagemath.org/ticket/18937|#18937]]

 * An older version can be installed using '''sage -i http://chapoton.perso.math.cnrs.fr/patchbot-2.3.9.spkg'''

NOTA BENE: the patchbot is using the system python, not the python provided by sage.

Moreover, some python packages are now required: ('''python-dateutil''' (ok for py2 and py3) ; '''pytz''' (python-package) or '''python-tz''' ?)

Other dependencies: shell commands '''git'''; '''tar'''; '''wget'''


||<#98FF98> Please consider registering [[buildbot/owners|here]] if you run a patchbot. It is helpful to know whom to contact.||
Line 9: Line 30:

You can let the patchbot choose the tickets it will run on.

 * --(Install the patchbot using '''sage -i patchbot''' )-- (warning: the current spkg in sage is not up-to-date)

 * (2015-05) The latest available version can be installed using '''sage -i http://chapoton.perso.math.cnrs.fr/patchbot-2.3.9.spkg'''
Line 18: Line 33:
It is safer to run the patchbot in an unused sage install.

Some python packages are now required: ('''python-dateutil'''; '''pytz''' or '''python-tz''' ?)

Other dependencies: shell commands '''git'''; '''wget'''
Line 26: Line 35:
Please consider registering [[buildbot/owners|here]] if you run a patchbot. It is helpful to know whom to contact. You can let the patchbot choose the tickets it will run on.
Line 60: Line 69:
|| option || type || default || description ||
|| ''time_of_day'' || string || "0-0" || (example "0-0" or "22-7") an interval of time during which the patchbot is active ||
|| ''bonus'' || dictionary || ''see below'' || some bonus to influence the order in which tickets are tested (see below) ||
|| ''safe_only'' || boolean || true || whether to only test "safe" tickets modifying only src/sage or src/doc ||
|| ''skip_base'' || boolean || false || whether to run testlong on the base before testing tickets ||
|| ''parallelism'' || integer || 3 || the number of thread to execute when compiling or testing ||
|| ''idle'' || integer || 300 || seconds to wait when network is not working or there are no tickets available ||
|| ''timeout'' || integer || 10800 || ||
|| ''base_branch'' || string || develop || the name of the git branch to synchronized with the develop branch on trac ||
|| ''plugins'' || list of strings || ''see below'' || the plugins to use ||
|| option           || type || default || description ||
|| ''time_of_day''           || string || "0-0" || (example "0-0" or "22-7") an interval of time during which the patchbot is active ||
|| ''bonus''           || dictionary || ''see below'' || some bonus to influence the order in which tickets are tested (see below) ||
|| ''extra_trusted_authors'' || list || empty || a list of logins or full names who will be considered as trusted ||
|| ''saf
e_only''           || boolean || true || whether to only test "safe" tickets modifying only src/sage or src/doc ||
|| ''skip_base''           || boolean || false || whether to run testlong on the base before testing tickets ||
|| ''parallelism''           || integer || 3 || the number of thread to execute when compiling or testing ||
|| ''idle''           || integer || 300 || seconds to wait when network is not working or there are no tickets available ||
|| ''timeout''           || integer || 10800 || ||
|| ''base_branch''           || string || develop || the name of the git branch to synchronized with the develop branch on trac ||
|| ''plugins''           || list of strings || ''see below'' || the plugins to use ||

┌─┬──────┐
│░│ ⊙  ʘ │        SageMath patchbot
│░│      │
│░│ ──── │
╘═╧══════╛

Installing the patchbot

It is safer to run the patchbot in an unused sage install.

NOTA BENE: the patchbot is using the system python, not the python provided by sage.

Moreover, some python packages are now required: (python-dateutil (ok for py2 and py3) ; pytz (python-package) or python-tz ?)

Other dependencies: shell commands git; tar; wget

Please consider registering here if you run a patchbot. It is helpful to know whom to contact.

Running the patchbot

  • Run the patchbot using sage -patchbot

It will run forever, as long as it finds a ticket to work on. Tickets are only considered if their authors are trusted.

You can let the patchbot choose the tickets it will run on.

You can run a specific ticket by using sage -patchbot --ticket=N where N is a ticket number such as 12345.

Several other options are available, see sage -patchbot --help

--skip-base will skip the check that the base sage installation is sane.

--plugin-only will only build (sage and the doc) and run the plugins but not the tests (much quicker but less useful).

--safe-only will only test branches that only change files inside the directory "src/sage" (this is the case by default).

Configuration

By default, the patchbot should run without needing to tune its configuration. You can use a specific configuration file in the json format and run the patchbot with

sage -patchbot --config=fullpath/config_file.json

The json format mostly looks like a python dictionary. Here is an example of a valid configuration file

    {"bonus": {"niceguy": 200, "needs_work": -20},
     "use_ccache": false,
     "safe_only": true,
     "skip_base": true,
     "time_of_day": "22-7",
     "parallelism": 8
    }

Note that the booleans must be written with no capital first letter.

The config will be read again between every run, hence it allows live configuration of the patchbot.

The list of configurable entities are::

option

type

default

description

time_of_day

string

"0-0"

(example "0-0" or "22-7") an interval of time during which the patchbot is active

bonus

dictionary

see below

some bonus to influence the order in which tickets are tested (see below)

extra_trusted_authors

list

empty

a list of logins or full names who will be considered as trusted

safe_only

boolean

true

whether to only test "safe" tickets modifying only src/sage or src/doc

skip_base

boolean

false

whether to run testlong on the base before testing tickets

parallelism

integer

3

the number of thread to execute when compiling or testing

idle

integer

300

seconds to wait when network is not working or there are no tickets available

timeout

integer

10800

base_branch

string

develop

the name of the git branch to synchronized with the develop branch on trac

plugins

list of strings

see below

the plugins to use

bonus

There are two kinds of bonus, the one related to tickets:

  • logins (counted x2 if author and x1 if participant)

  • component (e.g. "linear algebra", "combinatorics", ...)

  • status (e.g. "needs_review", "positive_review", ...)

  • priority (e.g "blocker", "critical", ...)

and the one related to other bot reports:

  • behind: weight the number of commits behind master

    • (and count for -1 if the commit is not locally available)
  • applies: whether previous bots succeeded when merging the branch with the current beta

  • unique : give less chance for already seen tickets

The defaults are

 bonus = {
     "blocker"        : 100,
     "critical"       : 60,
     "major"          : 10,
     "minor"          : 0,
     "needs_review"   : 1000,
     "positive_review": 500,
     "needs_info"     : 0,
     "needs_work"     : 0
     "unique"         : 40,
     "applies"        : 20,
     "behind"         : 1
    }

But you could add

 bonus = {
     "vbraun": 10,
     "inconito": -5,
     "linear programming": 200,
     "finance": -200
     "14382": 100,
     "15777": 100
     }

Looking at patchbot activities

Remotely, you can have a look at the last tickets tested by patchbots here:

On your machine, the patchbot writes a summary of its activities in $SAGE_ROOT/logs/patchbot/history.txt