Infrastructure¶
Both madgui and cpymad make use of so-called continuous integration services that are triggered whenever a branch is updated on github. When this happens, the following is done with all supported python versions:
package is built
tests are executed
style checks and consistency checks are performed
update and upload documentation, if on master
upload new releases, if a tag was pushed
![digraph {
rankdir=LR;
node [
shape=rectangle,
fontsize=10,
style=rounded,
];
edge [
fontsize=10
];
// action nodes:
{
node [
shape=diamond,
width=0.7,
height=0.5,
fontsize=9,
fixedsize=true,
fillcolor="#eeeeee",
style=filled,
];
build; test; upload;
}
User -> github [label="push"];
github -> ci [label="notify"];
ci -> github [label="pull"; style=dashed, color=gray, constraint=false];
ci -> build -> test;
test -> coveralls [label="report"];
test -> upload [
headlabel="tags on success",
labeldistance=3.0,
labelangle=-40,
];
upload -> pypi [label="release"];
upload -> github2 [
headlabel="doc",
labeldistance=6,
labelangle=10,
constraint=false,
];
{rank = same; github2; pypi;}
{rank = same; ci; build; test; upload;}
ci [label = "CI"];
pypi [label = "PyPI"];
github2 [label = "github"];
}](../_images/graphviz-3fb7802db9bb6136abf4da227f97966e04c4d3a3.png)
The following platforms are used:
Travis CI: executes linux tests and builds documentation
Appveyor CI: executes windows tests, currently only for cpymad
coveralls: test coverage reports are uploaded here
PyPI: this is where new versions for installation via pip are uploaded
The exact build recipes are defined in the files .travis.yml
and
.appveyor.yml
.
The madgui/cpymad maintainer must make an account on both Travis and Appveyor (login with github should be fine) in order to receive reports about build and test failures.
Further resources: