Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Composer, le cercle vertueux des dépendances

Composer, le cercle vertueux des dépendances

L’objectif de ce talk sera de montrer comment utiliser Composer et l’intégration continue pour éviter les incompatibilités.

La vérification des versions viables les plus basses pour s’assurer que toute installation sera un succès et ainsi assurer la qualité du code fourni.

Stéphane HULARD

March 23, 2016
Tweet

More Decks by Stéphane HULARD

Other Decks in Programming

Transcript

  1. QUI SUIS-JE ? CONSULTANT TECHNIQUE WEB Développements spéci ques, création

    de site, constitution d'équipes, accompagnement, méthodes agiles...     https://chstudio.fr @s_hulard http://github.com/shulard [email protected]
  2. QU'EST-CE QUE C'EST ? Composer is a tool for dependency

    management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you. getcomposer.org
  3. LA GESTION DE DÉPENDANCES Déclarer les librairies utilisées dans votre

    projet Trouver et installer les versions compatibles par rapport à l'environnement { "name": "symfony/framework-standard-edition", "require": { "php": ">=5.3.9", "symfony/console": "2.8.*", "symfony/yaml": "2.8.*" }, "require-dev": { "phpunit/phpunit": "5.0" } }
  4. ASSURER LA COMPATIBILITÉ Différents environnements, différentes contraintes : Versions de

    PHP Extensions (xml, json, regex...) Versions patch, mineure, majeure Cassures de compatibilités (BC break) Garantie de fonctionnement de l'API publique Semantic Versioning
  5. QU'EST-CE QUE C'EST ? Prefer lowest versions of dependencies. Useful

    for testing minimal versions of requirements, generally used with --prefer-stable. getcomposer.org Pour l'histoire : Introduit par le CTO de pour . Nicolas Grekas Black re.io aider à abiliser les tests sur Symfony
  6. POURQUOI ? Tester la compatibilité du code avec la version

    la plus ancienne Garantir que le contexte d'exécution est stable
  7. COMMENT ? Créer des conditions de test spéci ques 

    Penser à la version de PHP Exemple avec un build : Travis CI matrix: include: - php: 5.4 env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" install: - travis_retry composer update ${COMPOSER_FLAGS} --no-interaction script: - composer test
  8. QUAND ? Fiabiliser la diffusion d'une librairie Grande variété de

    contexte d'utilisation S'assurer que le composer.json ne ment pas
  9. SAUF QUE... En testant avec --prefer-lowest : PHP Fatal error:

    Class 'React\Dns\Resolver\Factory' not found in /home/travis/build/php-http/react-adapter/src/ReactFactory.php on line 37 Le projet React ne respecte pas les règles de Semantic Versionning, l'API publique a changé sur des versions PATCH. Mon chier composer.json ment...
  10. PROBLÈME / SOLUTION Personne ne doit pouvoir importer l'adapter sur

    une version de React incompatible. Il faut adapter les dépendances en conséquence. { "name": "php-http/react-adapter", "require": { "php": ">=5.4", ... "react/http-client": "^0.4.8", "react/dns": "^0.4.1", "react/stream": "^0.4.3" } }