Gestion de projet Drupal :
quelques outils indispensables
Pierre Ternon
Open Web Solutions
Bonjour!
Pierre Ternon
Associ fondateur, grant
Open Web Solutions
Plan de la prsentation
Spcifications
Redmine
Versionnement
Drush
Dploiement
Communication
Tests et monte en charge
Spcifications
Spcifications fonctionnelles sous Axure:
Lisibilit pour le client
Maquette interactive cliquable
Annotations et commentaires
Spcifications techniques
Types de contenus
Configuration du Drupal, taxonomies
Modules utiliss, paramtrages, dveloppements spcifiques
Modules custom
Services divers
Spc. gestion documentaire
et dj Redmine pendant cette phase: gestion documentaire et
Wiki
CR de runions, CR ateliers:
Mise disposition de la prparation en amont
Mise disposition du CR en aval
Informations projet diverses, client comme quipe de dveloppement:
Intervenants, coordonnes
Instances serveurs, repository Git, etc.
Livrables, documents divers (spcifications)
Guidelines Redmine pour le projet (workflow des demandes, process d'changes avec le client)
Guidelines dveloppement (coding standards, rgles de nommage, organisation des fichiers, etc.)
CR runions de dv
Liste de fichiers catgorise
Spc. gestion documentaire
Avantages:
Souplesse de rdaction / dition, ajout de rubriques, liens
Simplicit du langage wiki utilis
Authentification Redmine par projet (scurit) et gestion des rles/permissions
Page Wiki
Page dition Wiki
Redmine - prsentation
Redmine est organis autour de projets (et sous-projets)
Redmine - prsentation
Gestion utilisateurs, rles, permissions et alertes emails
Redmine - prsentation
Modules et plugins activables par projet
Redmine - demande
Sujet / description / fichiers joints
Type (paramtrage global): Bug / Tache / Assistance / Spcifications Category au sens d.o
Statut (paramtrage global Status au sens d.o) / Assignation (Assigned d.o) / Catgorie (paramtrage par projet Component d.o): au cur du process de gestion des tickets
Dates(dbut, chance): idal pour les planning (gantt) de dveloppement
Temps estim/ Temps pass : TMA
Pourcentage de ralisation: utile tout au long de la phase de dveloppement, TMA comprise
Liens entre les taches: tache parente, tache lie
Commentaire chaque changement de statut
Segmentation et organisation des tches Workflow de traitement des taches Traabilit des dveloppements et volutions
Redmine - demande
Liste de demandes: vues paramtrables (filtres et champs) par utilisateur et par projet
Redmine - 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 diffrence entre des informations demander par mail (Bonjour, tes-vous disponible demain pour un rendez-vous tlphonique avec la DSI chez nous?) ou par le bais d'une demande
Rouvrir une demande dj poste en cas de problme revenant et viter les doublons dans l'absolu
Mais au vu des dcomptes de demandes, a fonctionne :)
Janv 20101308Janv 20113945Janv 20126007Juin 201310470
Redmine Dpt
Browser graphique du repository:
Branches
Rvisions, historique
Commentaires associs aux commits
Visualisation des fichiers toutes les rvisions possibles
Diff entre les rvisions
(Tout a est dj possible en ligne de commande videmment)
Demandes... couples au dpt Git (ou Subversion)!
Redmine Dpt
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 rsolu ou ferm)
Et possibilit de les combiner:
git commit -m 'This commit refs #1, #2 and fixes #3'
LE plus: association demande commits
Redmine - conclusion
=> Systme classique mais efficace et souple
Tout au long du projet: Centralisation de la gestion de projet
Demandes
Wiki (gestion de projet : CR runions, spcifications, CR ateliers de travail)
Documents (fichiers spcifications, livrables divers)
Fonctionnalits supplmentaires et Plugins
Activit globale
Gantt: planning de ralisation/livraison des demandes
Autres modules: Forum, Calendrier, Annonces
Plugins: environ 400; ex. chez OWS: paste
Versionnement -
Versionnement en gnral: enregistrement structur et comment des diffrentes tapes de l'volution du code, rollback possibles
Outil Open Source
Simple, efficace et dcentralis (permet de travailler offline: la plupart des oprations sont ralises en local)
Quelques commandes de base:
clone
add
branch / merge
pull / commit / push
diff
status
Versionnement -
Communaut, documentation:
https://git.wiki.kernel.org/index.php/Gitweb
Sans comptences systme,
possibilit d'hberger le projet sur des forges:
Gitorious, github, etc.
Branches GIT:
sparation dev / preprod / prod
pour piloter les dploiements.
Drush (Drupal Shell)
Qu'est-ce que Drush?
Outil indispensable tout au long de la vie du projet: Drush (pour Drupal Shell)
Regroupement de scripts excuts en ligne de commande.
drush dl admin_menu
Pourquoi Drush?
Gagner du temps, simplifier certaines taches
Scripts d'automatisation.
Quelques commandes de base:
Tlcharger, activer/dsactiver des modules, des thmes (drush dis overlay)
Vider les caches(drush cc all)
Excuter le cron (drush cron)
Excuter du php (drush php-eval 'MON CODE') / une requte (drush sqlq 'MA QUERY')
Rcuprer une url temporaire de connexion admin (drush uli)
Etc. drush help :-)
Drush (Drupal Shell)
Dveloppement ais de nouvelles commandes:
Dploiement - Features
Pourquoi Features ?
Sous Drupal, un certain nombre d'lments se trouvent en base de
donnes, notamment:
les structures de contenus, les variables de configuration.
=> difficile au sein de notre process d'intgration continue,
d'intgrer les phases de dploiements (Integration / Merging,
Deployment / Staging) et les ventuels retours en arrire en cas de
problme.
Solution
Export (et Import) in code (module Drupal)
des lments structurels stocks en de base de donnes
hook_update_N() pour les mises jour de base de donnes
Configuration in code, contenus en base de donnes.
Dploiement - Features
Types d'objets exports (et donc imports)
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_FEATUREDrush feature-update MA_FEATUREDrush updatedb
Communication en ligne - IRC
Qu'est-ce que IRC?
Internet Relay Chat: protocole de communication textuelle sur Internet.
Ct serveur:
Rseaux libres et gratuits du type IRCNet ou Freenode
Ou installez votre propre serveur l'aide des nombreux IRCd (IRC Daemon)
Ct client: Xchat fonctionne aussi bien sous Linux ou Windows
(X-Chat Aqua pour Mac)
Pourquoi?Travail distance ou en commun :
Equipes de dveloppements
Des freelances
Des salaris en tltravail
Des fournisseurs (hbergeurs tiers par exemples)
Et mme dans nos propres locaux :)
Communication en ligne - IRC
Comment?IRC nous permet au quotidien:
Un salon de discussion par projet
(un simple /join #ows_MONPROJET)
Dmatrialisation, discussions en temps rel
avec l'quipe de dveloppeurs,
des fournisseurs ventuellement
Post des commit sur canal projet pour plus de cohsion de l'quipe
et de visibilit (Jenkins se charge du bot).
Et les runions?
Runion de dveloppement: souvent Skype
Avec vido et partage d'application/cran: Google Hangout (< 10 participants en gratuit)
Dploiement - Jenkins
Schma de fonctionnement
Dev / Commit sur branche master
Jenkins coute Gitorious
Suite de tests (coding standards)
KO
OK
Log Jenkins mail au dveloppeur
Notification IRC, salon projet
Dploiement sur le dev
Mise jour des features, clear cache, etc.
Notification IRC, salon projet
PUIS: merge de la branche master vers la preprod Jenkins dploie sur la preprod
Validation du client sur la preprod
Si OK: Merge Preprod Prod
Echec aprs commit
Ex. script de dploiement
Notification IRC
Tests avec Slnium
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 sauvegards en diffrents formats (Format HTML facile lire et complter)
Possibilit de dlgation des profils de test
Tests avec Slnium
Pour plus de robustesse et d'automatisation des tests de non rgression:
Selenium Webdriver pour automatisation ct serveur: utilise les fonctionnalits 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 prsentation de Didier samedi 16h20 dans la salle Corail:
Introduction aux tests de recette automatiss avec l'extension
Drupal pour Behat/Mink
Monte en charge - Tsung
Pourquoi Tsung?
Ecrit en Erlang : grand nombre de requtes/sec avec peu de CPU (paralllisme)
Multi protocole: HTTP, PostgreSQL, MySQL, LDAP, etc.
Installation relativement aise
Clustering entre des VM (liaison SSH), pilot par un tsung master.
Utilisation d'un proxy pour enregistrer des sessions qui gnrent
des fichiers XML
(selenium proxy -> fichier XML de tsung).
Edition aise des fichiers XML.
Possibilits de renseigner des formulaires et de jouer des sessions authentifies.
Paramtrage fin de la monte en charge et de la rpartition des utilisateurs crs par tsung entre les diffrents scnarios dfinis dans le XML
Monte en charge - Tsung
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21
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
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