Installieren eines benutzerdefinierten Composer-Pakets von GitLab

Lesezeit: 5 Minuten

Ich habe ein einfaches Test-WordPress-Plugin erstellt. Das Plugin besteht aus einer einzigen PHP-Datei (kreplach.php) und einer composer.json:

kreplach.php

<?php
    /*
    Plugin Name: kreplach
    Plugin URI: http://gitlab.example.com/sales/kreplach
    Description: just a test
    Author: Foo Bartok
    Version: 1.0
    Author URI: http://example.com
    */
?>

composer.json

{
    "license": "MIT",
    "name": "sales/kreplach",
    "type": "wordpress-plugin",
    "description": "just a test",
    "authors": [
        {
            "name": "Foo Bartok",
            "email": "[email protected]",
            "homepage": "example.com"
        }
    ],
    "require": {
        "composer/installers": "*"
    }
}

Auf meinem Dev-Server habe ich die folgende composer.json

Composer.json des Servers

{
    "repositories": [
        {
            "type": "composer",
            "url": "https://wpackagist.org"
        },
        {
            "type": "vcs",
            "url": "[email protected]:sales/kreplach.git"
        }
    ],
    "require": {
        "php": ">=5.4",
        "wpackagist-plugin/akismet": "*",
        "wpackagist-plugin/contact-form-7": "*",
        "wpackagist-plugin/wordpress-importer": "*",
        "sales/kreplach": "master",
        "johnpbloch/wordpress": "4.*",
        "composer/installers": "*"
    },
    "extra": {
        "wordpress-install-dir": "wp"
    }
}

Was meiner Meinung nach passieren sollte:

  1. Composer durchsucht das Git-Repository nach composer.json
  2. Composer stimmt mit dem Namen „sales/kreplach“ überein, der in der Datei „composer.json“ des Build-Hosts zu finden ist
  3. Composer kopiert den Inhalt des Master-Branch in wp-content/plugins/kreplach auf meinem Build-Host.
  4. Mein gefälschtes Plug-in tut nichts wie vorgesehen.

Was passiert eigentlich:

Bitteres, bitteres Versagen.

Loading composer repositories with package information Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package sales/kreplach could not be found in any version, there may be a typo in the package name.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
     see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

Ich habe das Klonen getestet sales/kreplach repo auf denselben Host, auf dem ich versuche, das Plugin zu installieren.

Um sicherzustellen, dass der Composer tatsächlich die composer.json-Datei aus dem Git-Repo liest, habe ich einen Tippfehler eingeführt (ja, völlig absichtlich, wie) der einen „Hey, diese JSON-Datei ist kaputt, Foam Head“-Fehler ausgegeben hat.

Meine Version von Gitlab ist Omnibus Edition 8.6.4 (heute installiert).

Ich habe den gleichen Trick erfolgreich mit pip/requirements.txt durchgeführt, um benutzerdefinierte Python-Module zu installieren, daher bin ich nicht daran gewöhnt, den Anweisungen zu folgen. Übersehe ich einen Schritt oder eine Art nicht offensichtliche (zumindest für mich) Nomenklatur?

  • hast du dafür am ende eine lösung gefunden? Ich bekomme das gleiche Problem

    – Vinzenz

    15. Dezember 2016 um 15:28 Uhr

Update 2021, 5 Jahre später, da GitLab 13.3 (Aug. 2020)GitLab (sogar in seiner kostenlosen Edition) hat eine Paketregistrierungwodurch GitLab als privates Repository eingerichtet wird.

Sie können darin veröffentlichen Komponistenpaketeund mit GitLab 13.11 (April 2021):

Verwenden Sie Composer v2 mit der GitLab-Paketregistrierung

Sie nutzen Komponist zum Veröffentlichen, Freigeben und Herunterladen Ihrer PHP-Abhängigkeiten in Ihr GitLab-Projekt. Vor sechs Monaten wurde eine neue Hauptversion (v2) von Composer mit einer Vielzahl von Änderungen eingeführt, darunter erhebliche Leistungsverbesserungen, Architekturaktualisierungen und Laufzeitfunktionen.
Sie können mehr über die Änderungen lesen hier.

Bis vor kurzem konnten Sie diese Verbesserungen nicht nutzen, da die GitLab-Registrierung Composer v2 nicht unterstützte.
Dies hat einige von Ihnen daran gehindert, die GitLab-Registrierung überhaupt zu verwenden.

Als MVC haben wir uns darauf konzentriert, Unterstützung für den obligatorischen Parameter hinzuzufügen metadata-URL. Wir haben einen neuen Endpunkt hinzugefügt GET group/:id/-/packages/composer/p2/:package_namedie die Metadaten für alle Pakete in Ihrem Repository zurückgibt.
Wenn Composer nach einem Paket sucht, ersetzt es %package% mit dem Paketnamen und ruft diese URL ab.

Das bedeutet, dass wir einen neuen Endpunkt hinzugefügt haben GET group/:id/-/packages/composer/p2/:package_name die die Metadaten für alle Pakete in Ihrem Repository zurückgibt.

Bitte beachten Sie, dass es zwei optionale Parameter gibt.
Wir haben Probleme offen, um Unterstützung für die hinzuzufügen providers-api und list-api Parameter. Wir hoffen, sie in einem bevorstehenden Meilenstein priorisieren zu können.

Sehen Dokumentation und Ausgabe.

Und weiterhin GitLab 13.11April 2021):

Laden Sie Composer-Abhängigkeiten aus der Versionskontrolle herunter

Beim Herunterladen von Composer-Abhängigkeiten haben Sie zwei Möglichkeiten: source oder dist. Für stabile Versionen verwendet Composer dist standardmäßig und lädt die Abhängigkeit als zip Datei.

Sie können es aber auch direkt aus der Versionskontrolle herunterladen.
Wenn --prefer-source aktiviert ist, lädt Composer Ihre Abhängigkeit als Git-Klon statt als Paket herunter zip Datei.

Dies ist nützlich, wenn Sie eine Fehlerbehebung für ein Projekt vornehmen und direkt einen lokalen Git-Klon der Abhängigkeit erhalten möchten.

Bis vor kurzem konnte man das nicht nutzen prefer-source und die damit verbundenen preferred-install Befehle und Konfigurationen beim Herunterladen von Composer-Abhängigkeiten.
Dies hinderte viele von Ihnen daran, die GitLab-Paketregistrierung für Ihre Composer-Abhängigkeiten zu verwenden.

Wir freuen uns, Ihnen mitteilen zu können, dass Sie jetzt Ihre Composer-Abhängigkeiten aus der Quelle herunterladen können.
Tun Sie dies, indem Sie einfach die hinzufügen prefer-source Option zu Ihrem Installationsbefehl wie folgt: composer update --prefer-source.

Sehen Dokumentation und Ausgabe.

Ich habe Gitlab nicht verwendet, aber diese Methode ziemlich oft mit Bitbucket und GitHub verwendet.

Sie müssen angeben "sales/kreplach": "dev-master" in der composer.json des Servers – beachten Sie, dass dem Zweignamen das Präfix “dev-” vorangestellt werden muss.

Anscheinend hat Composer spezielle Unterstützung für GitHub und BitBucket, die für Gitlab möglicherweise nicht existieren … also Sie möglicherweise angeben müssen git als Repository-Typ statt vcs.

Viel Glück!

Referenzen:

1368050cookie-checkInstallieren eines benutzerdefinierten Composer-Pakets von GitLab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy