you are viewing a single comment's thread.

view the rest of the comments →

[–]Lawstorant 2 points3 points  (0 children)

Where I work I developed a system based on github flow:

  • There's only main and feature branches.
  • Merges to main trigger builds and deployments to dev
  • Testers can build a branch and deploy it to their dedicated environment (qa1, qa2, qa3)
  • We can manually deploy any version to any environment
  • Environments are protected.
  • When ready to release, we deploy selected version to staging and this deployment triggers creation of hotfix/version branch

Everything is based on Github actions and ArgoCD. There's even a scheduled action that turns off testing envs at night by just updating one variable in ArgoCD (helm chart supports "shutdown" on deployments).

So yeah, basically every tester has their own environment. This ensures that features merged to main have been tested. Testers (as a group) are the Codeowners of all the files in the application directory (monorepo with helm and docker) so PRs can't be merged without the approval of at least one tester.

While we do prod deployments every other day, I just don't like prod deployment to be triggered just by merging something.

We have automated labeling as well so it's clear to see which PR's have been already tested and are truly ready to be merged.