Développement coopératif versus développement collaboratif ... · L'objec:f est que Git...

53
Développement coopéra/f versus développement collabora/f : quels workflows choisir ? JDEV 2017 Claire MOUTON 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

Transcript of Développement coopératif versus développement collaboratif ... · L'objec:f est que Git...

Page 1: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 2: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 3: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 4: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 5: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 5

Rappel des processus

Page 6: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 6

Développement collaboratif: dépôt de code centralisé (SVN)

Page 7: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 7

Développement collaboratif: dépôt de code centralisé (SVN)

Organisation

Page 8: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 9: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 9

Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus

Page 10: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 10

Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus

Page 11: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 11

Développement collaboratif: dépôt de code centralisé (SVN) Rappel des processus

Page 12: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 13: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 13

Développement coopératif: dépôt de code décentralisé (Git)

Page 14: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 15: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 16: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 17: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 18: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 19: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 20: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 21: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 22: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 23: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 24: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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/

Page 25: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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 !

Page 26: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 26

Workflows

Page 27: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 27

Workflows à l’échelle des dépôts

Page 28: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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.

Page 29: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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.

Page 30: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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.

Page 31: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 32: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 32

Workflows à l’échelle des branches

Page 33: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 33

Workflows à l’échelle des branches

Branches principales permanentes Master Develop

Page 34: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 34

Workflows à l’échelle des branches

Branches support temporaires

Page 35: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 36: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 37: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 38: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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/

Page 39: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 40: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 41: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 41

Workflow de duplication

Page 42: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 43: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 44: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 44

Workflow de duplication

Fork Pull request Merge request

Pull request : structure

Page 45: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 45

Workflow Gitflow avec pull requests

Page 46: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 46

Workflow Gitflow avec pull requests

Page 47: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 47

Workflow Github flow

https://guides.github.com/introduction/flow/

Page 48: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 48

Workflow Github flow

Page 49: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

Développementcoopéra/fversusdéveloppementcollabora/f:quelsworkflowschoisir?–JDEV2017–ClaireMOUTON 49

Workflow Gitlab flow

Page 50: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 51: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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

Page 52: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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!

Page 53: Développement coopératif versus développement collaboratif ... · L'objec:f est que Git travaille pour vous, pas l'inverse ! Développement coopéraf versus développement collaboraf

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 ?