The following are some hopefully-helpful pointers to common conventions we’re using across most automation projects. Their adoption aims to make automation easily repeatable, runnable, more reliable, and with clearer output. This list is neither exhaustive nor authoritative, but we strive to keep it as up-to-date and relevant as possible.
Purpose: Particularly relevant for our Python packages (which are used themselves in other testing projects and development repos), quite a few of our projects have implemented Coveralls code-coverage/analysis tool.
For a real-world example of code removal that Coveralls caught, see https://github.com/mozilla/FoxPuppet/pull/162#issuecomment-373110700
Dependencies + Virtual Environments¶
Purpose: pyup.io helps us manage updating our dependencies and requirements.
There are a few scenarios for its use:
Purpose: We use pipenv for managing virtual environments and installing dependencies.
Purpose: We use Docker to help ensure consistent, portable builds, with dependency/environment control.
In most cases, we build our Docker image directly from its master branch in GitHub, in any one (or combination) of the following: Travis CI, Circle CI, and Jenkins.
Typically, we use two (2) main files, for Docker:
For both of these files, see the official docs at https://docs.docker.com/engine/reference/builder
We prefer tests running in Jenkins to use a Jenkinsfile (and Docker, as much as possible).