GitHub Flow

Work in progress :construction:

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 :octocat: 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

  • 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 :exclamation: Easy :stuck_out_tongue_winking_eye:

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 :woman: (or 1 :man:)

Et vous aurez un “flow” facile Ă  utiliser, facile Ă  apprendre (pensez aux petits juniors dont vous allez hĂ©riter sur vos projets) et facile Ă  adapter :heart_eyes:

Mon job chez GitHub

C’est en gĂ©nĂ©ral autour du :octocat: 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 :hankey: 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” :trollface:)

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 :wink:

blog comments powered by Disqus

Related posts