5769
Comment:
|
6448
no longer use sage -patchbot
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
│░│ ⊙ ʘ │ SageMath patchbot | │░│ ⊙ ʘ │ SageMath patchbot |
Line 10: | Line 10: |
It is safer to run the patchbot in an unused sage install. | It is safer to run the patchbot in an unused sage install. |
Line 12: | Line 12: |
* --(Install the patchbot using '''sage -i patchbot''' )-- | ||<style="width: 99%; text-align: center;background-color: #FFCCCC;">WARNING: Install mode has changed a lot with patchbot ≥ 2.6.0|| |
Line 14: | Line 14: |
||<#FFFF00> '''WARNING:''' the current spkg in sage is not up-to-date (see [[http://trac.sagemath.org/ticket/18937|#18937]]) || | These are the new instructions. |
Line 16: | Line 16: |
* (2015-05) The latest available version can be installed using '''sage -i http://chapoton.perso.math.cnrs.fr/patchbot-2.3.9.spkg''' | ||<#FFFF66>① Install the patchbot using '''pip install --user git+https://github.com/sagemath/sage-patchbot.git'''|| |
Line 18: | Line 18: |
NOTA BENE: the patchbot is using the system python, not the python provided by sage. | Dependencies: shell commands '''git'''; '''tar'''; '''wget''' |
Line 20: | Line 20: |
Moreover, some python packages are now required: ('''python-dateutil''' (ok for py2 and py3) ; '''pytz''' (python-package) or '''python-tz''' ?) | ||<#98FF98> Please register [[buildbot/owners|here]] if you run a patchbot. It is required to know whom to contact.|| |
Line 22: | Line 22: |
Other dependencies: shell commands '''git'''; '''tar'''; '''wget''' | You can instead use the --owner option. |
Line 24: | Line 24: |
||<#98FF98> Please consider registering [[buildbot/owners|here]] if you run a patchbot. It is helpful to know whom to contact.|| |
|
Line 29: | Line 27: |
* Run the patchbot using '''sage -patchbot''' | |
Line 31: | Line 28: |
It will run forever, as long as it finds a ticket to work on. Tickets are only considered if their authors are trusted. | ||<#FFFF66>② Run the patchbot using '''python -m sage_patchbot.patchbot --sage-root=XXXX'''|| (You can try to use '''pip3''' and '''python3''' instead if you feel bold enough. We offer no guarantee for the moment.) The '''--sage-root''' parameter is required. Your patchbot will run forever, as long as it finds a ticket to work on. Tickets are only considered if their authors are trusted. |
Line 35: | Line 38: |
You can run a specific ticket by using '''sage -patchbot --ticket=N''' where N is a ticket number such as 12345. | You can run a specific ticket by using '''--ticket=N''' where N is a ticket number such as 12345. |
Line 37: | Line 40: |
Several other options are available, see '''sage -patchbot --help''' | Several other options are available, see '''--help''' |
Line 47: | Line 50: |
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 | 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 the option |
Line 49: | Line 52: |
sage -patchbot --config=fullpath/config_file.json | --config=fullpath/config_file.json |
Line 65: | Line 68: |
The list of configurable entities are:: | The list of configurable entities are: |
Line 73: | Line 76: |
|| ''parallelism'' || integer || 3 || the number of thread to execute when compiling or testing || | || ''parallelism'' || integer || 3 || the number of threads to execute when compiling or testing || |
Line 77: | Line 80: |
|| ''sage_root'' || string || || the path to the directory containing the sage installation || | |
Line 130: | Line 134: |
== 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 {{{ cd sage-patchbot/ }}} launch ipython and (for patchbot version ≥ 2.6.2) {{{ from sage_patchbot.patchbot import Patchbot opt = {'sage_root': '/home/platon/sage/', 'owner': 'Sophocle'} P = Patchbot(opt) P.test_a_ticket(14974) }}} The argument dictionary must contain at least (patchbot version ≥ 2.6.2): {{{ {'sage_root': path to the sage local repository} }}} |
┌─┬──────┐ │░│ ⊙ ʘ │ SageMath patchbot │░│ │ │░│ ──── │ ╘═╧══════╛
Installing the patchbot
It is safer to run the patchbot in an unused sage install.
WARNING: Install mode has changed a lot with patchbot ≥ 2.6.0 |
These are the new instructions.
① Install the patchbot using pip install --user git+https://github.com/sagemath/sage-patchbot.git |
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.
Running the patchbot
② Run the patchbot using python -m sage_patchbot.patchbot --sage-root=XXXX |
(You can try to use pip3 and python3 instead if you feel bold enough. We offer no guarantee for the moment.)
The --sage-root parameter is required.
Your patchbot 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 --ticket=N where N is a ticket number such as 12345.
Several other options are available, see --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 the option
--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 |
sage_root |
string |
|
the path to the directory containing the sage installation |
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
cd sage-patchbot/
launch ipython and (for patchbot version ≥ 2.6.2)
from sage_patchbot.patchbot import Patchbot opt = {'sage_root': '/home/platon/sage/', 'owner': 'Sophocle'} P = Patchbot(opt) P.test_a_ticket(14974)
The argument dictionary must contain at least (patchbot version ≥ 2.6.2):
{'sage_root': path to the sage local repository}