Mit Composer und GitHub arbeiten

Die meisten Projekte auf GitHub unterstützten mittlerweile Composer. In diesem Artikel möchte ich darauf eingehen, wie man mit Composer arbeitet und wie man seine Projekte auf dieser Basis auf GitHub richtig verteilt und veröffentlicht. Ziel ist es, dass man als Entwickler nicht alle Quellen dritter in seine eigenen Repositories aufnehmen muss und immer mit den aktuellen Versionen arbeitet.

Ich für meinen Teil arbeite mit Mac OS X Mountain Lion und PHP 5.4.4 unter MAMP. Der Beitrag sollte sich aber auch auf jedem anderen Betriebssystem nachvollziehbar sein. Im Idealfall natürlich auf UNIX basierenden Betriebssystemen.

Um sich die letzte Version zu installieren, führt man einfach folgendes Kommando in einem leeren Verzeichnis aus.

curl -sS https://getcomposer.org/installer | php

Das Haupt-Repository für Composer liegt unter Packagist.org. Dort erhält man sämtlich Informationen zu vorhandenen Paketen und kann seine eigenen Pakete ebenfalls dort zur Verfügung stellen.

Eigene Pakete für Composer veröffentlichen

Wenn man sich auf Packagist registriert hat, kann man ganz einfach ein neues Paket hinzufügen. Ich möchte das einfach mal beispielhaft an einer Erweiterung für Magento durchführen.

Als erstes legt man sich eine Konfiguration im entsprechenden Git-Repository auf GitHub an (composer.json). Diese füllt man mit Inhalt und pusht diese mit in das Repository.

{
    "name": "mkleine/magento-customer-helper",
    "license": "OSL-3.0",
    "type": "magento-module",
    "description": "Sends an email after a given time range to customers which failed to login",
    "homepage": "https://mkleine.de/projekte-und-referenzen/magento/",
    "require": {
        "magento-hackathon/magento-composer-installer": "*"
    },
    "authors": [
        {
            "name": "Matthias Kleine"
        }
    ]
}

Wie man sieht werden Name, Lizenz, Typ und Beschreibung angegeben. Über den Namen sollte man sich an dieser Stelle schon einmal Gedanken machen. Dieser sollte später nicht noch einmal geändert werden, da er von vielen anderen Entwicklern in den eigenen Composer-Konfigurationen verwendet wird. Weiterhin kann man eine Webseite angeben und weitere Abhängigkeiten zu anderen Paketen. In diesem Fall brauche ich den Magento Composer Installer, welche ebenfalls auf GitHub verfügbar ist. Dort könnte man aber natürlich beliebig viele Pakete, in beliebigen Versionen mit Wildcards angeben. Hier ist mir die Version total egal.

Wenn man das getan hat, kann man auf Packagist ganz einfach sein Paket hinzufügen. Dazu gibt man die URL zum Git-Repository an und der Rest wird automatisch erledigt.

Packagist Submit Package

Das war es eigentlich auch schon – danach erhält man direkt den nächsten Screen und hat sein erstes Paket veröffentlicht.

Packagist New Package

Was nun noch stört, ist die rote Meldung. Diese bedeutet, dass das Paket nicht automatisch aktualisiert wird wenn sich die Quellen auf GitHub ändern. Dazu kann man eine entsprechende Hook auf GitHub anlegen. Dazu geht man in dem entsprechenden Repository auf Settings -> Service Hooks und wählt dort Packagist. Eingetragen werden Benutzername, Token und URL. Den Token findet man auf den Profil-Seiten von Packagist.

Diese Prozedur muss man leider für jedes einzelne Projekt ausführen. Doch die Arbeit lohnt sich, denn ab jetzt braucht man sich erstmal nicht mehr um die Updates auf Packagist kümmern.

Packagist GitHub Settings

Ich hoffe ich konnte etwas Licht ins dunkel bringen und habe euch motiviert, eure Pakete ebenfalls für Composer zur Verfügung zu stellen. Es ist wirklich unkompliziert und macht das Leben einfacher.


Beitrag veröffentlicht

in

, , ,

von

Schlagwörter: