Na minha empresa uso o Semantic Versioning http://semver.org/lang/pt-BR/ nos projetos, combinado com o hash de um commit no Git (que é o número da build).
Faço assim pois toda vez que envio um teste de iOS para o TestFlight (App Store) ele pede que eu especifique a build. Ao invés de trocar a parte do patch no número, troco esse hash.
A parte major.minor.patch deve ficar alinhada entre os times de backend, frontend e mobile. Já o número da build é livre.
O repositório Git é dividido em vários branches, sendo 4 principais:
- master
- backend
- frontend
- mobile
Cada developer pode criar seus branches, fazer pull-requests nesses 3 e depois removê-los. Eu gerencio a build do master, fazendo pull-requests dos branches de cada time no principal. Agindo assim, o time sempre tem que publicar uma build funcional e o processo se automatiza.
Exemplo:
Teremos as builds:
- Backend 2.5.3-2d2e952a
- Frontend 2.5.3-a1c420a8
- Mobile 2.5.3-09b2d1a9