Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

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

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Réussir son projet Drupal
Réussir son projet Drupal
Chargement dans…3
×

Consultez-les par la suite

1 sur 34 Publicité

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

Télécharger pour lire hors ligne

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

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

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Publicité

Similaire à Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp Paris 2013 (20)

Plus récents (20)

Publicité

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

  1. 1. 123/06/2013 Gestion de projet Drupal :Gestion de projet Drupal : quelques outils indispensablesquelques outils indispensables Pierre Ternon Open Web Solutions
  2. 2. 223/06/2013 Bonjour !Bonjour !   Pierre Ternon   Associé fondateur, gérant Open Web Solutions
  3. 3. 323/06/2013 Plan 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/2013 Spé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/2013 Spé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év Liste de fichiers catégorisée
  7. 7. 723/06/2013 Spéc. – gestion documentaireSpéc. – gestion documentaire Avantages :  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/permissions Page Wiki Page édition Wiki
  8. 8. 823/06/2013 Redmine - présentationRedmine - présentation Redmine est organisé autour de projets (et sous-projets)
  9. 9. 923/06/2013 Redmine - présentationRedmine - présentation Gestion utilisateurs, rôles, permissions et alertes emails
  10. 10. 1023/06/2013 Redmine - présentationRedmine - présentation Modules et plugins activables par projet
  11. 11. 1123/06/2013 Redmine - 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 par projet – Component d.o) : au cœur du process de gestion des 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 la phase 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/2013 Redmine - demandeRedmine - demande Liste de demandes : « vues » paramétrables (filtres et champs) par utilisateur et par projet
  13. 13. 1323/06/2013 Redmine - demandeRedmine - demande Pas 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-vous disponible demain pour un rendez-vous téléphonique avec la DSI chez nous ? ») ou par le bais d'une demande – Rouvrir une demande déjà postée en cas de problème revenant et éviter les doublons dans l'absolu … Mais au vu des décomptes de demandes, ça fonctionne :) Janv 2010 1308 Janv 2011 3945 Janv 2012 6007 Juin 2013 10470
  14. 14. 1423/06/2013 Redmine – DépôtRedmine – Dépôt Browser graphique du repository : • Branches • Révisions, historique • Commentaires associés aux commits • Visualisation des fichiers à toutes les révisions possibles • Diff entre les révisions (Tout ça est déjà possible en ligne de commande évidemment) Demandes... couplées au dépôt Git (ou Subversion) !
  15. 15. 1523/06/2013 Redmine – DépôtRedmine – Dépôt git commit -m 'Refs #MON_ID : mon commentaire' (tags : refs, references ou IssueID) Changement de statut automatique d'une 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 #3' LE plus : association demande ↔ commits
  16. 16. 1623/06/2013
  17. 17. 1723/06/2013 Redmine - conclusionRedmine - conclusion => Système classique mais efficace et souple Tout 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/2013 Versionnement -Versionnement - • Versionnement en général : enregistrement structuré et commenté des différentes étapes de l'évolution du code, rollback possibles • Outil Open Source • Simple, efficace et décentralisé (permet de travailler offline : la plupart des opérations sont réalisées en local) • Quelques commandes de base : • clone • add • branch / merge • pull / commit / push • diff • status
  19. 19. 1923/06/2013 Versionnement -Versionnement -  Communauté, documentation : https://git.wiki.kernel.org/index.php/Gitweb  Sans compétences système, possibilité d'héberger le projet sur des forges : Gitorious, github, etc.  Branches GIT : séparation dev / preprod / prod pour piloter les déploiements.
  20. 20. 2023/06/2013 Drush (Drush (DruDrupalpal ShShell)ell) Qu'est-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_menu Pourquoi Drush ? • Gagner du temps, simplifier certaines taches • Scripts d'automatisation. 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/2013 Drush (Drush (DruDrupalpal ShShell)ell) Développement aisé de nouvelles commandes :
  22. 22. 2223/06/2013 Déploiement - FeaturesDéploiement - Features Pourquoi 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 d'intégration continue, d'intégrer les phases de déploiements (Integration / Merging, Deployment / Staging) et les éventuels retours en arrière en 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/2013 Déploiement - FeaturesDéploiement - Features Types d'objets 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, blocks Commandes Drush Drush feature-revert MA_FEATURE Drush feature-update MA_FEATURE Drush updatedb
  24. 24. 2423/06/2013 Communication en ligne - IRCCommunication en ligne - IRC Qu'est-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 à l'aide 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/2013 Communication en ligne - IRCCommunication en ligne - IRC Comment ? IRC nous permet au quotidien : • Un salon de discussion par projet (un simple /join #ows_MONPROJET) • Dématérialisation, discussions en temps réel avec 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 se charge du bot). Et les réunions ? • Réunion de développement : souvent Skype • Avec vidéo et partage d'application/écran : Google Hangout (< 10 participants en gratuit)
  26. 26. 2623/06/2013 Déploiement - JenkinsDéploiement - Jenkins Schéma de fonctionnement Dev / Commit sur branche master Jenkins écoute Gitorious Suite 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/2013 Echec après commit Ex. script de déploiement Notification IRC
  28. 28. 2823/06/2013 Tests 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/2013 Tests avec SéléniumTests avec Sélénium Pour plus de robustesse et d'automatisation des tests de non régression : • Selenium Webdriver pour automatisation côté serveur : utilise les fonctionnalités natives d'automatisation de chaque browser • Tests en Java, Python, C#, etc. et Php • Ecriture des tests (pas d'enregistrement graphique) Je vous conseille la présentation de Didier samedi à 16h20 dans la salle Corail : Introduction aux tests de recette automatisés avec l'extension Drupal pour Behat/Mink
  30. 30. 3023/06/2013 Montée en charge - TsungMontée en charge - Tsung Pourquoi 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 d'un 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 les différents scénarios définis dans le XML
  31. 31. 3123/06/2013 Montée en charge - TsungMontée en charge - Tsung <load duration="240" unit="minute"> <!-- several arrival phases can be set: for each phase, you can set the mean inter-arrival time between new clients and the phase duration --> <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 like Mac 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.1' method='GET'></http></request> <thinktime random='true' value='6'/> <-- temps entre 2 clics <request><http url='/theme/sciences-dures-et-sciences-humaines/geopolitique' version='1.1' method='GET'></http></request> <thinktime random='true' value='4'/> Scenario XML Navigateurs utilisés Répartition des sessions
  32. 32. 3223/06/2013 Montée en charge - TsungMontée en charge - Tsung
  33. 33. 3323/06/2013 Montée en charge - TsungMontée en charge - Tsung
  34. 34. 3423/06/2013 Merci pour votre écoute !Merci pour votre écoute !

×