Hello guys,
@Ken, I'm the one who ask about multiple branches in today's webinar.
Even if today we are far the the waterfall model, release iterations can be long (one month). Therefore if there is a bug (let's say a critical one) in production 10 days after the release we need to fix it and release a new version fast without all the new code committed by the developers during theses 10 days.
Consequently I came to the conclusion that I needed at least 2 branches in my CD system (one for the developpers and one for the production). We use feature/hotfix branches but I don't see where/how these could fit in Go or any CD tool (templating a dev pipeline for each branches seems quite enough).
And because we have 4 environments for each of our apps (Dev, Staging, UAT and Production), I currently fighting to reduce releases gaps to Staging and UAT (at most one week) to avoid maintaining 2 others branches.
Here some screenshots of slides I made. What I want to avoid:



- Horizontal arrows can be interpreted as branches or CD pipelines
- The black curved arrow means "we have a bug in UAT, developers please fix it"
- The green curved arrows are releases
- The blue curved arrows are merges
or even worse:



So I came up with 2 unsatisfying solutions:
Solution 1

- Light blue arrows are automated actions
- Darker blue arrows are manual actions
- Orange boxes are pipelines in CD terms (Blockers is for critical bugs fixed that need to be release)
- Grey boxes are pipelines in Go terms
- Transient env, is a short-live instance. We deploy the app on it and when the production pipeline ends, it is automatically terminated)
Problem: we have 2 different pipelines for the release in production and 2 different places to look for the actual version in production.
Solution 2


Artifact promotion means that we saved somewhere the version of the validated artifact. Then we manually launch the Production pipeline, which will check the version and pull it from Nexus for example and execute the other stages.
Problem: The production pipeline will not be show in either CD or Blockers pipeline Value Stream Map.
What would help to model a single Value Stream Map of the 3 pipelines shown in the screenshots is some kind of partial fan-in, not the all or nothing one.
Of course Continuous Deployment with a deployment every day in production will solve all of these issues, unfortunately this kind of decision is out of my hands.
Yohan