Both sides previous revisionPrevious revisionNext revision | Previous revision |
dev:release-management [2015/02/17 10:20] – s/prod/stable/g warp10 | dev:release-management [2015/07/17 10:35] (current) – messe le funzinoalità di CD di orgin/stable origin/master feroda |
---|
| //FIXME: nelle figure il naming origin/prod = origin/stable// |
| |
====== Sviluppo e gestione release ====== | ====== Sviluppo e gestione release ====== |
| |
| |
Sul repo git di GF o degli altri software beFair (origin) ci sono due branch principali: | Sul repo git di GF o degli altri software beFair (origin) ci sono due branch principali: |
- **origin/stable** è il branch dove HEAD corrisponde sempre a codice pronto per il deploy in produzione. In altre parole, ogni commit ha superato tutti i test ed è deployable in produzione. In caso di problemi, si può rollbackare al commit immediatamente precedente. | - **origin/stable** è il branch dove HEAD corrisponde sempre a codice pronto per il deploy in produzione. In altre parole, ogni commit ha superato tutti i test ed è deployable in produzione. Ogni merge viene taggato con un numero di versione. Se proprio ci fossero problemi, si può rollbackare al tag immediatamente precedente. La funzionalità fondamentale del branch stable è il **continuous delivery in produzione**. |
- Da origin/stable si brancha solo origin/master. | - Da origin/stable si brancha solo origin/master. |
- Su origin/stable si mergia solo da origin/master | - Su origin/stable si mergia solo da origin/master |
- Convenzione di naming per il -m dei commit: <numero_di_versione>, con l'aggiunta di una tag con lo stesso nome. Usiamo semver.org come standard per il versionamento | - Convenzione di naming per il -m dei commit: <numero_di_versione>, con, come detto, l'aggiunta di una tag con lo stesso nome. Usiamo http://semver.org come standard per il versionamento |
- **origin/master** è il branch principale di sviluppo dove vengono mergiati tutti gli altri branch descritti sotto. E' anche usato per committare eventuali piccole modifiche necessarie per la release. In altre parole, è un integration branch ed anche release finalization branch. | - **origin/master** è il branch principale di sviluppo dove vengono mergiati tutti gli altri branch descritti sotto. E' anche usato per committare eventuali piccole modifiche necessarie per la release. In altre parole, è un ''integration branch'' ed anche ''release finalization branch''. La funzionalità fondamentale del branch stable è il **continuous delivery in staging**. |
- Da origin/master si branchano tutti i branch descritti sotto | - Da origin/master si branchano tutti i branch descritti sotto |
- Da origin/master si mergia da tutti gli altri branch, escluso origin/prod | - Su origin/master si mergia da tutti gli altri branch, escluso origin/stable |
| |
{{:dev:main-branches.png?200|}} | {{:dev:main-branches.png?200|}} |
- Si brancha da origin/master | - Si brancha da origin/master |
- Si mergia su origin/master usando sempre e soltanto --no-ff (lo so, lo so, ma qui ha molti più pro che contro) | - Si mergia su origin/master usando sempre e soltanto --no-ff (lo so, lo so, ma qui ha molti più pro che contro) |
- Convenzione di naming: feature-<nome_descrittivo_della_feature> | - Convenzione di naming: ''feature-<nome_descrittivo_della_feature>'' |
| |
{{:dev:feature-branches2.png?200|}} | {{:dev:feature-branches2.png?200|}} |
| |
- **Bugfix branch**: identici ai feature branch, ma destinati a fixare bug di codice non ancora mergiato in origin/prod | - **Bugfix branch**: identici ai feature branch, ma destinati a fixare bug di codice non ancora mergiato in ''origin/stable'' |
- Convenzione di naming: bugfix-<numero_bug> | - Convenzione di naming: ''bugfix-<numero_bug>'' |
| |
| |
- **Hotfix branch**: è dove si fixano bug severi del codice già andato in produzione. | - **Hotfix branch**: è dove si fixano bug severi del codice già andato in produzione. |
- Si brancha da origin/prod | - Si brancha da ''origin/stable'' |
- Si mergia su origin/prod e origin/master con --no-ff | - Si mergia su ''origin/stable'' e ''origin/master'' con --no-ff |
- Convenzione di naming: hotfix-<versione> con il field PATCH aumentato di 1 | - Convenzione di naming: ''hotfix-<versione>'' con il field PATCH aumentato di 1 |
| |
{{:dev:main-branches.png?200|}} | {{:dev:main-branches.png?200|}} |