SlideShare une entreprise Scribd logo
123/06/2013
Gestion de projet Drupal :Gestion de projet Drupal :
quelques outils indispensablesquelques outils indispensables
Pierre Ternon
Open Web Solutions
223/06/2013
Bonjour !Bonjour !
  Pierre Ternon
  Associé fondateur, gérant
Open Web Solutions
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
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
523/06/2013
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
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
823/06/2013
Redmine - présentationRedmine - présentation
Redmine est organisé autour de projets (et sous-projets)
923/06/2013
Redmine - présentationRedmine - présentation
Gestion utilisateurs, rôles, permissions et alertes emails
1023/06/2013
Redmine - présentationRedmine - présentation
Modules et plugins activables par projet
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
1223/06/2013
Redmine - demandeRedmine - demande
Liste de demandes : « vues » paramétrables (filtres et champs) par utilisateur et par projet
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
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) !
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
1623/06/2013
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
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
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.
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 :-)
2123/06/2013
Drush (Drush (DruDrupalpal ShShell)ell)
Développement aisé de nouvelles commandes :
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.
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
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 :)
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)
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
2723/06/2013
Echec après commit
Ex. script de déploiement
Notification IRC
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
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
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
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
3223/06/2013
Montée en charge - TsungMontée en charge - Tsung
3323/06/2013
Montée en charge - TsungMontée en charge - Tsung
3423/06/2013
Merci pour votre écoute !Merci pour votre écoute !

Contenu connexe

Tendances

Drupal presentation
Drupal presentationDrupal presentation
Drupal presentation
Hery Zo Rakotondramanana
 
Estimation de projets Drupal
Estimation de projets DrupalEstimation de projets Drupal
Estimation de projets Drupal
Adyax
 
Découvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référenceDécouvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référence
LINAGORA
 
CV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPALCV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPALYoussouph Barry
 
Introduction à Drupal 8
Introduction à Drupal 8Introduction à Drupal 8
Introduction à Drupal 8
Core-Techs
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Chipway
 
Le poste de travail Libre
Le poste de travail LibreLe poste de travail Libre
Le poste de travail Libre
LINAGORA
 
DrupalCamp Paris 2013 - Drupal un cms oriente metier
DrupalCamp Paris 2013 - Drupal un cms oriente metierDrupalCamp Paris 2013 - Drupal un cms oriente metier
DrupalCamp Paris 2013 - Drupal un cms oriente metier
Romain Jarraud
 
Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8
Romain Jarraud
 
Theming drupal8 - Meetup Paris - 26-mars-2015
Theming drupal8 - Meetup Paris - 26-mars-2015Theming drupal8 - Meetup Paris - 26-mars-2015
Theming drupal8 - Meetup Paris - 26-mars-2015
Romain Jarraud
 
L'agenda d'OBM 2.4, cas d'utilisations avancés
L'agenda d'OBM 2.4, cas d'utilisations avancés L'agenda d'OBM 2.4, cas d'utilisations avancés
L'agenda d'OBM 2.4, cas d'utilisations avancés
LINAGORA
 
La gestion des médias dans Drupal 8
La gestion des médias dans Drupal 8La gestion des médias dans Drupal 8
La gestion des médias dans Drupal 8
woprrr
 
Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8
Anne-Sophie Picot
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
atelier111
 
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Core-Techs
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training Days
ALTER WAY
 
Quel CMS pour Quel Projet?!
Quel CMS pour Quel Projet?!Quel CMS pour Quel Projet?!
Quel CMS pour Quel Projet?!Core-Techs
 
Connecter Drupal à des API externes
Connecter Drupal à des API externesConnecter Drupal à des API externes
Connecter Drupal à des API externesSymetris
 
Comparatif CMS
Comparatif CMSComparatif CMS
Comparatif CMS
Quentin Apruzzese
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
Core-Techs
 

Tendances (20)

Drupal presentation
Drupal presentationDrupal presentation
Drupal presentation
 
Estimation de projets Drupal
Estimation de projets DrupalEstimation de projets Drupal
Estimation de projets Drupal
 
Découvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référenceDécouvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référence
 
CV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPALCV_Youssouph_BARRY_DRUPAL
CV_Youssouph_BARRY_DRUPAL
 
Introduction à Drupal 8
Introduction à Drupal 8Introduction à Drupal 8
Introduction à Drupal 8
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
 
Le poste de travail Libre
Le poste de travail LibreLe poste de travail Libre
Le poste de travail Libre
 
