Versions System (Créé par Linus Torvalds en 2005) • Versions System • un “Version Control System” sur ma machine • tout le projet! • “Time Machine” / historique • Concurrent • récupérer les modifications du reste de l’équipe • proposer ses modifications • gérer les conflits • Distributed (Décentralisé) • manipulations faciles / moins de stress • système de branches • OpenSource
• Savoir travailler de manière “historisée” & asynchrone • Modifications du code • Conversations autour du code • Recettes de cuisine • Remplacer l’e-mail - Informations partagées • Travailler ensembles sur les mêmes projets • à travers le monde
philosophie) 15 " • Responsive is better than fast • It’s not fully shipped until it’s fast • Anything added dilutes everything else •Practicality beats purity • Approachable is better than simple • Mind your words, they are important •Speak like a human • Half measures are as bad as nothing at all • Encourage flow • Non-blocking is better than blocking • Favor focus over features • Avoid administrative distraction • Design for failure •Keep it logically awesome
This workflow is: • easy to use • easy to learn • easy to scale • To avoid conflicts: • “small features” are easier to merge • push often • one feature - one person
" @mention ) ( WEB HOOKS Issue 0 USERS BOTS Create a branch ! " Add commits Open a Pull Request # AAPI hey this is my code AAPI STATUS: PENDING % WEB HOOKS
" @mention ) ( WEB HOOKS Issue 0 USERS BOTS Create a branch ! " Add commits Open a Pull Request # AAPI hey this is my code AAPI STATUS: ❌✅ Build OK - Build fails - AAPI STATUS: PENDING % - WEB HOOKS
" @mention ) ( WEB HOOKS Issue 0 USERS BOTS Create a branch ! " Add commits Open a Pull Request # AAPI hey this is my code AAPI STATUS: ❌✅ Build OK - Build fails - AAPI STATUS: PENDING % WEB HOOKS - REST
" une application Express: qui écoute un webhook app.post('/ci', (req, res) => {… récupère un event (du hook) let event = req.headers['x-github-event']; => case “push”: => PR status == “pending” (G API) => “monter” le projet à partir d’une branche => si branche == branche de “prod” (eg: master) ==> on déploie (à partir d’un script dans le repo) => sinon ==> on lance les tests d’intégration (à partir d’un script dans le repo) => PR status == “success” (G API) => PR status == “error” (G API) case “pull_request”: => PR + “closed” => == merge => déploiement possible
> créer un utilisateur “bob” > créer un personal access token pour bob Dans RocketChat > en tant qu’administrateur: ajouter un user “bob” avec le rôle “bot” > créer une room “ops” > inviter “bob” Avec Hubot > utiliser le plugin "hubot-rocketchat"