Automatisation
Gestionnaires de contenu
CMS
Christophe Villeneuve
@hellosct1
Qui ???
Christophe
Villeneuve
mozilla reps - firefox os - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp -security
RMLL 2017 – 6 Juillet 2017
Les sites Webs à l'ancienne
RMLL 2017 – 6 Juillet 2017
Les sites Webs d'Aujourd'hui
RMLL 2017 – 6 Juillet 2017
Industrialisation
● = Usine à sites
● Répondre à 1 ou plusieurs objectifs
– Le temps
● Délais court → Mise en production
– Le coût
● Réduction du coût de fabrication
– La maintenance
● Réduction du coût de maintenance
– L'homogénéité
● Respect d'un catalogue de fonctionnalités
● Permettre une présence massive et cohérente
RMLL 2017 – 6 Juillet 2017
Les forces
● Ce n'est pas un outil de conception pour
→ Un seul et unique site
● Approche par couche
● Une gestion et utilisation simultanée pour plusieurs
sites
→ Plusieurs méthodes
→ Plusieurs architectures possibles
● Point clé
→ Pas nécessaire d'installer plusieurs Drupal
RMLL 2017 – 6 Juillet 2017
Implémentation du contrôle d'accès !!! (1/2)
● Un pilotage des sites est unique ou non
→ Quel autonomie doit disposer chacun des sites ?
● Un visuel pour un visiteur :
→ Un site à part
→ Faisant partie d'un site unique
RMLL 2017 – 6 Juillet 2017
Implémentation du contrôle d'accès !!! (2/2)
● Le thème et la mise en page des contenus
→ Suivre une ligne éditorial précise ou non
● Un processus de publication
→ Unique
● Le contenu devra être partagé ou pas
→ Entre les différentes sites
RMLL 2017 – 6 Juillet 2017
Cas 1 : Installations distinctes (1/2)
● Approche autonome
– Chaque utilisation
unique
– Contrôle complet ou
presque complet
● Possibilité d'avoir des
versions différentes du
CMS
● Utilisation différentes
● Un fonctionnement
différent
● Pas de mise à jour
centralisée
● Connexion unique pour
les modifications
● Impossible de partager
de le même contenu sur
plusieurs sites
Avantages Inconvénients
RMLL 2017 – 6 Juillet 2017
Cas 1 : Installations distinctes (2/2) : Réalisation
● Réplication des nœuds
● Implémentations pour le référencement (SEO)
● La gestion des droits
● La gestion des profils
● La synchronisation
● Gestion
– Noms de domaines distincts
– Sous domaines
RMLL 2017 – 6 Juillet 2017
Cas 2 : Installations distinctes par Features (1/2)
● Variation de
l'architecture
● Outil pour exporter la
configuration d'un site
● Approche en micro-
services
● Configuration mi-
chemin : entre
– Le contenu
– La configuration
Avantages Inconvénients
RMLL 2017 – 6 Juillet 2017
Cas 2 : Installations distinctes Features (2/2)
● Type de contenu
● Les vues
● La gestion des images
● La duplication de certaines fonctionnalités
RMLL 2017 – 6 Juillet 2017
Cas 3 :Multi-sites (1/3)
● 1 seul core
● Facilité la maintenance
● Economie au niveau
mémoire vive des
serveurs
● Une configuration
unique
Avantages Inconvénients
RMLL 2017 – 6 Juillet 2017
Cas 3 :Multi-sites (2/3) : Réalisations
RMLL 2017 – 6 Juillet 2017
Cas 3 : Multi-sites : Domain Access (1/3)
● 1 seul Drupal core
● Gestion unique
● Gestion des droits et
uniques
● Gestion de plusieurs
domaines
● Une seule structure
– Type de contenu
– Vues
● Les variations plus
délicates
Avantages Inconvénients
RMLL 2017 – 6 Juillet 2017
Cas 3 : Domain Access (2/3) : Réalisations
RMLL 2017 – 6 Juillet 2017
Environnement
● Linux
– Debian, Ubuntu, Mint, CentOS, Redhat...
● Serveur :
– Apache / Nginx
● Langage :
– PHP 5.6 / PHP 7
● Base de données :
– MySQL / MariaDB / PostgreSQL
● Drupal
– 7 ou 8
● Cache externe :
– Varnish / Akamaï
RMLL 2017 – 6 Juillet 2017
Outils
● Drush
● Drupal Console
Drupal 7 et +
Drupal 8
RMLL 2017 – 6 Juillet 2017
Drupal : en lignes de commande
● Composer
● YML ou classique
● Makefile
● Mode console
● Méthode Synfony
$ drupal
generate:module
$ drupal
generate:controller
Drush Drupal Terminal
RMLL 2017 – 6 Juillet 2017
Install avec Drush (1/3)
> drush dl drupal
> cd drupal-8.2
> drush si standard -y
--db-url=mysql://login:PWD@localhost/drupal_bdd
--site-name="Drupal Ausy Nantes"
--account-name=admin
--account-pass=admin
--account-mail=mail@mail.com
RMLL 2017 – 6 Juillet 2017
Install avec Drush (2/3)
● Download
– Drupal
– Modules contrib
● Install Drupal
● Update Drupal and
contrib module
versions
● Run updatedb
● Clear the cache
● Run cron
● Run Drupal with a
lightweight web server
● Import, export and merge
configuration
● Add users and set their
roles
● Add permissions to roles
● Back up and restore Drupal
● Copy your database and
files to a remote server
● Compile twig templates
RMLL 2017 – 6 Juillet 2017
Install avec Drush (3/3)
Drupal 7 Drupal 8
RMLL 2017 – 6 Juillet 2017
Install avec Drupal console (1/3)
> curl -sS https://getcomposer.org/installer | php
> sudo mv composer.phar /usr/local/bin/composer
> sudo composer create-project
drupal-composer/drupal-project:$VERSION
$DIR --stability dev –no-interaction
> vendor/bin/drush si standard -y --db-url=$BDD_URL 
--site-mail=$MAIL --site-name=$NOMSITE --sites-
subdir=$DIRMULTI 
--account-name=$LOGIN --account-pass=$PASSWORD
--account-mail=$MAIL
RMLL 2017 – 6 Juillet 2017
Install avec Drupal Console (2/3)
● Installation à partir de
'composer'
● Produire du code
– Console command
– Content type
– Controller
– Entity
– Form alter hook
– Module
– Field type, widget and
formatter
– Image effect
– Rest resource
– Service
– Theme
RMLL 2017 – 6 Juillet 2017
Install avec Drupal Console (3/3)
Drupal 8
RMLL 2017 – 6 Juillet 2017
Automatisation
RMLL 2017 – 6 Juillet 2017
Intégration continue
Git
Jenkins
Behat
Ansible
...
RMLL 2017 – 6 Juillet 2017
Behat Drive Développement (BDD)
● Framework de tests
● Axé sur le comportement
Feature: Function to test
description
Free text
Scenario: Scenario 1
Given preconditions
When actions
Then results
Scenario: Scenario 2
RMLL 2017 – 6 Juillet 2017
Behat : exemple
Scenario: Title
Given I am on the homepage
Then I should see "Drupal"
Scenario: Log in
Given I visit "/user"
# fill the username and password input fields,
and click submit
When I fill in "Username" with "admin"
And I fill in "Password" with "admin"
And I press the "Log in" button
Then I should get a "200" HTTP response
And I should see text matching "Log out"
RMLL 2017 – 6 Juillet 2017
Test Drive Développement (TDD)
● Écrivez un test
● Exécutez le test
● Laissez le test échouer
● Écrire assez de code
● Exécutez votre test à nouveau
● Refactorez / nettoyer le code
● Exécutez le test à nouveau
● Répéter
RMLL 2017 – 6 Juillet 2017
Pourquuoi l'utiliser ?
● Meilleure compréhension
→ de ce que vous allez écrire
● Force la politique d'écriture
→ Un peu mieux
● Accélère le développement
RMLL 2017 – 6 Juillet 2017
Avantages de TDD
● Code testable
● Design propre
● Peut être refactoré avec confiance
● Le code minimal
→ Nécessaire pour satisfaire la carte d'histoire
● Une spécification personnelle
→ De fonctionnement du code
● Capable de soutenir un rythme
→ Soutenable de nouvelles fonctionnalités
RMLL 2017 – 6 Juillet 2017
Selenium
RMLL 2017 – 6 Juillet 2017
Automatisation
● Jenkins
● Hudson
● GitLab CI
● Travis CI
RMLL 2017 – 6 Juillet 2017
Merci
@hellosct1
Questions