DrupalCamp Paris 2013 - Drupal un cms oriente metier
DrupalCamp Paris 2013 - Drupal un cms oriente metierDrupalCamp Paris 2013 - Drupal un cms oriente metier
DrupalCamp Paris 2013 - Drupal un cms oriente metier
 
Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8
 
Theming drupal8 - Meetup Paris - 26-mars-2015
Theming drupal8 - Meetup Paris - 26-mars-2015Theming drupal8 - Meetup Paris - 26-mars-2015
Theming drupal8 - Meetup Paris - 26-mars-2015
 
L'agenda d'OBM 2.4, cas d'utilisations avancés
L'agenda d'OBM 2.4, cas d'utilisations avancés L'agenda d'OBM 2.4, cas d'utilisations avancés
L'agenda d'OBM 2.4, cas d'utilisations avancés
 
La gestion des médias dans Drupal 8
La gestion des médias dans Drupal 8La gestion des médias dans Drupal 8
La gestion des médias dans Drupal 8
 
Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training Days
 
Quel CMS pour Quel Projet?!
Quel CMS pour Quel Projet?!Quel CMS pour Quel Projet?!
Quel CMS pour Quel Projet?!
 
Connecter Drupal à des API externes
Connecter Drupal à des API externesConnecter Drupal à des API externes
Connecter Drupal à des API externes
 
Comparatif CMS
Comparatif CMSComparatif CMS
Comparatif CMS
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
 

En vedette

Terminaux a-conteneur
Terminaux a-conteneurTerminaux a-conteneur
Terminaux a-conteneurRabah HELAL
 
Programme armada 2013
Programme armada 2013Programme armada 2013
Programme armada 2013Lars Skjulte
 
Fondamentalismes et femmes
Fondamentalismes et femmesFondamentalismes et femmes
Fondamentalismes et femmes
icm13
 
P sipeyre, experience pedagogique
P sipeyre, experience pedagogiqueP sipeyre, experience pedagogique
P sipeyre, experience pedagogiqueicm13
 
Liderazgo
LiderazgoLiderazgo
Liderazgo
Saulo Cifuentes
 
Livraison sans_connaissement
  Livraison sans_connaissement  Livraison sans_connaissement
Livraison sans_connaissementRabah HELAL
 
Tercer domi. cuaresma 2012
Tercer domi. cuaresma 2012Tercer domi. cuaresma 2012
Tercer domi. cuaresma 2012
ricardoreinagarcia
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sqlHanfi Akram
 
Séance d'orientation pour les candidats de l'examen de la CNE 2015
Séance d'orientation pour les candidats de l'examen de la CNE 2015Séance d'orientation pour les candidats de l'examen de la CNE 2015
Séance d'orientation pour les candidats de l'examen de la CNE 2015
MedCouncilCan
 
Proyecto comenius 1
Proyecto comenius 1Proyecto comenius 1
Proyecto comenius 1
Marga Gentil
 
los numeros del 0 al 10
los numeros del 0 al 10los numeros del 0 al 10
los numeros del 0 al 10
yyyoliis
 
Determinación electroquímica de la serotonina
Determinación electroquímica de la serotonina Determinación electroquímica de la serotonina
Determinación electroquímica de la serotonina
Nadia V
 
Controler sa telephonie
Controler sa telephonieControler sa telephonie
Controler sa telephonie
SIPLEO
 
Práctica 6
Práctica 6Práctica 6
Micofelonato y lupus
Micofelonato y lupusMicofelonato y lupus
Micofelonato y lupus
Sandra Amaya Ballesteros
 
Mésopotamie
MésopotamieMésopotamie
Mésopotamieeramthgin
 
Orientation à l’intention des candidats au format ECOS (2014)
Orientation à l’intention des candidats au format ECOS (2014)Orientation à l’intention des candidats au format ECOS (2014)
Orientation à l’intention des candidats au format ECOS (2014)MedCouncilCan
 

En vedette (20)

Terminaux a-conteneur
Terminaux a-conteneurTerminaux a-conteneur
Terminaux a-conteneur
 
Programme armada 2013
Programme armada 2013Programme armada 2013
Programme armada 2013
 
Fondamentalismes et femmes
Fondamentalismes et femmesFondamentalismes et femmes
Fondamentalismes et femmes
 
P sipeyre, experience pedagogique
P sipeyre, experience pedagogiqueP sipeyre, experience pedagogique
P sipeyre, experience pedagogique
 
Liderazgo
LiderazgoLiderazgo
Liderazgo
 
Livraison sans_connaissement
  Livraison sans_connaissement  Livraison sans_connaissement
