Development Lifecycle
How to develop a feature
- Create a new branch off main. Call it something sensible. See git conventions.
- Develop your lovely feature. Deploy to
devmanually (via the CLI tool or via the "Deploy to DEV" GitHub action from your draft branch). Note: We will need to collaborate slightly to make sure we don't deploy over each other. This is whydevis manually managed rather than auto deploy. You will also need to run migrations manually to dev, you can do this with the GH action. - Once the feature is ready open a PR or mark your existing draft branch as ready for review (no branch should be ready for review unless its ready for review). Write a sensible summary of the PR, or use GitHub copilot to do it for you.
- Plop the PR in #eng-prs channel and pester people until you get a review. Reviewers can use deployment previews for
gf-app-tngif they need to see the feature working. - Once its good to merge, merge into main, and it will automatically get deployed to
stagingenvironment env (including RDS migrations). Here QA can be performed. - Once all features in QA are QAed we can prepare a full production deployment by opening a PR from
maintoprod. Write a summary or use GitHub copilot. Merging this PR will automatically deploy to theprodenv (including RDS migrations). Often we will perform more 'product QA' here which is less about seeing if the feature matches the acceptance criteria, more about 'is it good enough from the design'.
Possible avenues for optimisations and TBDs:
- It would be ideal if per feature QA could be carried out before merge. There is nothing stopping us QAing from dev other than the chance of things being deployed over if we leave them in QA a long time. This would mean that
mainis always deployable. TBD.
Feature flags
Note that we encourage early and often deployment to prod. For new features we would prefer to use a flag to be able to deploy the feature and perform some testing in production... the reason for this is that we get much better testing ability using 'real' data and 'real' client accounts often.
Obviously for changes to existing features that cant be feature flagged we need to be more cautious.