développement coopératif versus développement collaboratif ... · l'objec:f est que git...
TRANSCRIPT
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 1
1
Développement coopératif versus développement collaboratif :
Quels processus de partage de
code et de contextes d'exécution ?
Quels workflows choisir ? Claire Mouton - CREATIS,Lyon,France
claire.mouton@crea:s.insa-lyon.fr
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 2
Du développement collaboratif au développement coopératif
Développement collaboratif Une équipe Un seul objectif Développement coopératif Des équipes/personnes
communauté plus ou moins informelle Plusieurs objectifs
nécessité de coopérer pour réutiliser des codes existants systèmes de plus en plus complexes
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 3
Développement coopératif
Plusieurs solutions Modularité Architecture micro-services SOA / WOA Standard Urbanisation … Ici, nous nous intéressons plus spécifiquement au développement d’une brique
logicielle Développement par composants
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 4
Le contexte d’exécution et les conteneurs
Contexte d’exécution Collaboration implique une variabilité potentielle des contextes d’exécution Conteneur Une solution pour s’affranchir de la variabilités des contextes d’utilisation intra ou
inter collaborateurs 1 service = 1 conteneur = 1 projet A versionner avec le code
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 5
Rappel des processus
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 6
Développement collaboratif: dépôt de code centralisé (SVN)
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 7
Développement collaboratif: dépôt de code centralisé (SVN)
Organisation
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 8
Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus : Récupérer un projet
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 9
Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 10
Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 11
Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 12
Développement collaboratif: dépôt de code centralisé (SVN) Echanges avec le dépôt distant
commit update
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 13
Développement coopératif: dépôt de code décentralisé (Git)
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 14
Développement coopératif: dépôt de code décentralisé (Git)
Nouveautés par rapport à SVN : Aucun dépôt de référence par défaut Copie de travail = bac à sable Facilité de création /manipulation des branches Flexibilité Commandes disponibles hors ligne
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 15
Développement coopératif: dépôt de code décentralisé (Git) Organisation
Server repository [//server/repository/]
Working copy [~/my_project/]
• All versions • Ancestry information
• Private workspace • State information
Project 1 Project 1 Project 2
Project 3
Local repository [~/my_project]
• All versions • Ancestry information
Project 1
My computer Distant server
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 16
Développement coopératif: dépôt de code décentralisé (Git) Rappel des processus
clone
Repository
Developer A Repository
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 17
Développement coopératif: dépôt de code décentralisé (Git) Rappel des processus
clone
Repository
Developer A
Developer B
Repository
Repository
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 18
Développement coopératif: dépôt de code décentralisé (Git) Rappel des processus
development
Repository
Developer A
Developer B
Repository
Repository
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 19
Développement coopératif: dépôt de code décentralisé (Git) Rappel des processus
commit
Repository
Developer A
Developer B
Repository
Repository
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 20
Développement coopératif: dépôt de code décentralisé (Git) Rappel des processus
push
Repository
Developer A
Developer B
Repository
Repository
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 21
Développement coopératif: dépôt de code décentralisé (Git) Rappel des processus
pull
Repository
Developer A
Developer B
Repository
Repository
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 22
Développement coopératif: dépôt de code décentralisé (Git) Echanges entre dépôts : classiquement
Remote
Local
1. clone
2. commit
3. push
Remote
Local
1. pull
2. commit
3. push
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 23
Développement coopératif: dépôt de code décentralisé (Git) Echanges entre dépôts : tout est possible !
push pull
push pull
push
pull
pull
push
push
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 24
Développement coopératif: dépôt de code décentralisé (Git) Echanges entre dépôts : tout est possible !
http://liris.cnrs.fr/~pchampin/enseignement/intro-git/
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 25
Développement coopératif: dépôt de code décentralisé (Git) Echanges entre dépôts : tout est possible !
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 26
Workflows
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 27
Workflows à l’échelle des dépôts
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 28
Workflows à l’échelle des dépôts
Centralized workflow Similar to centralized version control, everybody can edit central repository.
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 29
Workflows à l’échelle des dépôts
Centralized workflow Similar to centralized version control, everybody can edit central repository.
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 30
Workflows à l’échelle des dépôts
Integration manager workflow
Developer create a request to merge its changes. Release masters chose which requests to merge.
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 31
Workflows à l’échelle des dépôts
Lieutenant workflow In huge projects, lieutenants are trusted individuals in charge of reviewing requests. http://themouette.github.io/slides-git/?theme=clermontech#/8/3
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 32
Workflows à l’échelle des branches
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 33
Workflows à l’échelle des branches
Branches principales permanentes Master Develop
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 34
Workflows à l’échelle des branches
Branches support temporaires
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 35
Workflows à l’échelle des branches
Branches support temporaires Feature/topic branches : workflow branche par fonctionnalité / ticket
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 36
Workflows à l’échelle des branches
Branches support temporaires Release branches
Préparation de prochaine release Correction de bugs mineurs Préparation des meta-data pour la release
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 37
Workflows à l’échelle des branches
Branches support temporaires Hotfix branches
Résolution d’un bug critique dans une version de production Le travail sur develop continue
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 38
Workflows à l’échelle des branches
Synthèse : workflow gitflow (Vincent Driessen) Branches master / develop, release-v* Branches de livraison versus maintenance
Source : http://nvie.com/posts/ a-successful-git-branching-model/
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 39
Workflows à l’échelle des branches
git-flow est un ensemble d'extensions git permettant des opérations de haut niveau sur un dépôt pour appliquer le modèle de branches de Vincent Driessen.
https://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 40
Workflows à l’échelle des branches
git-flow dans GitKraken https://support.gitkraken.com/repositories/git-flow
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 41
Workflow de duplication
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 42
Workflow de duplication Fork Clone en local Développement d’une nouvelle fonctionnalité Push Création de la pull request / merge request Review Commit de suivi Acceptation de la pull request Outil puissant pour équipes peu soudées
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 43
Workflow de duplication
Fork Pull request Merge request
Pull request
https://fr.atlassian.com/git/tutorials/making-a-pull-request
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 44
Workflow de duplication
Fork Pull request Merge request
Pull request : structure
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 45
Workflow Gitflow avec pull requests
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 46
Workflow Gitflow avec pull requests
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 47
Workflow Github flow
https://guides.github.com/introduction/flow/
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 48
Workflow Github flow
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 49
Workflow Gitlab flow
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 50
Références
http://nvie.com/posts/a-successful-git-branching-model/ https://fr.atlassian.com/git/tutorials/comparing-workflows https://docs.gitlab.com/ce/workflow/gitlab_flow.html https://forge.cnrs.fr/git/guide_d_utilisation_GIT-branchements.pdf 11 rules of Gitlab flow : https://about.gitlab.com/pdfs/the-eleven-rules-of-gitlab-flow.html git-flow cheatsheet :https://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 51
Conclusion
• A decentralized SCM remains a tool • No default usage policy • Policy to be defined
– From centralized to decentralized – Pull-only vs shared-push
Anarchic Centralized Linux kernel model Branch by functionality
or Release train
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 52
Conclusion
Choixd’unworkflowdépend:niveaud'autonomiequel'onsouhaitedonnerauxdéveloppeurs?tailledelastructure?commentsituésgéographiquement?processusautoma:sés?(ex:vérifica:ondesyntaxe)tempsdisponibleparlesreviewers?Lesworkflowsprésentésicinesontquedesexemplesdecequiestpossible.Cenesontpasdesrèglesimmuablessurl'u:lisa:ondeGitautravail.N'hésitezpasàadoptercertainsaspectsd'unworkflowetàenignorerd'autresL'objec:festqueGittravaillepourvous,pasl'inverse!
Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 53
Un moment pour échanger !
Et toi, tu fais comment pour collaborer ?!?
Quel workflow ?
Vos pratiques ? Vos retours d’expérience ? Des erreurs à ne pas faire / des conseils ? Des compléments à ma présentation ?