YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Git Flow: un processus de développement Agile

Git Flow: un processus de développement Agile

Xavier HAUSHERR

Page 2: Git Flow: un processus de développement Agile

A propos

Xavier HAUSHERRCTO

Twitter: @xkobalBlog: xavier.over-blog.com

Page 3: Git Flow: un processus de développement Agile

Git Flow: un processus de développement Agile

Le projet Overblog

Page 4: Git Flow: un processus de développement Agile

Qui sommes nous ?

C’est aussi:3 millions de blogs dans 5 langues38 millions de visiteurs uniques par mois

275 millions pages vues par mois16ème audience française

Plus de 80 serveurs pour servir les blogs

Né en 2004, Overblog est la plateforme de blogs Européenne n°1.

Nous sommes la première plateforme a avoir mis en place le partage de revenu publicitaire généré par l’audience.

La nouvelle version est sortie en Juin 2012 avec un très bon retour des blogueurs. Elle ne cesse depuis d’évoluer fonctionnellement.

Page 5: Git Flow: un processus de développement Agile

Nom de code «Kiwi»

Refonte complète du produitUne forte orientation vers les réseaux sociauxUne équipe de 10 personnes

Utilisation de nouvelles technologiesNouvelle architectureUn projet orienté service

7 mois de développement1 année d’évolutionSortie de nouvelles fonctionalités avant l’été

Page 6: Git Flow: un processus de développement Agile

Git Flow: un processus de développement Agile

Du cycle en V à l’agilité

Page 7: Git Flow: un processus de développement Agile

Evolution du process

- Planning en V - Gantt- Flou au démarrage- Manque de spécifications fonctionnelles- Evolution très rapide des besoins produits

Scrum

Page 8: Git Flow: un processus de développement Agile

Equipe Scrum

• Développeurs

• Scrum Master

• Product Owner

• Business Owner

• Stackholders

• Quality Manager

Page 9: Git Flow: un processus de développement Agile

Scrum

Page 10: Git Flow: un processus de développement Agile

Détail d’un sprint Scrum chez Overblog

VendrediJeudiMercrediMardiLundiSemaine 1

Sprint Planning

Mise en Prod Release n-1

Daily MeetingDaily Meeting Daily Meeting

Poker Planning

Daily Meeting

Poker Planning

VendrediJeudiMercrediMardiLundiSemaine 2

Daily Meeting

Poker Planning

Daily Meeting

Debug / Refacto

Code Review

Retrospective

Daily Meeting

Feature Freeze

Daily Meeting

Debug / Refacto

Demo

Daily Meeting

Page 11: Git Flow: un processus de développement Agile

Nos besoins de développement Agile

Coder sans mettre en péril le projetTravailler à deux ou plus sur des featuresTester chaque fonctionnalité avant mise en productionIntégration continue pour certaines fonctionnalitésRelease pour les grosses fonctionnalitésGestion des urgencesÊtre accepté par l’équipe Scrum

Page 12: Git Flow: un processus de développement Agile

Git Flow: un processus de développement Agile

feature-* master release-* hotfix-* stable

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 1.1

Tag 1.2

Tag 2.0

Bugfixes Production

Start of release

branch for 2.0

Feature for future release

Feature for next release

Only bugfixes !

Intégration continue

Tag 1.0

Tag 1.1

Tag 1.2

Tag 1.3

Bugfixes Production

Intégration continue

Intégration continue

feature-* master release-* hotfix-* stable

=Overblog Flow

+Git Flow Github Flow

Page 13: Git Flow: un processus de développement Agile

Git !ow

http://nvie.com/posts/a-successful-git-branching-model/

feature-* release-* hotfix-* master

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 1.1

Tag 2.0

Bugfixes Production

Start of release

branch for 2.0

Feature for future release

Feature for next release

Only bugfixes !

develop

Page 14: Git Flow: un processus de développement Agile

Git !ow

Feature branches

feature-* develop

Release 0Feature for

next release

Page 15: Git Flow: un processus de développement Agile

Git !ow

Release branches

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 2.0

Start of release

branch for 2.0

Only bugfixes !

feature-* develop release-* master

Page 16: Git Flow: un processus de développement Agile

Git !ow

Long feature branches

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 2.0

Start of release

branch for 2.0

Feature for future release

feature-* develop release-* master

Page 17: Git Flow: un processus de développement Agile

Git !ow

Hot!x branches

Release 0 Tag 1.0

Tag 1.1

Bugfixes Production

develop masterhotfix-*

Page 18: Git Flow: un processus de développement Agile

Nos besoins de développement Agile

Connection décentraliséeMerge compliquéQui merge ?Quand tester ?

Coder sans mettre en péril le projetTravailler à deux ou plus sur des featuresTester chaque fonctionnalité avant mise en productionIntégration continue pour certaines fonctionnalitésRelease pour les grosses fonctionnalitésGestion des urgencesÊtre accepté par l’équipe Scrum

Page 19: Git Flow: un processus de développement Agile

Tag 1.0

Tag 1.1

Tag 1.2

Tag 1.3

Bugfixes Production

Intégration continue

Intégration continue

feature-* master release-* hotfix-* stable

Github Flow

Scott Chaconsoftware developer & Git evangelist @Github

http://scottchacon.com/2011/08/31/github-flow.html

feature-* release-* hotfix-* master

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 1.1

Tag 2.0

Bugfixes Production

Start of release

branch for 2.0

Feature for future release

Feature for next release

Only bugfixes !

develop

Page 20: Git Flow: un processus de développement Agile

