We're starting up a greenfield project delivering a web-based product meant for rapid iteration. We're using Git, and our team of about 5-6 devs all have had experience with different branching strategies in the past.
When aiming for a really smooth and testable CI/CD pipeline, what approaches combining branching strategies and pipeline tools have you had the best experience with? Feature branches merged right back into master? Gitflow-like approaches? Dev versus master branches? Circle, Bamboo, CodeDeploy?
We don't want to overcomplicate things, but we do want to be able to test in staging, for example, and keep the number of buttons and procedures required to a minimum. Would love everyone's thoughts and war stories!
Also plan for a hotfix to production path in cases where a commit is non-revertible (e.g. one-way migration) and a confident fix is available but time waiting for CI may not be. Or better yet, always make your tests run in a minute or two.
What we used at my previous startup was a CI pipeline per microservice with stages for build/test, staging test/deploy of service, journey test in staging fully deployed, prod test/deploy of service, and journey test in prod fully deployed.
A journey test is the top 10 or so things that a user should be able to do (e.g. sign-up, do a primary thing, do another core thing, get a notification, tell a friend to sign-up). No matter how bad a deploy is, if the journey test passes, at least you know that's it's not that bad, or if it fails you know it right away. One downside is that it runs after deployment so it's a live issue. (Checking pre-deploy is a false sense of security.)