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;
    }

}

High-level development flow and Quality Gates`