-
Notifications
You must be signed in to change notification settings - Fork 56
Adopt a Drain SF Development and Deployment Processes
Jesse Szwedko edited this page May 12, 2018
·
3 revisions
This document describes the development workflow in use for the Adopt-a-Drain implementation for the City of San Francisco.
- Use Github Issues for filing, collaborating on, and
resolving issues
- Use tags to make filtering easier
- Make use of
@<username>
to tag users so that they are notified - See Mastering Issues for more guidance
- Use the Main Github Project for organizing and prioritizing
issues.
- After creating an issue, add it as a card to the board (unless it shouldn't
be worked on in the near future).
- Useful filter to use
is:open is:issue
-- this will show you only open issues.
- Useful filter to use
- Generally only issues should be added as cards to the board. If you are working on a pull request and an issue doesn't exist, create an issue for tracking purposes. This also makes it easier for other users to see what open issues there are.
- Columns:
- Backlog
- Where issues should generally go first
- Ready
- Issues that are ready for development
- Issues should sorted in priority order (highest at the top)
- In-Progress
- Issues that have an assignee that are actively in development
- Blocked
- Issues that are blocked by some other action (e.g. getting feedback)
- Done
- Completed issues
- Will be cleaned on a regular basis
- Backlog
- After creating an issue, add it as a card to the board (unless it shouldn't
be worked on in the near future).
See Installation for how to install and run the application on your local computer. Requires Ruby (rbenv is recommended) and PostgreSQL or Docker (to run postgresql via docker-compose).
Typical workflow:
- Find an issue that you wish to work on
- Assign yourself to the issue
- Move the issue to the
In-Progress
column on the project page - Create a
git
branch locally - Write code locally to resolve the issue
- Make sure to include tests if appropriate
- Use
./bin/rails s
to run the application locally - Break up work into several commits if there are disparate changes
- See a note about git commit messages to see notes about writing good commit messages
- Run the tests via
./bin/rake
- Push branch up to Github
- Open a pull request against the
master
branch- This will run tests via TravisCI
- Tag individuals for feedback if appropriate
- A Heroku review app will automatically be deployed
with your changes
- This review app can be used to solicit UI or UX feedback from others
- The default users
[email protected]/password
and[email protected]/password
will exist and can be used for testing (you can also register new users as usual)
- A Heroku review app will automatically be deployed
with your changes
- For larger changes, ensure that you receive feedback before merging
- When the pull request is green and you've gotten feedback for larger changes, merge the pull request via the Github UI
The application is hosted on Heroku as adoptadrainsf
. There is also a staging
application named adoptadrainsf-staging
that you can access via
Adopt-a-Drain SF Staging.
Changes are generally pushed to staging first, and then promoted to production.
- See How Heroku Works for an overview of what Heroku is and how applications are deployed to it.
- All changes on the
master
branch will automatically be released to theadoptadrainsf-staging
Heroku application - You can promote these changes to the
adoptadrainsf
Heroku application (which is what serves Adopt-a-Drain SF via the Heroku Pipelines UI (orheroku pipelines:promote --app adoptadrainsf-staging
if you have the Heroku Toolbelt installed).- Before doing this, use
git diff
with the refs currently deployed to staging and to production to determine the set of changes that are going to be released. Do some spot testing on the staging application to determine that the changes work as expected and that the critical user flows (drain adoption) haven't been broken. - Once released, verify that Adopt-a-Drain SF is still up
- Before doing this, use