This document describes how individual tasks are approved, tested, merged, and deployed.
- Our process is inspired by Raycast & their no code review process (with some modifications).
- We use Linear for project management. We use roadmaps for planning, fibonacci numbers for complexity rating and cycles for momentum tracking.
master/main: production ready, stable code.development: pre-production code that has been developed and is ready for QA and when tested will be merged and deployed to production.
Disposable branches that can be created for proposed changes.
Format: #{user}/#{identifier}-#{title}
- User: The user who is introducting the change.
- Ticket ID: Linear's unique ID for the ticket that describes the task that this branch addresses.
- Title: Short readable title for the branch with words separated by
-.
e.g. daniel/ISQ-77-fix-tests-on-github-actions
- Tasks (tasks not user stories) are created in Linear. The tasks that prioritized are planning into a cycle.
- If this task is urgent, it is prioritized in the current cycle.
- Task is picked up, branch out from
developmentfor development.
- Bug report is analyzed to be prioritized immediately or planned for a later cycle. Prioritization is based on the impact and criticality of the issue.
- Expedited bugs are branched out from
master/main.
- After development, add any automated testing required and manually test features with all possible edge cases.
- Ensure all automated tests pass - including Rubocop and any styling changes to be done.
- Create a PR back to the same branch where you branched off from.
- Add all the details required to create the PR - instructions in the PR template.
- Test your individual task in isolation locally. Ensure all automated tests pass.
- You can optionally request someone else from the team to review your work.
- Once you are happy with your work, you can merge your PR into
development.
- Create a deploy PR from
developmenttomaster/main. - Go through each PR that were merged and for each:
- In the deploy PR add a list of features that have been merged into it with reference to each individual PR.
- Copy over the post-deploy notes and aggregate it into the deploy branch.
- Run automated testing and ensure all tests still pass. If not, tests need to be fixed manually - loop each developer responsible for that part of the change.
- Deploy to the staging server and copy over the production database. Run post-deploy scripts on the staging server.
- Test everything together on the staging server. If there are any issues, loop in developers as required to fix the code they introduced.
- Deploy to production server & action post-deploy actions.
- Quick test on the production server.
- Merge deploy branch into
master/main& publish a release tag on GitHub.
- Replicate the issue, fix & test locally.
- PR is made back into
master/maindirectly. - Merge the PR and deploy to production.
- Verify issue has also been resolved on production. Then mark the issue as resolved in our error tracking software.
- Communicate back to the reporter of the bug & ask for verification on their end also.
- Draft a new release.
- Title with the main highlight.
- Description with a list of tasks that were merged - automated with the release drafter task.
- Tag version number format:
[Major].[Minor].[Patch](https://semver.org)