Tag 1.0

Tag 1.1

Tag 1.2

Tag 1.3

Bugfixes Production

Intégration continue

Intégration continue

feature-* master release-* hotfix-* stable

Github Flow

Scott Chaconsoftware developer & Git evangelist @Github

http://scottchacon.com/2011/08/31/github-flow.html

Page 21: Git Flow: un processus de développement Agile

Nos besoins de développement Agile

Plus de release

Coder sans mettre en péril le projetTravailler à deux ou plus sur des featuresTester chaque fonctionnalité avant mise en productionIntégration continue pour certaines fonctionnalitésRelease pour les grosses fonctionnalitésGestion des urgencesÊtre accepté par l’équipe Scrum

Page 22: Git Flow: un processus de développement Agile

Overblog Flowfeature-* master release-* hotfix-* stable

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 1.1

Tag 1.2

Tag 2.0

Bugfixes Production

Start of release

branch for 2.0

Feature for future release

Feature for next release

Only bugfixes !

Intégration continue

feature-* release-* hotfix-* master

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 1.1

Tag 2.0

Bugfixes Production

Start of release

branch for 2.0

Feature for future release

Feature for next release

Only bugfixes !

develop

Page 23: Git Flow: un processus de développement Agile

Overblog Flowfeature-* master release-* hotfix-* stable

Release 0

Feature Freeze

Mise en production

Tag 1.0

Tag 1.1

Tag 1.2

Tag 2.0

Bugfixes Production

Start of release

branch for 2.0

Feature for future release

Feature for next release

Only bugfixes !

Intégration continue

Page 24: Git Flow: un processus de développement Agile

Git Flow: un processus de développement Agile

Les Tests unitaires et fonctionnels

Page 25: Git Flow: un processus de développement Agile

Un processus de déploiement Agile

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Prod Server

Functional Tests

Productiondelivery

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Developers

Unit Tests

Run Unit Tests

Developers

Unit Tests

Page 26: Git Flow: un processus de développement Agile

Un processus de déploiement Agile

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Prod Server

Functional Tests

Productiondelivery

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Developers

Unit Tests

Run Unit Tests

Developers

Unit Tests

Page 27: Git Flow: un processus de développement Agile

Un processus de déploiement Agile

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Prod Server

Functional Tests

Productiondelivery

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Developers

Unit Tests

Run Unit Tests

Developers

Unit Tests

Page 28: Git Flow: un processus de développement Agile

Un processus de déploiement Agile

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Prod Server

Functional Tests

Productiondelivery

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Developers

Unit Tests

Run Unit Tests

Developers

Unit Tests

Page 29: Git Flow: un processus de développement Agile

Un processus de déploiement Agile

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Prod Server

Functional Tests

Productiondelivery

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Staging Server

Functional Tests

Validate & Merge Pull Request

Developers

Unit Tests

Run Unit Tests

Test Server Product Owner

Quality Manager

Functi

onal

Tests

Pull Requests

Developers

Unit Tests

Run Unit Tests

Developers

Unit Tests

Page 30: Git Flow: un processus de développement Agile

Tests unitaires PHP

PHPUnit

Environnement de test Symfony 2

Lancés par jenkinsnamespace OverblogBlog\BlogBundle\Tests\Twig\NodeVisitor;

use OverblogBlog\BlogBundle\Twig\NodeVisitor\MethodCallOptimizerNodeVisitor;

class MethodCallOptimizerNodeVisitorTest extends \PHPUnit_Framework_TestCase{ public function testSingle() { $env = $this->getTwig(array('tpl' => '{{ foo.bar }}')); $env->addNodeVisitor(new MethodCallOptimizerNodeVisitor(array( array('foo', 'getbar') )));

$src = $env->getLoader()->getSource('tpl'); $php = $env->compileSource($src, 'tpl');

$this->assertContains( '$context["foo"]->getbar()', $php ); }}

Page 31: Git Flow: un processus de développement Agile

Tests unitaires Javascript

YUI Test

Lancés par jenkins

Navigateur Chromium dans un environnement VLCvar suite = new Y.Test.Suite("Timeline : TimelineView");

suite.add( new Y.Test.Case({

name: "Test TimelineView",

testRender: function () { Y.Assert.areEqual( 4, Y.all('.statuses button').size() ); Y.Assert.areEqual( 2, Y.all('.class button').size() ); Y.Assert.areEqual( 3, Y.all('.advanced select').size() ); },});

Y.Test.Runner.add(suite);

Page 32: Git Flow: un processus de développement Agile

Tests fonctionnels

Cucumber

Lancés par jenkins

Navigateurs controlés par Watir@comment @ieScenario: I can add a comment When I connect to my comment account When I initialize a post with title "Test comments" and text "You can comment" When I publish Then I see success message "POST_PUBLISHED" Then I need to sleep a little Given I visit my comment blog When I open article "Test comments" Then I don't see errors When I add a comment with: | name | text | | Anonym comment | This article is top | Then I don't see errors Then I should see "Your comment has been published" Given I visit my comment blog When I open article "Test comments" Then I see comment: | name | text | | Anonym comment | This article is top | When I goto admin When I delete the article with: | title | | Test comments | Then I see success message "POST_DELETED"

Page 33: Git Flow: un processus de développement Agile

Tests fonctionnels

Page 34: Git Flow: un processus de développement Agile

Résultats des tests

Page 35: Git Flow: un processus de développement Agile

Merci pour votre attention

Questions?

Prenez le temps de créer votre blog sur www.over-blog.com


Related Documents