Travis: Composer `fails to download` packages

  • composer
  • php
  • travis-ci
  • github

Dans nos builds travis, il arrive que composer ne parvienne pas à télécharger et installer correctement des packages : le message suivant s'affiche :

Failed to download doctrine/annotations from dist: Could not authenticate against github.com

Ce message est dû aux limites de l'API de Github, qui limite le téléchargement par adresse IP. Les machines virtuelles hébergées par travis partageant la même adresse IP, les limites de Github sont vite atteintes.

La solution ?

S'authentifier auprès de Github avant d'installer les packages, ce qui permet d'augmenter la limite de téléchargements. Pour cela, créez un token d'authentification sur github. Aucune autorisation ne doit être côchée :

Capture d'écran de github : créer un tocken

Le token doit être ajouté au fichier de configuration .travis.yml mais, étant personnel, il est très déconseillé d'être enregistré en clair.

Travis propose une solution tout simple pour l'encrypter. D'abord, l'installer :

gem install travis

Ensuite, crypter votre token. Si vous exécutez ce script depuis le répertoire de votre code, travis peut reconnaitre le dépôt concerné, et ajouter automatiquement les indications nécessaires à votre fichier .travis.yml :

travis encrypt GITHUB_COMPOSER_AUTH=123456789 --add #crypter votre token

Il ne reste plus qu'à ajouter une ligne dans votre fichier .travis.yml pour que composer utilise votre token :

install:
  - composer config -g github-oauth.github.com $GITHUB_COMPOSER_AUTH
  - composer install --dev --no-interaction

note: vous pouvez utilisez plusieurs fois le même token auprès de différents projets.