GitHub Flow
Work in progress
Aujourdâhui jâai envie de vous parler du GitHub Flow (https://guides.github.com/introduction/flow/), (je vous dirais plus loin pourquoi je vous en parle). Ce flow est le workflow utilisĂ© chez parceque:
- Il est simple, voire ultra-simple
- Il est adaptĂ© Ă de lâintĂ©gration continue et du dĂ©ploiement continu
- Il est facile Ă utiliser en Ă©quipe
Principes du GitHub Flow:
Les grands principes du GitHub Flow sont les suivants:
- Nous avons une branche
master
et tout ce qui est sur cette branche est dĂ©ployable - Si un membre de lâĂ©quipe doit faire une âfeatureâ (fonctionnalitĂ©):
- il crée une branche à partir de
master
- il commence Ă initialiser son code et fait quelques commits, puis les âpousseâ vers le serveur, avant dâavoir terminĂ©
- et il propose ainsi une pull request (merge request pour ceux qui font du GitLab)
- et par lĂ mĂȘme il initie une discussion autour de son code avec lâĂ©quipe
- continue Ă commiter sur sa branche
- chaque âpushâ vers le serveur dĂ©clenchera les traitements dâintĂ©gration continue (tests, qualimĂ©trie, âŠ)
- etcâŠ
- il crée une branche à partir de
- Une fois la fonctionnalité terminée et approuvée par tous, il peut merger sa branche sur
master
- Et comme, tout ce qui est sur
master
est déployable, on déclenche le déploiement (automatiquement par exemple)
⊠Et câest tout Easy
Et pour que cela fonctionne de la maniĂšre la plus simple possible (sans accroc):
- les petites âfeaturesâ sont plus faciles Ă merger
- âpoussezâ souvent (synchronysez souvent aussi)
- si possible: 1 âfeatureâ pour 1 (or 1 )
Et vous aurez un âflowâ facile Ă utiliser, facile Ă apprendre (pensez aux petits juniors dont vous allez hĂ©riter sur vos projets) et facile Ă adapter
Mon job chez GitHub
Câest en gĂ©nĂ©ral autour du flow, que jâarticule mes dĂ©monstrations chez les prospects, clients, universitĂ©s, ⊠Mais prĂ©senter ça (un workflow dâĂ©quipe), quand vous ĂȘtes tout seul ⊠Comment dire⊠Câest pour ceux qui regardent, mais pour moi aussi. En plus je parle dâintĂ©gration continue, de dĂ©ploiement continu, mais aussi de ChatOps (le terme Ă la mode du moment, Eh oui, DevOps câest dĂ©jĂ âhas beenâ )
Du coup jâai dĂ©cidĂ© de me faire aider pour faire mes dĂ©mos par @babs, @buster et @bob pour avoir une âvraieâ Ă©quipe:
- @bob sera le bot qui mâexplique ce quâil se passe sur mes repositories, et il fait ça dans RocketChat
- @babs et @buster sont des utilisateurs qui répondent à mes questions dans les discussions des issues ou des pull requests
Vous lâaurez devinĂ©, @babs, @buster et @bob sont des bots. Je les ai dĂ©veloppĂ©s Ă partir du framework Hubot (https://hubot.github.com/).
Ma dĂ©monstration utilise un âminiâ serveur dâintĂ©gration continue que jâai codĂ© en JavaScript et les dĂ©ploiements sont faits dans Docker.
Ma démo
Voici à quoi ressemble ma démo:
Mais avec une seule branche, je gĂšre comment mes versions?
Tout simplement avec les tag releases. Et Ă partir dâun tag, vous pouvez âtirerâ une nouvelle branche pour faire un fix:
Et pourquoi cet article alors?
En fait dans les semaines Ă venir, je vais vous expliquer:
- comment jâai codĂ© mon serveur de CI et de CD
- comment jâai codĂ© mes bots
- et jâaurais (jâespĂšre) aussi un article sur comment coder sont propre DVCS (aka son propre GitHub mais en version mini)
Donc ⊠Stay tuned
Tweet