###### tags: `git` `release` # Release process *Author: **Jérémy Habit*** *Created at: **04/02/2021*** *Last updated : **24/03/2021*** ## How to release on Quality *ex : release-2.28* 1) push on the branch : **`main`** **Results** : * A github action called **Build and push quality** is triggered. * A job jenkins is triggered : https://ci.upply.com/view/infra/job/deploy-helm-quality/. Once this last one is finished, the new release will be available on https://quality.upply.com/ ## How to release on Pre-prod *ex: release-2.28 to main* 1) **`git checkout main`** 2) **`git pull`** 3) **`git tag 2.28.0-rc.1`** 4) **`git push origin 2.28.0-rc.1`** 5) See results section to see if everything works correctly (github action, build jenkins) 6) create the support branch for all future bugs fixes : **`git checkout -b feature-release/support-2-28-x-integ`** 7) send a message on Teams (Tech lead / smarketplace) to inform 2.28.0-rc.1 tag is building. 8) write release-candidate tag on https://upply1.atlassian.net/wiki/spaces/UDT/pages/29557141/Release+Notes 9) If the last release-candidate is approved by the QA team, (go/no go ==> go prod) then you can create a production tag (and not a rc tag) from the tag 2.28.0-rc.1 : * **`git checkout 2.28.0-rc.1`** * **`git tag 2.28.0`** * **`git push origin 2.28.0`** **Results** : * A github action called **Build and push preprod** is triggered. Note that this last one is triggered when a tag is pushed. * A job jenkins is triggered (on tag too) : https://ci.upply.com/view/infra/job/deploy-helm-preprod/. Once this last one is finished, the new release will be available on https://preprod.upply.com/ ## How to release hotfixes on Pre-prod *ex: release-2.28.0-rc.1* 1) **`git checkout feature-release/support-2-28-x-integ`** 2) **`git checkout -b hotfix/mp-5456-my-super-hotfix`** 3) once the fix is done, make a pull request from **`hotfix/mp-5456-my-super-hotfix`** to **`feature-release/support-2-28-x-integ`** 4) once the pull request is approved, merge it on **`feature-release/support-2-28-x-integ`** with the appropriate commit name. 5) Create a new release-candidate tag from **`feature-release/support-2-28-x-integ`** (and not from **`main`** !! warning). * **`git checkout feature-release/support-2-28-x-integ`** * **`git tag 2.28.0-rc.2`** * **`git push origin 2.28.0-rc.2`** 6) **`git checkout main`** 7) **`git merge feature-release/support-2-28-x-integ`** 8) check/resolve potential conflicts 9) **`git push -f`** ## How to create feature branch with environment take a look at : [Git+Naming+Format](https://upply1.atlassian.net/wiki/spaces/UDT/pages/29753771/Git+Naming+Format)