Workflow¶
Having a solid and documented workflow is paramount to maintaining a clean codebase when multiple contributors are involved. In this chapter, I’m highlighting some of the conventions I adopted, while also trying to discuss the reasons leading me to these choices.
The following diagram documents how this template makes use of automation and continuous integration platforms, and where they can impact your development workflow. You will find more information about goals and configuration requirements in the Continuous Integration and Standard Tools chapters.
![digraph sm {
size = "5,8"
overlap = False
pad = 1
node [shape = rectangle]
branch [label = "Branch Out"]
code [label = "Develop"]
{ rank = same; code }
localtest [label = "Test"]
{ rank = same; code }
commit [label = "Commit"]
pullreq [label = "Pull Request"]
node [shape = circle]
travis [label = "travis.org"]
{ rank = same; travis }
rtd [label = "readthedoc.io"]
codecov [label = "codecov.io"]
node [shape = rectangle]
lint [labl = "Lint"]
test [label = "Run Tests"]
doc [label = "Build Documentation"]
cov [label = "Record Coverage"]
pass [label = "Pass"]
rebase [label = "Rebase"]
branch -> code
branch -> localtest
branch -> commit
commit -> pullreq
pullreq -> travis
pullreq -> rtd
travis -> lint
travis -> test
travis -> doc
travis -> cov
lint -> pass
test -> pass
doc -> pass
cov -> codecov
codecov -> pass
pass -> rebase
{
rank = same;
travis -> rtd [style = invis];
rankdir = LR;
}
{
rank = same;
lint -> test -> doc -> cov [style = invis];
rankdir = LR;
}
}](../_images/graphviz-bf993ff4f9342c4afe0005a40568af0725737ce4.png)
High-level development flow and Quality Gates`¶