Eigenes composer Repository mit Satis

Jeder, der sich schon einmal mit composer beschäftigt hat, kennt sicherlich das öffentliche repository Packagist. Natürlich sind dort meine eigenen Extensions ebenfalls gelistet. Das ist auch gut so und völlig ausreichend, wenn man öffentliche Pakete zur Verfügung stellen möchte. Möchte man aber zum Beispiel nur Unternehmensintern mit Composer arbeiten, sollte man diese Pakete natürlich nicht unter Packagist aufnehmen lassen. Doch wie schafft man es, dass diese Pakete dennoch gefunden werden?

Die Lösung ist relativ einfach und nennt sich Satis. Dieses Tool ermöglich es quasi, ein eigenes Packagist zu generieren. Relativ einfach sogar. Ich habe das Ganze nach wenigen Minuten ans Laufen gebracht.

Installation

Dazu habe ich als erstes ein neues Verzeichnis auf meinem Webserver erstellt und Satis geladen:

mkdir packages
cd packages

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project composer/satis --stability=dev --keep-vcs

Danach hat meinen ein weiteres Unterverzeichnis namens satis. Daneben legt man dann einfach ein weiteres Verzeichnis an, welches als Ziel für die generierten HTML-Dateien dient – ich habe es einfach mal web genannt. Auf dieses Verzeichnis habe ich dann auch direkt eine neue Subdomain (packages.mkleine.de) zeigen lassen.

Jetzt nur noch die Daten generieren. Also zunächst einmal eine Konfiguration anlegen, welche alle Pakete enthält, welche gelistet werden sollen. Bitte beachte, dass jedes dieser Pakete natürlich eine eigene composer.json braucht. Andernfalls funktioniert der Prozess nicht. Also die selben Voraussetzungen, wie auch für Packagist.

Ich habe einfach mal die selben Pakete genommen, welche eh schon auf Packagist liegen. Sinnlos, aber für eine Demo sicherlich völlig ok. Die Datei nenne ich satis.json:

{
   "name": "mkleine.de Composer Packages",
   "homepage": "http://packages.mkleine.de",
   "description": "Just a list of all my composer packages",
   "repositories": [
      { "type": "vcs", "url": "git@github.com:klein0r/magento-category-merge.git"},
      { "type": "vcs", "url": "git@github.com:klein0r/magento-customer-helper.git"},
      { "type": "vcs", "url": "git@github.com:klein0r/magento-language-routes.git"}
   ]
}

Mehr Infos braucht man hier schon gar nicht mehr – alles andere wird aus den jeweiligen Repos gezogen. Nun nur noch die Seite generieren. Damit Satis auf dem aktuellen Stand bleibt, habe ich eine build.sh angelegt, welche diese Aufgabe für mich übernimmt:

#!bin/bash

cd satis
git pull
php ../composer.phar install

php bin/satis build ../satis.json ../web

Das wars auch schon. Damit die Pakete aktuell bleiben, richtet man einfach noch einen Cronjob ein, welcher die build.sh regelmäßig aufruft und schon ist man fertig. Wirklich simpel, oder?

Das Ergebnis sieht dann so aus: packages.mkleine.de

Satis-Example

 

Genau so etwas hat ebenfalls der Firegento e.V. erstellt und bereits jede Menge Magento-Extensions aufgenommen. Der Clou dabei ist, dass die satis.json ebenfalls einfach in einem git repository liegt. Das Ganze kann man unter packages.firegento.com bewundern.

Möchte man sein Modul dort gelistet sehen, stellt man einfach einen Pull-Request und schon ist man dabei. Gute Idee!

Verwendung

Damit man diese Packages nun in seiner eigenen composer.json wiederum findet, muss man einfach das Repository in seine Konfiguration aufnehmen. Satis zeigt einem genau das im oberen Bereich an:

{
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.mkleine.de"
        }
    ]
}

Fertig!

 


Beitrag veröffentlicht

in

von

Schlagwörter: