We are new to Azure DevOps and start managing our project and planning to have CI/CD pipeline from our microservice.
We are planning to have the below flow for each service:
1. Whenever the main branch is updated, run the Azure Pipeline (Build/Test/Review)
2. If Build succeeded, decide whether to deploy the changes on UAT by running the UAT Release pipeline manually.
3. Test on UAT. If everything works fine then ready to deploy on Production.
4. Create a release tag for the particular commit for which we created the build and tested it on UAT.
5. Run the Production Release pipeline manually to deploy the release on Production env.
Is our flow correct? Please give us suggestions.
We also have some questions:
1. Do we create branches for Releases or use tags? And when to create it, before deploying to UAT or after deploying on UAT?
(Note: we are not sure whether we will deploy the changes to production immediately after deployment and testing on UAT, there may be a possibility that we will add some more features to the on UAT and then deploy on Production).
2. Should we create and push Docker Image in the Azure pipeline or Release pipeline? And how many image tags should we create? (say one with the release tag and one with the latest tag).