1583
Comment: + more
|
5184
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
There are (at least) two ways to run your own private patchbot, that will report its results to the trac server. In any case, it is better to have disk space available and a powerful enough machine. == Run on all tickets == |
{{{ ┌─┬──────┐ │░│ ⊙ ʘ │ SageMath patchbot │░│ │ │░│ ──── │ ╘═╧══════╛ }}} == Running the patchbot == |
Line 9: | Line 12: |
* Install the patchbot using "sage -i patchbot" | * Install the patchbot using '''sage -i patchbot''' (warning: the current spkg in sage is not up-to-date) |
Line 11: | Line 14: |
* Run the patchbot using "sage -patchbot" | * (2015-04) The latest available version can be installed using '''sage -i http://chapoton.perso.math.cnrs.fr/patchbot-2.3.3.spkg''' |
Line 13: | Line 16: |
I will run forever, as long as it finds a ticket to work on. Tickets are only considered if their authors are trusted. | * Run the patchbot using '''sage -patchbot''' |
Line 15: | Line 18: |
== Run on chosen tickets == | * (2015-04) '''sage -patchbot''' does not work with patchbot 2.3.2, use '''sage -patchbot --skip-base''' or upgrade to 2.3.3. |
Line 17: | Line 20: |
Here is a proposal on how to use the patchbot only on tickets you want to work on. | It is safer to run the patchbot in an unused sage install. |
Line 19: | Line 22: |
'''Warning''': this works for a mercurial setting, not tested for the new git setting. | It will run forever, as long as it finds a ticket to work on. Tickets are only considered if their authors are trusted. |
Line 21: | Line 24: |
* install the latest sage development release (download from http://www.sagemath.org/download-latest.html and make) | Please consider registering [[buildbot/owners|here]] if you run a patchbot. It is helpful to know whom to contact. |
Line 23: | Line 26: |
* install the latest patchbot (clone from http://github.com/robertwb/sage-patchbot) | You can run a specific ticket by using '''sage -patchbot --ticket=N''' where N is a ticket number such as 12345. |
Line 25: | Line 28: |
* in a terminal, inside your_sage_home_dir, "./sage -clone 0" | Several other options are available, see '''sage -patchbot --help''' |
Line 27: | Line 30: |
* in a terminal: "cd sage-patchbot/src" then "ipython" | '''--skip-base''' will skip the check that the base sage installation is sane. |
Line 29: | Line 32: |
* in ipython, "from patchbot import Patchbot", then "P = Patchbot('your_sage_home_dir',"http://patchbot.sagemath.org/",None,plugin_only=True)" or "P = Patchbot('your_sage_home_dir',"http://patchbot.sagemath.org/",None)" | '''--plugin-only''' will only build and run the plugins but not the tests (much quicker but less useful). |
Line 31: | Line 34: |
The first one will only run the plugins (much faster), the second one will run all the tests (much slower). | '''--safe-only''' will only test branches that only change files inside the directory "src/sage" (this is the case by default). |
Line 33: | Line 36: |
* Then choose your favorite ticket number N and "P.test_a_ticket(N)" | == Configuration == |
Line 35: | Line 38: |
It is important that sage is in its initial state when running the patchbot (sage-main branch with no patch applied). | 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) || || ''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: http://patchbot.sagemath.org/ticket/0/ On your machine, the patchbot writes a summary of its activities in $SAGE_ROOT/logs/patchbot/history.txt |
┌─┬──────┐ │░│ ⊙ ʘ │ SageMath patchbot │░│ │ │░│ ──── │ ╘═╧══════╛
Running the patchbot
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-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
(2015-04) sage -patchbot does not work with patchbot 2.3.2, use sage -patchbot --skip-base or upgrade to 2.3.3.
It is safer to run the patchbot in an unused sage install.
It will run forever, as long as it finds a ticket to work on. Tickets are only considered if their authors are trusted.
Please consider registering here if you run a patchbot. It is helpful to know whom to contact.
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 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) |
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