-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
All system components should have consistent continuous testing and build pipelines #34
Comments
Summarizing discussion about sudomesh/peoplesopen-front during BYOI office hours:
@gobengo: Yeah, we don't necessarily need tests for the website. I'm shooting for, at a minimum, getting coverage around the build process. @eenblam: Since we're trying to answer the question of what "deployability" means for this repo, maybe we can focus on adding infrastructure-related scripts so we can smoothly spin up a new droplet, secure it, redeploy the site, etc. Also cc @bennlich |
I think that "verifying deployability" for a lot of our stuff will have more to do with having solid provisioning scripts that we can use to spin up test instances and run basic integration tests against. To this end, we might consider setting up a Digital Ocean team. |
We also discussed standardizing on adding a |
Relevant notes from @jhpoelen in the mailing list:
|
Let's not forget meshnode-database--one-stop-shopping for all your mesh ip needs :) |
Update: @jhpoelen transferred the monitor app to the new Heroku team, so I've set it as production and set |
@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.
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
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.
The text was updated successfully, but these errors were encountered: