How we use Github

Github Process

  1. Add an :large_green_circle: issue to github  (allows easy overall visibility of currently open / previously closed issues). You can @ relevant people across teams in the description.
  2. Click to convert into a :twisted_rightwards_arrows:branch from main base (rename with a semantic branch type such as fix feat chore refactor test)
  3. Develop to your heart's content on your local
  4. Merge your feature-branch into staging
    1. :warning: other devs may have feature branches on here too
    2. :eye-in-speech-bubble: watch out for conflicts and @ any affected parties
    1. When you merge onto staging, a github action should auto deploy it
    2. Commence QA on staging
  5. QA Failed :x:
    1. Return to step 3
  6. QA Passed :muscle:
    1. Create a PR to merge feature-branch to master
    2. Request Approval from another dev
    3. Squash Merge feature-branch into master (keeps it clean..)
    4. Create a new release on master , add some details in the description (easy to do via Github GUI)
    5. Issue closed, feature branch deleted
  7. SSH onto prod and checkout the latest release:
    1. git fetch
    2. git checkout v1.0.0
  8. @Leon Chevalier or @Brian Rogers should periodically rebase/merge/reset staging from master to keep them synced (depending on situation & conflicts)
    1. To reset run when in staging branch:
      1. git reset --hard master
      2. git push -f origin

What about Hotfixes?

  • Can be applied via a PR to master that won't go through regular QA
  • After a hotfix, we rebase/merge/reset staging from master (depending on situation & conflicts)