Satis : gestionnaire de packages privés

Composer screenComposer présente deux outils pour gérer les packages privés : Private Packagist (payant) et Satis.

Satis est un gestionnaire open source de packages comme composer.

Il permet de stocker des packages privés (pour une entreprise par exemple), et de les rendre accessible via composer.

Une fois le paquet installé (suivre la documentation), il faut configurer les repository Git que l’on souhaite rendre disponibles.
Ils doivent être composer-compatible (disposer d’un fichier composer.json à la racine du projet) et avoir accès au repository Git (mettre le repository public ou gérer un compte authentifié).

{
    "name": "utils/fileloader",
    "type": "library",
    "description": "Permet de charger n'importe quel type de fichier"
}

Il faut ensuite préciser à Satis quels repository scruter, cela se fait via le fichier satis.json

{
    "name": "My Company Packages",
    "homepage": "http://packages.my.company",
    "repositories": [
        { "type": "vcs", "url": "git@vcs.my.company:utils/fileloader.git" },
        { "type": "vcs", "url": "git@vcs.my.company:utils/exporter.git" },
        { "type": "vcs", "url": "git@vcs.my.company:data/mock.git" }
    ],
    "require-all": true
}

Interface web

Il existe une commande qui permet de générer une interface web de vos packages disponibles :

php /var/www/packages/satis/bin/satis build /var/www/packages/satis/satis.json /var/www/packages/satis/web/ -n

Pour plus de souplesse on peut mettre cette commande dans une CRON

0 9-18 * * * php /var/www/packages/satis/bin/satis build /var/www/packages/satis/satis.json /var/www/packages/satis/web/ -n >> /var/log/cron/statis-build.log 2>&1

Les packages sont consultables depuis l’interface web :
Dashboard Satis

Démarrer un projet

En renseignant un nouveau repository dans le fichier composer.json, composer va en priorité chercher les packages sur l’URL indiquée, puis sur GitHub.
On peut donc mixer des packages privées et des packages plus classiques :

{
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.my.company"
        }
    ],
    "require": {
        "utils/fileloader": "dev-master",
        "utils/exporter": "dev-master",
        "data/mock": "dev-master",
        "nelmio/api-doc-bundle": "^2.13",
        "guzzlehttp/guzzle": "^6.3"
    },
    "config": {
        "minimum-stability": "dev"
    }
}
Share Button

Laisser un commentaire.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.