Composer: Von privaten Bitbucket Repositories abhängen

Um private Bitbucket Packages in Composer einzubinden haben wir drei Möglichkeiten.

Enweder:

  • Private Packagist (empfiehlt sich generell, um die Composer Maintainer zu unterstützen)
  • Eigenen Satis Server.
  • Oder direkt auf Bitbucket zugreifen.

Hier erkläre ich den letzten Weg. Dafür braucht Composer zwei Dinge:

  • Bitbucket Zugriff (OAuth oder SSH).
  • Ein in Composer verfügbares Repository.

Annahmen

Nehmen wir folgende Projektstruktur an:

├── composer.json
├── src/
└── tests/

Und eine composer.json mit ähnlichem Inhalt:

{
    "name": "smoothie/baum",
    "description": "An example for private repositories on Bitbucket.",
    "require": {
        "smoothie/baum": "*"
    },
    "minimum-stability": "dev"
}

Wenn wir nun composer update ausführen erklärt uns Composer, das dieses Package unbekannt ist.

Logisch, ist ja Privat.

Darum müssen wir Composer zeigen wo das Package liegt.

Repositories in Composer

Composer kennt etwas das wir Repositories nennen.

Für private Bitbucket Repositories reicht es zu wissen das diese Repositories mindestens einen Type und eine Url erwarten.

Ein Beispiel:

"repositories": [
    {
        "type": "vcs",
        "url": "https://bitbucket.org/pobbd/foo.git"
    }
]

Damit erklären wir Composer, das auf Bitbucket unter dem Benutzer (oder Team) pobbd im Repository foo ein Package liegt.

Bei einem update oder install wird eine composer.json erwartet.

Findet Composer diese, wird es geladen. Wenn nicht, dann bricht es.

Per default ist das Repository packagist.org angegeben.

Wir können beliebig weitere hinzufügen.

Um also unsere Augsangsdatei anzupassen brauchen wir eine URL. Bitbucket erlaubt uns die Auswahl. HTTPS oder SSH.

Am einfachsten erhalten wir die URL wenn wir das Repo im Browser öffnen und auf Clone klicken.

Falls du HTTPS verwendest entferne den Benutzer aus der URL.

Beispiel aus https://ieim@bitbucket.org/pobbd/foo.git wird https://bitbucket.org/pobbd/foo.git.

Beachte dass das ieim@ entfernt wurde.

Haben wir die URL öffnen die composer.json und fügen unser Snippet mit URL ein.

Nun erwarten wir etwas ähnliches wie:

{
    "name": "smoothie/baum",
    "description": "An example for private repositories on Bitbucket.",
    "require": {
        "smoothie/baum": "*"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://bitbucket.org/pobbd/foo.git"
        }
    ],
    "minimum-stability": "dev"
}

Noch ein composer update und BAM – we are done.

Sollte composer ein Token erwarten oder eine Fehlermeldung wie Failed to execute git clone werfen.

Dann stehen die Chancen hoch, das unautorisierte Anfragen an Bitbucket raus gehen.

Um autorisierte Anfragen aufzusetzen, habe ich zwei How-To’s für dich: HTTPS oder SSH.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert