Git Flow: un processus de développement Agile
Post on 27-Jun-2015
4798 Views
Preview:
DESCRIPTION
Transcript
Git Flow: un processus de développement Agile
Xavier HAUSHERR
A propos
Xavier HAUSHERRCTO
Twitter: @xkobalBlog: xavier.over-blog.com
Git Flow: un processus de développement Agile
Le projet Overblog
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.
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é
Git Flow: un processus de développement Agile
Du cycle en V à l’agilité
Evolution du process
- Planning en V - Gantt- Flou au démarrage- Manque de spécifications fonctionnelles- Evolution très rapide des besoins produits
Scrum
Equipe Scrum
• Développeurs
• Scrum Master
• Product Owner
• Business Owner
• Stackholders
• Quality Manager
Scrum
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
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
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
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
Git !ow
Feature branches
feature-* develop
Release 0Feature for
next release
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
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
Git !ow
Hot!x branches
Release 0 Tag 1.0
Tag 1.1
Bugfixes Production
develop masterhotfix-*
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
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
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
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
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
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
Git Flow: un processus de développement Agile
Les Tests unitaires et fonctionnels
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
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
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
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
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
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 ); }}
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);
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"
Tests fonctionnels
Résultats des tests
Merci pour votre attention
Questions?
Prenez le temps de créer votre blog sur www.over-blog.com
top related