Livraison sans_connaissement
 
Tercer domi. cuaresma 2012
Tercer domi. cuaresma 2012Tercer domi. cuaresma 2012
Tercer domi. cuaresma 2012
 
Terre promise
Terre promiseTerre promise
Terre promise
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sql
 
Luose
LuoseLuose
Luose
 
Ppt pc esp
Ppt pc espPpt pc esp
Ppt pc esp
 
Séance d'orientation pour les candidats de l'examen de la CNE 2015
Séance d'orientation pour les candidats de l'examen de la CNE 2015Séance d'orientation pour les candidats de l'examen de la CNE 2015
Séance d'orientation pour les candidats de l'examen de la CNE 2015
 
Proyecto comenius 1
Proyecto comenius 1Proyecto comenius 1
Proyecto comenius 1
 
los numeros del 0 al 10
los numeros del 0 al 10los numeros del 0 al 10
los numeros del 0 al 10
 
Determinación electroquímica de la serotonina
Determinación electroquímica de la serotonina Determinación electroquímica de la serotonina
Determinación electroquímica de la serotonina
 
Controler sa telephonie
Controler sa telephonieControler sa telephonie
Controler sa telephonie
 
Práctica 6
Práctica 6Práctica 6
Práctica 6
 
Micofelonato y lupus
Micofelonato y lupusMicofelonato y lupus
Micofelonato y lupus
 
Mésopotamie
MésopotamieMésopotamie
Mésopotamie
 
Orientation à l’intention des candidats au format ECOS (2014)
Orientation à l’intention des candidats au format ECOS (2014)Orientation à l’intention des candidats au format ECOS (2014)
Orientation à l’intention des candidats au format ECOS (2014)
 

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

Drush make driven development
Drush make driven developmentDrush make driven development
Drush make driven development
Sébastien Corbin
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Hamida Rebai Trabelsi
 
Rmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-fr
Gaëtan Trellu
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
Christophe Villeneuve
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
Microsoft
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
Microsoft
 
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
Microsoft Technet France
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
Paris Container Day
 
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureSQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
GUSS
 
Drupal 8
Drupal 8Drupal 8
Drupal 8
qdelance
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
Vincent Biret
 
Arte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webArte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes web
Acquia
 
A la découverte de Drupal
A la découverte de DrupalA la découverte de Drupal
A la découverte de Drupal
Claire Roubey
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Sql saturday 323 paris 2014 azure migration iaas et paas
Sql saturday 323 paris 2014   azure migration iaas et paasSql saturday 323 paris 2014   azure migration iaas et paas
Sql saturday 323 paris 2014 azure migration iaas et paas
Christophe Laporte
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
Antoine Rey
 
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
akramalidrissi1
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà
Microsoft Technet France
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà
Microsoft Décideurs IT
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
Alexandre Marie
 

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

Drush make driven development
Drush make driven developmentDrush make driven development
Drush make driven development
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Rmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-fr
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureSQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
 
Drupal 8
Drupal 8Drupal 8
Drupal 8
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
Arte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webArte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes web
 
A la découverte de Drupal
A la découverte de DrupalA la découverte de Drupal
A la découverte de Drupal
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Sql saturday 323 paris 2014 azure migration iaas et paas
Sql saturday 323 paris 2014   azure migration iaas et paasSql saturday 323 paris 2014   azure migration iaas et paas
Sql saturday 323 paris 2014 azure migration iaas et paas
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 

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

  • 1. 123/06/2013 Gestion de projet Drupal :Gestion de projet Drupal : quelques outils indispensablesquelques outils indispensables Pierre Ternon Open Web Solutions
  • 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
  • 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
  • 10. 1023/06/2013 Redmine - présentationRedmine - présentation Modules et plugins activables par projet
  • 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. 1223/06/2013 Redmine - demandeRedmine - demande Liste de demandes : « vues » paramétrables (filtres et champs) par utilisateur et par projet
  • 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. 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. 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
  • 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. 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. 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. 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. 2123/06/2013 Drush (Drush (DruDrupalpal ShShell)ell) Développement aisé de nouvelles commandes :
  • 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. 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. 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. 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. 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. 2723/06/2013 Echec après commit Ex. script de déploiement Notification IRC
  • 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. 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. 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. 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. 3223/06/2013 Montée en charge - TsungMontée en charge - Tsung
  • 33. 3323/06/2013 Montée en charge - TsungMontée en charge - Tsung
  • 34. 3423/06/2013 Merci pour votre écoute !Merci pour votre écoute !