Salut,

Je résume le problème, aujourd'hui je maintiens pas mal de sites et j'utilise composer, npm, etc. pour les dépendances et mon code est sur un repo. J'ai de plus en plus de projets a maintenir et je voulais savoir si quelqu'un a une solution ou utilise un service pour vérifier de façon régulière (quotidienne si possible) les mises à jour des dépendances. Car aujourd'hui je n'ai pas d'autre moyen que par exemple faire un composer.json avec toutes les dépendances de tous mes projets et vérifier s’il y a eu une maj sur un dépôt. J'ai tenté de voir s’il y avait une api composer (un moyen de faire du composer à la main) pour faire un petit cron et derrière pourquoi un reporting quotidien si maj il doit y avoir, mais je n’ai rien trouvé. Je ne sais pas si des personnes rencontrent ce problème et une trouvée une solution ?

8 réponses


Tu peux créer une tâche CRON qui fera la commande composer update tous les soirs par exemple.

galyb
Auteur

Merci pour ta réponse. Je n’ai pas précisé, mais pour des raisons de sécurité et de maintenance optimales, je ne veux pas mettre à jours automatiquement les projets, je veux juste être tenu au courant des mises à jour possibles.

Simulate la commande update :

composer update --dry-run

Te donnera un output tel que :

composer update --dry-run
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 28 updates, 0 removals
  - Updating doctrine/cache (v1.6.1) to doctrine/cache (v1.6.2)
  - Updating doctrine/common (v2.7.2) to doctrine/common (v2.7.3)
  - Updating doctrine/dbal (v2.5.12) to doctrine/dbal (v2.5.13)
  - Updating symfony/polyfill-mbstring (v1.4.0) to symfony/polyfill-mbstring (v1.6.0)
  - Updating twig/twig (v1.34.4) to twig/twig (v1.35.0)
  - Updating symfony/polyfill-util (v1.4.0) to symfony/polyfill-util (v1.6.0)
  - Updating paragonie/random_compat (v2.0.10) to paragonie/random_compat (v2.0.11)
  - Updating symfony/polyfill-php70 (v1.4.0) to symfony/polyfill-php70 (v1.6.0)
  - Updating symfony/polyfill-php56 (v1.4.0) to symfony/polyfill-php56 (v1.6.0)
  - Updating symfony/polyfill-intl-icu (v1.4.0) to symfony/polyfill-intl-icu (v1.6.0)
  - Updating symfony/symfony (v3.2.11) to symfony/symfony (v3.2.13)
  - Updating doctrine/doctrine-cache-bundle (1.3.0) to doctrine/doctrine-cache-bundle (1.3.2)
  - Updating symfony/polyfill-apcu (v1.4.0) to symfony/polyfill-apcu (v1.6.0)
  - Updating doctrine/doctrine-bundle (1.6.8) to doctrine/doctrine-bundle (1.6.13)
  - Updating doctrine/orm (v2.5.6) to doctrine/orm (v2.5.11)
  - Updating friendsofsymfony/jsrouting-bundle (1.6.0) to friendsofsymfony/jsrouting-bundle (1.6.3)
  - Updating elasticsearch/elasticsearch (v5.2.0) to elasticsearch/elasticsearch (v5.3.0)
  - Updating ruflin/elastica (5.2.1) to ruflin/elastica (5.3.0)
  - Updating composer/ca-bundle (1.0.7) to composer/ca-bundle (1.0.8)
  - Updating sensiolabs/security-checker (v4.0.4) to sensiolabs/security-checker (v4.1.5)
  - Updating sensio/distribution-bundle (v5.0.20) to sensio/distribution-bundle (v5.0.21)
  - Updating sensio/framework-extra-bundle (v3.0.26) to sensio/framework-extra-bundle (v3.0.28)
  - Updating symfony/monolog-bundle (v3.1.0) to symfony/monolog-bundle (v3.1.1)
  - Updating symfony/swiftmailer-bundle (v2.6.2) to symfony/swiftmailer-bundle (v2.6.3)
  - Updating sensio/generator-bundle (v3.1.5) to sensio/generator-bundle (v3.1.6)
  - Updating symfony/phpunit-bridge (v3.3.4) to symfony/phpunit-bridge (v3.3.10)
  - Updating gedmo/doctrine-extensions (v2.4.30) to gedmo/doctrine-extensions (v2.4.31)
  - Updating friendsofsymfony/user-bundle (dev-master b1ea299) to friendsofsymfony/user-bundle (dev-master 71be5a7)

Tu as plus qu'à parser le retour et t'envoyer un mail ;)

galyb
Auteur

Merci pour la commande, j'avais trouvé aussi :

composer show -l

Mais le problème c'est de faire ça X20 projet, ça devient un sacré bordel surtout quand tu as des projets avec les mêmes dépendances et sans compter sur plusieurs serveurs.

Un script auquel tu donnes la liste de tes projets et où ils sont (comment y accéder ? ssh ? etc.) et qui fait ça automatiquement.

Mais tu gères comment tes projets ? Tu n'as pas une copie de chaque en local (ou plutôt l'inverse, la version sur le serveur est un git clone de la version locale) ?

galyb
Auteur

Ils sont sur bitbucket, je n’ai pas une copie de tout en local, car on est plusieurs et on ne travaille pas tous sur les projets et parfois de façon partielle. Pour moi la dernière version de référence c'est pas mon local, mais la branch master sur le dépôt bitbucket. Donc j'ai déjà fait un simple script qui va chercher tous mes projets sur bitbucket et récupère les fichiers composer.json des projets, mais lancer composer pour chacun des projets c'est très long, donc je me demandais s’il n’y avait pas un truc plus intelligent ou un service qui propose quelque chose plus adapté.

Je ne sais pas si ça peut t'aider, mais il y a tjrs l'API de composer qui pourrait être utile :

https://packagist.org/apidoc

galyb
Auteur

Merci pour le lien, je pense que ça va m'aider pour faire un outil automatisé.