123/06/2013Gestion de projet Drupal :Gestion de projet Drupal :quelques outils indispensablesquelques outils indispensable...
223/06/2013Bonjour !Bonjour !  Pierre Ternon  Associé fondateur, gérantOpen Web Solutions
323/06/2013Plan de la présentationPlan de la présentationSpécificationsRedmineVersionnementDrushDéploiementCommunica...
423/06/2013SpécificationsSpécificationsSpécifications fonctionnelles sous Axure :− Lisibilité pour le client− Maquette in...
523/06/2013
623/06/2013Spéc. – gestion documentaireSpéc. – gestion documentaire… et déjà Redmine pendant cette phase : gestion documen...
723/06/2013Spéc. – gestion documentaireSpéc. – gestion documentaireAvantages :Souplesse de rédaction / édition, ajout de ...
823/06/2013Redmine - présentationRedmine - présentationRedmine est organisé autour de projets (et sous-projets)
923/06/2013Redmine - présentationRedmine - présentationGestion utilisateurs, rôles, permissions et alertes emails
1023/06/2013Redmine - présentationRedmine - présentationModules et plugins activables par projet
1123/06/2013Redmine - demandeRedmine - demande●Sujet / description / fichiers joints●Type (paramétrage global) : Bug / Tac...
1223/06/2013Redmine - demandeRedmine - demandeListe de demandes : « vues » paramétrables (filtres et champs) par utilisate...
1323/06/2013Redmine - demandeRedmine - demandePas toujours facile de former les clients...– Documenter le plus possible le...
1423/06/2013Redmine – DépôtRedmine – DépôtBrowser graphique du repository :•Branches•Révisions, historique•Commentaires as...
1523/06/2013Redmine – DépôtRedmine – Dépôtgit commit -m Refs #MON_ID : mon commentaire(tags : refs, references ou IssueID)...
1623/06/2013
1723/06/2013Redmine - conclusionRedmine - conclusion=> Système classique mais efficace et soupleTout au long du projet : C...
1823/06/2013Versionnement -Versionnement -•Versionnement en général : enregistrement structuré et commenté des différentes...
1923/06/2013Versionnement -Versionnement -Communauté, documentation :https://git.wiki.kernel.org/index.php/GitwebSans co...
2023/06/2013Drush (Drush (DruDrupalpal ShShell)ell)Quest-ce que Drush ?•Outil indispensable tout au long de la vie du proj...
2123/06/2013Drush (Drush (DruDrupalpal ShShell)ell)Développement aisé de nouvelles commandes :
2223/06/2013Déploiement - FeaturesDéploiement - FeaturesPourquoi Features ?•Sous Drupal, un certain nombre déléments se tr...
2323/06/2013Déploiement - FeaturesDéploiement - FeaturesTypes dobjets exportés (et donc importés)•Variables (module Strong...
2423/06/2013Communication en ligne - IRCCommunication en ligne - IRCQuest-ce que IRC ?•Internet Relay Chat : protocole de ...
2523/06/2013Communication en ligne - IRCCommunication en ligne - IRCComment ?IRC nous permet au quotidien :•Un salon de di...
2623/06/2013Déploiement - JenkinsDéploiement - JenkinsSchéma de fonctionnementDev / Commit sur branche masterJenkins écout...
2723/06/2013Echec après commitEx. script de déploiementNotification IRC
2823/06/2013Tests avec SéléniumTests avec Sélénium•Installation poste local triviale et lancement des scripts de tests (in...
2923/06/2013Tests avec SéléniumTests avec SéléniumPour plus de robustesse et dautomatisation des tests de non régression :...
3023/06/2013Montée en charge - TsungMontée en charge - TsungPourquoi Tsung ?●Ecrit en Erlang : grand nombre de requêtes/se...
3123/06/2013Montée en charge - TsungMontée en charge - Tsung<load duration="240" unit="minute"><!-- several arrival phases...
3223/06/2013Montée en charge - TsungMontée en charge - Tsung
3323/06/2013Montée en charge - TsungMontée en charge - Tsung
3423/06/2013Merci pour votre écoute !Merci pour votre écoute !
Upcoming SlideShare
Loading in …5
×

Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp Paris 2013

3,826 views

Published on

Vous êtes intégrateur Drupal et vous souhaitez augmenter l'efficacité de vos process de gestion de projet ?

Voici une présentation globale d'un jeu de différents outils classiques. Combinés entre eux, il fluidifieront et automatiseront les échanges, vous permettant ainsi d'augmenter la taille de vos projets, celle de vos équipes, équipes parfois devenues géographiquement éclatées.
* Gestion de tickets et centralisation documentaire avec Redmine
* Versionnement de code avec Git
* Déploiements avec Features, Drush, Jenkins
* Dématérialisation de la communication avec Skype, Hangout ou autres, IRC
* Tests avec Selenium
* Montée en charge avec Tsung

Published in: Technology

Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp Paris 2013

  1. 1. 123/06/2013Gestion de projet Drupal :Gestion de projet Drupal :quelques outils indispensablesquelques outils indispensablesPierre TernonOpen Web Solutions
  2. 2. 223/06/2013Bonjour !Bonjour !  Pierre Ternon  Associé fondateur, gérantOpen Web Solutions
  3. 3. 323/06/2013Plan de la présentationPlan de la présentationSpécificationsRedmineVersionnementDrushDéploiementCommunicationTests et montée en charge
  4. 4. 423/06/2013SpécificationsSpécificationsSpécifications fonctionnelles sous Axure :− Lisibilité pour le client− Maquette interactive cliquable− Annotations et commentairesSpécifications techniques− Types de contenus− Configuration du Drupal, taxonomies− Modules utilisés, paramétrages, développements spécifiques− Modules custom− Services divers
  5. 5. 523/06/2013
  6. 6. 623/06/2013Spéc. – gestion documentaireSpéc. – gestion documentaire… et déjà Redmine pendant cette phase : gestion documentaire et WikiCR de réunions, CR ateliers : – Mise à disposition de la préparation en amont– Mise à disposition du CR en avalInformations projet diverses, client comme équipe de développement :– Intervenants, coordonnées– Instances serveurs, repository Git, etc.– Livrables, documents divers (spécifications)– Guidelines Redmine pour le projet (workflow des demandes, process déchanges avec le client)– Guidelines développement (coding standards, règles de nommage, organisation des fichiers, etc.)– CR réunions de dévListe de fichiers catégorisée
  7. 7. 723/06/2013Spéc. – gestion documentaireSpéc. – gestion documentaireAvantages :Souplesse de rédaction / édition, ajout de rubriques, liensSimplicité du langage wiki utiliséAuthentification Redmine par projet (sécurité) et gestion des rôles/permissionsPage Wiki Page édition Wiki
  8. 8. 823/06/2013Redmine - présentationRedmine - présentationRedmine est organisé autour de projets (et sous-projets)
  9. 9. 923/06/2013Redmine - présentationRedmine - présentationGestion utilisateurs, rôles, permissions et alertes emails
  10. 10. 1023/06/2013Redmine - présentationRedmine - présentationModules et plugins activables par projet
  11. 11. 1123/06/2013Redmine - demandeRedmine - demande●Sujet / description / fichiers joints●Type (paramétrage global) : Bug / Tache / Assistance /Spécifications – Category au sens d.o●Statut (paramétrage global – Status au sens d.o) /Assignation (Assigned d.o) / Catégorie (paramétrage parprojet – Component d.o) : au cœur du process de gestiondes tickets●Dates (début, échéance) : idéal pour les planning (gantt)de développement●Temps estimé / Temps passé : TMA●Pourcentage de réalisation : utile tout au long de laphase de développement, TMA comprise●Liens entre les taches : tache parente, tache liée●Commentaire à chaque changement de statut→ Segmentation et organisation des tâches→ Workflow de traitement des taches→ Traçabilité des développements et évolutions
  12. 12. 1223/06/2013Redmine - demandeRedmine - demandeListe de demandes : « vues » paramétrables (filtres et champs) par utilisateur et par projet
  13. 13. 1323/06/2013Redmine - demandeRedmine - demandePas toujours facile de former les clients...– Documenter le plus possible les demandes : étapes de reproductibilité, liens– Rigeur dans la qualification et le workflow des demandes– Bien faire la différence entre des informations à demander par mail (« Bonjour, êtes-vousdisponible demain pour un rendez-vous téléphonique avec la DSI chez nous ? ») oupar le bais dune demande– Rouvrir une demande déjà postée en cas de problème revenant et éviter les doublonsdans labsolu… Mais au vu des décomptes de demandes, ça fonctionne :)Janv 2010 1308Janv 2011 3945Janv 2012 6007Juin 2013 10470
  14. 14. 1423/06/2013Redmine – DépôtRedmine – DépôtBrowser graphique du repository :•Branches•Révisions, historique•Commentaires associés auxcommits•Visualisation des fichiers à toutesles révisions possibles•Diff entre les révisions(Tout ça est déjà possible en ligne decommande évidemment)Demandes... couplées au dépôt Git (ou Subversion) !
  15. 15. 1523/06/2013Redmine – DépôtRedmine – Dépôtgit commit -m Refs #MON_ID : mon commentaire(tags : refs, references ou IssueID)Changement de statut automatique dune demande en fonction du commentaire du commit(fixes ou closes passe la demande en résolu ou fermé)Et possibilité de les combiner :git commit -m This commit refs #1, #2 and fixes #3LE plus : association demande ↔ commits
  16. 16. 1623/06/2013
  17. 17. 1723/06/2013Redmine - conclusionRedmine - conclusion=> Système classique mais efficace et soupleTout au long du projet : Centralisation de la gestion de projet» Demandes» Wiki (gestion de projet : CR réunions, spécifications, CR ateliers de travail)» Documents (fichiers spécifications, livrables divers)Fonctionnalités supplémentaires et Plugins•Activité globale•Gantt : planning de réalisation/livraison des demandes•Autres modules : Forum, Calendrier, Annonces•Plugins : environ 400 ; ex. chez OWS : paste
  18. 18. 1823/06/2013Versionnement -Versionnement -•Versionnement en général : enregistrement structuré et commenté des différentes étapes delévolution du code, rollback possibles•Outil Open Source•Simple, efficace et décentralisé (permet de travailler offline : la plupart des opérations sontréalisées en local)•Quelques commandes de base :•clone•add•branch / merge•pull / commit / push•diff•status
  19. 19. 1923/06/2013Versionnement -Versionnement -Communauté, documentation :https://git.wiki.kernel.org/index.php/GitwebSans compétences système,possibilité dhéberger le projet sur des forges :Gitorious, github, etc.Branches GIT :séparation dev / preprod / prodpour piloter les déploiements.
  20. 20. 2023/06/2013Drush (Drush (DruDrupalpal ShShell)ell)Quest-ce que Drush ?•Outil indispensable tout au long de la vie du projet : Drush (pour Drupal Shell)•Regroupement de scripts exécutés en ligne de commande.drush dl admin_menuPourquoi Drush ?•Gagner du temps, simplifier certaines taches•Scripts dautomatisation.Quelques commandes de base :•Télécharger, activer/désactiver des modules, des thèmes (drush dis overlay)•Vider les caches (drush cc all)•Exécuter le cron (drush cron)•Exécuter du php (drush php-eval MON CODE) / une requête (drush sqlq MA QUERY)•Récupérer une url temporaire de connexion admin (drush uli)•Etc. drush help :-)
  21. 21. 2123/06/2013Drush (Drush (DruDrupalpal ShShell)ell)Développement aisé de nouvelles commandes :
  22. 22. 2223/06/2013Déploiement - FeaturesDéploiement - FeaturesPourquoi Features ?•Sous Drupal, un certain nombre déléments se trouvent en base de données, notamment :les structures de contenus, les variables de configuration.•=> difficile au sein de notre process dintégration continue, dintégrer les phases dedéploiements (Integration / Merging, Deployment / Staging) et les éventuels retours en arrièreen cas de problème.Solution•Export (et Import) in code (module Drupal)des éléments structurels stockés en de base de données•hook_update_N() pour les mises à jour de base de données→ Configuration in code, contenus en base de données.
  23. 23. 2323/06/2013Déploiement - FeaturesDéploiement - FeaturesTypes dobjets exportés (et donc importés)•Variables (module Strongarm),•Context, panels•Imagecache•Views,•Types de contenus (et CCK ou fields)•Roles/permissions,•Vocabulaires•Extra modules : taxonomy (vocabulaires en D6), nodequeues, blocksCommandes DrushDrush feature-revert MA_FEATUREDrush feature-update MA_FEATUREDrush updatedb
  24. 24. 2423/06/2013Communication en ligne - IRCCommunication en ligne - IRCQuest-ce que IRC ?•Internet Relay Chat : protocole de communication textuelle sur Internet.•Côté serveur :•Réseaux libres et gratuits du type IRCNet ou Freenode•Ou installez votre propre serveur à laide des nombreux IRCd (IRC Daemon)•Côté client : Xchat fonctionne aussi bien sous Linux ou Windows (X-Chat Aqua pour Mac)Pourquoi ?Travail à distance ou en commun :•Equipes de développements•Des freelances•Des salariés en télétravail•Des fournisseurs (hébergeurs tiers par exemples)•Et même dans nos propres locaux :)
  25. 25. 2523/06/2013Communication en ligne - IRCCommunication en ligne - IRCComment ?IRC nous permet au quotidien :•Un salon de discussion par projet(un simple /join #ows_MONPROJET)•Dématérialisation, discussions en temps réelavec léquipe de développeurs,des fournisseurs éventuellement•Post des commit sur canal projet pour plus de cohésion de léquipe et de visibilité (Jenkins secharge du bot).Et les réunions ?•Réunion de développement : souvent Skype•Avec vidéo et partage dapplication/écran : Google Hangout (< 10 participants en gratuit)
  26. 26. 2623/06/2013Déploiement - JenkinsDéploiement - JenkinsSchéma de fonctionnementDev / Commit sur branche masterJenkins écoute GitoriousSuite de tests (coding standards)KO OK●Log Jenkins mailé au développeur●Notification IRC, salon projet●Déploiement sur le dev●Mise à jour des features, clear cache, etc.●Notification IRC, salon projet●PUIS : merge de la branche master vers la preprod → Jenkins déploie sur la preprod●Validation du client sur la preprod●Si OK : Merge Preprod → Prod
  27. 27. 2723/06/2013Echec après commitEx. script de déploiementNotification IRC
  28. 28. 2823/06/2013Tests avec SéléniumTests avec Sélénium•Installation poste local triviale et lancement des scripts de tests (interface graphique conviviale)•Facilité à enregistrer et à rejouer•Autocompletion pour les commandes selenium classiques lors de la saisie des actions•Tests sauvegardés en différents formats (Format HTML facile à lire et à compléter)•Possibilité de délégation à des profils de test
  29. 29. 2923/06/2013Tests avec SéléniumTests avec SéléniumPour plus de robustesse et dautomatisation des tests de non régression :•Selenium Webdriver pour automatisation côté serveur : utilise les fonctionnalités nativesdautomatisation de chaque browser•Tests en Java, Python, C#, etc. et Php•Ecriture des tests (pas denregistrement graphique)Je vous conseille la présentation de Didier samedi à 16h20 dans la salle Corail :Introduction aux tests de recette automatisés avec lextension Drupal pour Behat/Mink
  30. 30. 3023/06/2013Montée en charge - TsungMontée en charge - TsungPourquoi Tsung ?●Ecrit en Erlang : grand nombre de requêtes/sec avec peu de CPU (parallélisme)●Multi protocole : HTTP, PostgreSQL, MySQL, LDAP, etc.●Installation relativement aisée●Clustering entre des VM (liaison SSH), piloté par un tsung master.●Utilisation dun proxy pour enregistrer des sessions qui génèrent des fichiers XML(selenium proxy -> fichier XML de tsung).●Edition aisée des fichiers XML.●Possibilités de renseigner des formulaires et de jouer des sessions authentifiées.●Paramétrage fin de la montée en charge et de la répartition des utilisateurs créés par tsung entre lesdifférents scénarios définis dans le XML
  31. 31. 3123/06/2013Montée en charge - TsungMontée en charge - Tsung<load duration="240" unit="minute"><!-- several arrival phases can be set: for each phase, you can setthe mean inter-arrival time between new clients and the phaseduration --><arrivalphase phase="1" duration="2" unit="minute"><users interarrival="2" unit="second"></users></arrivalphase><arrivalphase phase="2" duration="2" unit="minute"><users interarrival="1" unit="second"></users></arrivalphase><arrivalphase phase="3" duration="2" unit="minute"><users interarrival="0.8" unit="second"></users></arrivalphase><arrivalphase phase="4" duration="90" unit="minute">< !--- en phase 4 on crée 0.6 user / second--><users interarrival="0.6" unit="second"></users></arrivalphase></load><option type="ts_http" name="user_agent"><user_agent probability="98">Mozilla/5.0 (X11; U; Linux i686; en-US;rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent><user_agent probability="1">Mozilla/5.0 (Linux; U; Android 2.1-update1; fr-fr;GTI9000 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko)Version/4.0 Mobile Safari/530.17</user_agent><user_agent probability="1">Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 likeMac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko)Version/3.1.1 Mobile/5F137 Safari/525.20</user_agent></option><session name=anonymous probability=10 type=ts_http><request><http url=http://prod.franceculture.fr/ version=1.1method=GET></http></request><thinktime random=true value=6/> <-- temps entre 2 clics<request><http url=/theme/sciences-dures-et-sciences-humaines/geopolitiqueversion=1.1 method=GET></http></request><thinktime random=true value=4/>Scenario XMLNavigateurs utilisésRépartition des sessions
  32. 32. 3223/06/2013Montée en charge - TsungMontée en charge - Tsung
  33. 33. 3323/06/2013Montée en charge - TsungMontée en charge - Tsung
  34. 34. 3423/06/2013Merci pour votre écoute !Merci pour votre écoute !

×