-
Notifications
You must be signed in to change notification settings - Fork 2
Description
@eenblam and I talked today about build pipelines and standardizing them so we can catch inevitable mistakes before pull requests are merged. Assuming everyone is okay with using travis-ci.org to start with this (we can always add/switch later), the table below can track our progress in adding a baseline of automated testing to each of our major system component repositories.
Definitions
-
.travis.yml - The repo has this file that configures travis
-
Travis Badget - The README of the repo has a pretty badge to show how great the build is
-
Deployable - When the build passes in master, the project should be 'deployed' automatically. e.g. firmware builds might be deployed to a publicly accesible URL for people to download from. Web apps might get automatically deployed to staging.
- sudomesh/monitor
-
Heroku Pipeline. Any Pull Request can be built/deployed as a "Review App". Once merged to master, Heroku can wait until CI passes (e.g. tests pass) and only then deploy to a peoplesopen-monitor-production app.
(Heroku Pipeline is a little opaque and definitely nonfree, but wanted to prototype using it as the quickest way to have a reasonable separation between deploying new branches and deploying prod. I hope we use something else in the future, and the whole pipeline can be encoded in a file in this repo).
The Heroku Pipeline is called peoplesopen-monitor and is owned by a new sudomesh heroku team that @eenblam created. Inquire to be added to it.
-
- Travis creates git tags and pushes to github as release
-
- sudomesh/exitnode
- Travis should be able to build and run the process
- It makes sense to do an automating staging deploy to ensure the deploy scripts work
- Eventually can deploy to production as well using same, tested deploy script
- tagged releases
- sudowrt-firmware
- Deploy built docker image
- Deploy all builds, even pre-release ones to ??? builds server??, s3?
- Deploy master or tagged builds to build server, zemondo
- tagged releases
- peoplesopen-front
- travis npm test
- Automate deployment to staging
- Automate deployment to production
- tagged releases
- peoplesopen-dash
- travis-ci tests
- Staging deploys (won't work just like home node, but can do cursory tests)
- Tag git releases in release branch
- sudomesh/monitor
-
Versioned releases - Not every commit in the repository makes sense to be officially supported. Instead, we can use git tags to mark known-working versions of the code, and only support or test at these milestones. If anyone has a bug, it is invaluable to know with the bug report what version of the code they were using.
-
Staging - Even when the build passes, there can still be bugs in the software or the deployment process. Quality in production can be improved by first doing a practice deploy to a production-like 'staging' environment where actual humans can do a final round of testing and acceptance. Without staging, we test in production, and users are worse off for it.
| Software Project | .travis.yml | Travis Badge in README | Deployable | Versioned Releases | Staging |
|---|---|---|---|---|---|
| sudomesh/monitor | yes | Heroku Pipeline | PR | peoplesopen-monitor-staging | |
| sudomesh/exitnode | PR | ||||
| sudomesh/sudowrt-firmware | yes | ||||
| sudomesh/peoplesopen-dash | yes | ||||
| sudomesh/peoplesopen-front | yes | PR | peoplesopen-front-staging | ||
| sudomesh/meshnode-database |