Des dépôts Composer privés avec Satis

Cet article a été publié depuis plus de 6 mois, cela signifie que le contenu peut ne plus être d'actualité.

Composer est certainement l'un des outils PHP les plus connus et utilisé à l'heure actuelle. Il permet en effet de gérer très facilement les dépendances d'un projet PHP. Cependant, (trop) peu de développeurs connaissent ou utilisent Satis, l'outil de création de dépôts Composer.

Pourtant Satis est un outil très pratique et permet de mettre en place une gestion de dépôts privés. On peut également l'utiliser afin de mirrorer nos dépendances Composer provenant de Github, ce qui pourrait permettre de continuer à travailler même si Github venait à ne plus être disponible.

Si peu de personnes utilisent Satis, c'est peut-être à cause de sa mise en place qui peut sembler (au premier abord du moins) complexe. Pourtant, nous allons voir qu'il n'y a rien de compliqué et que la configuration de Satis ressemble étrangement à celle de Composer.

Nous allons donc commencer par installer Satis. Bien entendu, nous allons utiliser Composer pour cela. L'installation de Satis se fait en une ligne de commande: php composer.phar create-project composer/satis --stability=dev --keep-vcs.

Une fois installé, il faut configurer Satis en lui indiquant comment accéder à nos dépôts. Voici un exemple de fichier de configuration:

{
    "name": "Satis",
    "homepage": "https://satis.local.dev",
    "archive": {
        "directory": "dist",
        "absolute-directory" : "/home/satis/dist",
        "format": "zip",
        "skip-dev": true
    },
    "repositories": [
        { "type": "composer", "url": "https://packagist.org" },
        { "type": "git", "url": "git://git.local.dev/my-bundle" },
    ],
    "require": {
        "symfony/symfony": "2.5.*",
        "doctrine/orm": "*",
        "private/my-bundle": "*"
    },
    "require-all": true
}

Je ne vais pas détailler ici l'ensemble des éléments de la configuration de Satis, je vous invite à lire la documentation de Composer pour cela. J'attire cependant votre attention sur la section require qui, comme dans un fichier composer.json, indique les dépendances que vous souhaitez mettre à disposition. Dans l'exemple ci-dessus, la configuration crée un miroir des dépôts symfony/symfony et doctrine/orm ainsi qu'un dépôt privé permettant d'exposer le composant private/my-bundle provenant d'un dépôt Git.

Pour démarrer la création du dépôt Satis, il suffit d'exécuter la commande:

php /path/to/satis/bin/satis build /path/to/satis.conf /path/to/packages-repository

Il ne reste plus qu'à donner un accès au dépôt que l'on vient de créer en configurant un serveur Web:
php -S 0.0.0.0:4680 -t /path/to/packages-repository

Votre dépôt Satis est maintenant configuré et vous pouvez l'utiliser dans l'ensemble de vos projets PHP via Composer. Il faudra, au préalable, préciser l'adresse de votre dépôt Satis dans le fichier composer.json en ajoutant une section repositories:

"repositories": [
    {
        "type": "composer",
        "url": "http://your-mirror-server:4680"
    }
],

Documentation de Satis

Dépôt Github