Automatisation des gestionnaires de contenus (CMS)

  • 1.
  • 2.
    Qui ??? Christophe Villeneuve mozilla reps- firefox os - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp -security
  • 3.
    RMLL 2017 –6 Juillet 2017 Les sites Webs à l'ancienne
  • 4.
    RMLL 2017 –6 Juillet 2017 Les sites Webs d'Aujourd'hui
  • 5.
    RMLL 2017 –6 Juillet 2017 Industrialisation ● = Usine à sites ● Répondre à 1 ou plusieurs objectifs – Le temps ● Délais court → Mise en production – Le coût ● Réduction du coût de fabrication – La maintenance ● Réduction du coût de maintenance – L'homogénéité ● Respect d'un catalogue de fonctionnalités ● Permettre une présence massive et cohérente
  • 6.
    RMLL 2017 –6 Juillet 2017 Les forces ● Ce n'est pas un outil de conception pour → Un seul et unique site ● Approche par couche ● Une gestion et utilisation simultanée pour plusieurs sites → Plusieurs méthodes → Plusieurs architectures possibles ● Point clé → Pas nécessaire d'installer plusieurs Drupal
  • 7.
    RMLL 2017 –6 Juillet 2017 Implémentation du contrôle d'accès !!! (1/2) ● Un pilotage des sites est unique ou non → Quel autonomie doit disposer chacun des sites ? ● Un visuel pour un visiteur : → Un site à part → Faisant partie d'un site unique
  • 8.
    RMLL 2017 –6 Juillet 2017 Implémentation du contrôle d'accès !!! (2/2) ● Le thème et la mise en page des contenus → Suivre une ligne éditorial précise ou non ● Un processus de publication → Unique ● Le contenu devra être partagé ou pas → Entre les différentes sites
  • 9.
    RMLL 2017 –6 Juillet 2017 Cas 1 : Installations distinctes (1/2) ● Approche autonome – Chaque utilisation unique – Contrôle complet ou presque complet ● Possibilité d'avoir des versions différentes du CMS ● Utilisation différentes ● Un fonctionnement différent ● Pas de mise à jour centralisée ● Connexion unique pour les modifications ● Impossible de partager de le même contenu sur plusieurs sites Avantages Inconvénients
  • 10.
    RMLL 2017 –6 Juillet 2017 Cas 1 : Installations distinctes (2/2) : Réalisation ● Réplication des nœuds ● Implémentations pour le référencement (SEO) ● La gestion des droits ● La gestion des profils ● La synchronisation ● Gestion – Noms de domaines distincts – Sous domaines
  • 11.
    RMLL 2017 –6 Juillet 2017 Cas 2 : Installations distinctes par Features (1/2) ● Variation de l'architecture ● Outil pour exporter la configuration d'un site ● Approche en micro- services ● Configuration mi- chemin : entre – Le contenu – La configuration Avantages Inconvénients
  • 12.
    RMLL 2017 –6 Juillet 2017 Cas 2 : Installations distinctes Features (2/2) ● Type de contenu ● Les vues ● La gestion des images ● La duplication de certaines fonctionnalités
  • 13.
    RMLL 2017 –6 Juillet 2017 Cas 3 :Multi-sites (1/3) ● 1 seul core ● Facilité la maintenance ● Economie au niveau mémoire vive des serveurs ● Une configuration unique Avantages Inconvénients
  • 14.
    RMLL 2017 –6 Juillet 2017 Cas 3 :Multi-sites (2/3) : Réalisations
  • 15.
    RMLL 2017 –6 Juillet 2017 Cas 3 : Multi-sites : Domain Access (1/3) ● 1 seul Drupal core ● Gestion unique ● Gestion des droits et uniques ● Gestion de plusieurs domaines ● Une seule structure – Type de contenu – Vues ● Les variations plus délicates Avantages Inconvénients
  • 16.
    RMLL 2017 –6 Juillet 2017 Cas 3 : Domain Access (2/3) : Réalisations
  • 18.
    RMLL 2017 –6 Juillet 2017 Environnement ● Linux – Debian, Ubuntu, Mint, CentOS, Redhat... ● Serveur : – Apache / Nginx ● Langage : – PHP 5.6 / PHP 7 ● Base de données : – MySQL / MariaDB / PostgreSQL ● Drupal – 7 ou 8 ● Cache externe : – Varnish / Akamaï
  • 19.
    RMLL 2017 –6 Juillet 2017 Outils ● Drush ● Drupal Console Drupal 7 et + Drupal 8
  • 20.
    RMLL 2017 –6 Juillet 2017 Drupal : en lignes de commande ● Composer ● YML ou classique ● Makefile ● Mode console ● Méthode Synfony $ drupal generate:module $ drupal generate:controller Drush Drupal Terminal
  • 21.
    RMLL 2017 –6 Juillet 2017 Install avec Drush (1/3) > drush dl drupal > cd drupal-8.2 > drush si standard -y --db-url=mysql://login:PWD@localhost/drupal_bdd --site-name="Drupal Ausy Nantes" --account-name=admin --account-pass=admin --account-mail=mail@mail.com
  • 22.
    RMLL 2017 –6 Juillet 2017 Install avec Drush (2/3) ● Download – Drupal – Modules contrib ● Install Drupal ● Update Drupal and contrib module versions ● Run updatedb ● Clear the cache ● Run cron ● Run Drupal with a lightweight web server ● Import, export and merge configuration ● Add users and set their roles ● Add permissions to roles ● Back up and restore Drupal ● Copy your database and files to a remote server ● Compile twig templates
  • 23.
    RMLL 2017 –6 Juillet 2017 Install avec Drush (3/3) Drupal 7 Drupal 8
  • 24.
    RMLL 2017 –6 Juillet 2017 Install avec Drupal console (1/3) > curl -sS https://getcomposer.org/installer | php > sudo mv composer.phar /usr/local/bin/composer > sudo composer create-project drupal-composer/drupal-project:$VERSION $DIR --stability dev –no-interaction > vendor/bin/drush si standard -y --db-url=$BDD_URL --site-mail=$MAIL --site-name=$NOMSITE --sites- subdir=$DIRMULTI --account-name=$LOGIN --account-pass=$PASSWORD --account-mail=$MAIL
  • 25.
    RMLL 2017 –6 Juillet 2017 Install avec Drupal Console (2/3) ● Installation à partir de 'composer' ● Produire du code – Console command – Content type – Controller – Entity – Form alter hook – Module – Field type, widget and formatter – Image effect – Rest resource – Service – Theme
  • 26.
    RMLL 2017 –6 Juillet 2017 Install avec Drupal Console (3/3) Drupal 8
  • 27.
    RMLL 2017 –6 Juillet 2017 Automatisation
  • 28.
    RMLL 2017 –6 Juillet 2017 Intégration continue Git Jenkins Behat Ansible ...
  • 29.
    RMLL 2017 –6 Juillet 2017 Behat Drive Développement (BDD) ● Framework de tests ● Axé sur le comportement Feature: Function to test description Free text Scenario: Scenario 1 Given preconditions When actions Then results Scenario: Scenario 2
  • 30.
    RMLL 2017 –6 Juillet 2017 Behat : exemple Scenario: Title Given I am on the homepage Then I should see "Drupal" Scenario: Log in Given I visit "/user" # fill the username and password input fields, and click submit When I fill in "Username" with "admin" And I fill in "Password" with "admin" And I press the "Log in" button Then I should get a "200" HTTP response And I should see text matching "Log out"
  • 31.
    RMLL 2017 –6 Juillet 2017 Test Drive Développement (TDD) ● Écrivez un test ● Exécutez le test ● Laissez le test échouer ● Écrire assez de code ● Exécutez votre test à nouveau ● Refactorez / nettoyer le code ● Exécutez le test à nouveau ● Répéter
  • 32.
    RMLL 2017 –6 Juillet 2017 Pourquuoi l'utiliser ? ● Meilleure compréhension → de ce que vous allez écrire ● Force la politique d'écriture → Un peu mieux ● Accélère le développement
  • 33.
    RMLL 2017 –6 Juillet 2017 Avantages de TDD ● Code testable ● Design propre ● Peut être refactoré avec confiance ● Le code minimal → Nécessaire pour satisfaire la carte d'histoire ● Une spécification personnelle → De fonctionnement du code ● Capable de soutenir un rythme → Soutenable de nouvelles fonctionnalités
  • 34.
    RMLL 2017 –6 Juillet 2017 Selenium
  • 35.
    RMLL 2017 –6 Juillet 2017 Automatisation ● Jenkins ● Hudson ● GitLab CI ● Travis CI
  • 36.
    RMLL 2017 –6 Juillet 2017 Merci @hellosct1 Questions