2892
Comment:
|
6660
red warning
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
│░│ ⊙ ʘ │ SageMath patchbot | │░│ ⊙ ʘ │ SageMath patchbot |
Line 8: | Line 8: |
== Installing the patchbot == It is safer to run the patchbot in an unused sage install. ||<#FFFF66>① Install the patchbot using '''sage -i patchbot'''|| (only works for sage version ≥ 6.10) The patchbot uses the system python, not the python provided by sage. Dependencies: shell commands '''git'''; '''tar'''; '''wget''' ||<#98FF98> Please register [[buildbot/owners|here]] if you run a patchbot. It is required to know whom to contact.|| You can instead use the --owner option (for patchbot version ≥ 2.5.4). ||<#FF0000>WARNING: Install mode may change a lot with patchbot 2.6.0|| |
|
Line 10: | Line 27: |
You can let the patchbot choose the tickets it will run on. | ||<#FFFF66>② Run the patchbot using '''sage -patchbot --server=https://patchbot.sagemath.org'''|| |
Line 12: | Line 29: |
* Install the patchbot using '''sage -i patchbot''' (warning: the current spkg in sage is not up-to-date) * (2015-04) The latest available version can be installed using '''sage -i http://chapoton.perso.math.cnrs.fr/patchbot-2.3.3.spkg''' * Run the patchbot using '''sage -patchbot''' It is safer to run the patchbot in an unused sage install. |
This https server option is needed for the moment, and will be the default in the future. |
Line 22: | Line 33: |
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 30: | Line 41: |
'''--plugin-only''' will only build and run the plugins but not the tests (much quicker but less useful). | '''--plugin-only''' will only build (sage and the doc) and run the plugins but not the tests (much quicker but less useful). |
Line 36: | Line 47: |
By default, the patchbot should run without needing to tune its configuration. You can use a specific configuration file using '''sage -patchbot --config=fullpath/config_file.json''' For the complete list of configurable entities, see the code of the ''get_config'' function in https://github.com/robertwb/sage-patchbot/blob/master/src/patchbot.py. The base patchbot configuration can be found there. All of these settings can be overridden by passing a config file which is treated as a json overlay on these defaults. For example, to let the tickets of user "niceguy" be given some priority, use: {"bonus": {"niceguy": 200}} To give preference to a component you care about, use {"bonus": {"combinatorics": 200}} To avoid the use of ccache, use: {"use_ccache": false} To run only at night, use {"time_of_day": "22-7"} A more complex example of config file could be: |
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 {{{ |
Line 62: | Line 54: |
"use_ccache": false, "safe_only": true, "skip_base": true} |
"use_ccache": false, "safe_only": true, "skip_base": true, "time_of_day": "22-7", "parallelism": 8 } }}} |
Line 69: | Line 64: |
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 threads 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 } }}} |
|
Line 77: | Line 130: |
== using an ipython session == You can try the patchbot inside a ipython session, as follows. First, in the sage directory, create a branch "patchbot/base" by {{{ git checkout develop -b patchbot/base }}} Then, in the patchbot source directory, {{{ In [2]: cd sage-patchbot/src/ In [3]: from patchbot import Patchbot In [4]: P = Patchbot('/home/platon/sage/', 'http://patchbot.sagemath.org', None, False, True, None) In [5]: P.test_a_ticket(14974) }}} The arguments are (patchbot version < 2.5.5): {{{ - sage_root -- path to the sage local repository - server -- http address of the patchbot server - config_path -- ``None`` or path to the json config file - dry_run -- boolean - plugin_only -- boolean - an option class or None }}} The arguments are (patchbot version ≥ 2.5.5): {{{ - sage_root -- path to the sage local repository - server -- http address of the patchbot server - config_path -- ``None`` or path to the json config file - an option class or None }}} |
┌─┬──────┐ │░│ ⊙ ʘ │ SageMath patchbot │░│ │ │░│ ──── │ ╘═╧══════╛
Installing the patchbot
It is safer to run the patchbot in an unused sage install.
① Install the patchbot using sage -i patchbot |
(only works for sage version ≥ 6.10)
The patchbot uses the system python, not the python provided by sage.
Dependencies: shell commands git; tar; wget
Please register here if you run a patchbot. It is required to know whom to contact. |
You can instead use the --owner option (for patchbot version ≥ 2.5.4).
WARNING: Install mode may change a lot with patchbot 2.6.0 |
Running the patchbot
② Run the patchbot using sage -patchbot --server=https://patchbot.sagemath.org |
This https server option is needed for the moment, and will be the default in the future.
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 threads 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
using an ipython session
You can try the patchbot inside a ipython session, as follows.
First, in the sage directory, create a branch "patchbot/base" by
git checkout develop -b patchbot/base
Then, in the patchbot source directory,
In [2]: cd sage-patchbot/src/ In [3]: from patchbot import Patchbot In [4]: P = Patchbot('/home/platon/sage/', 'http://patchbot.sagemath.org', None, False, True, None) In [5]: P.test_a_ticket(14974)
The arguments are (patchbot version < 2.5.5):
- sage_root -- path to the sage local repository - server -- http address of the patchbot server - config_path -- ``None`` or path to the json config file - dry_run -- boolean - plugin_only -- boolean - an option class or None
The arguments are (patchbot version ≥ 2.5.5):
- sage_root -- path to the sage local repository - server -- http address of the patchbot server - config_path -- ``None`` or path to the json config file - an option class or None