###### 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)