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

{% highlight bash %} Failed to download doctrine/annotations from dist: Could not authenticate against github.com {% endhighlight %}

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 :

{% highlight bash %} gem install travis {% endhighlight %}

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 :

{% highlight bash %} travis encrypt GITHUB_COMPOSER_AUTH=123456789 –add #crypter votre token {% endhighlight %}

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

{% highlight yaml %} install:

  • composer config -g github-oauth.github.com $GITHUB_COMPOSER_AUTH
  • composer install –dev –no-interaction {% endhighlight %}

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