2016-06-10 11 views
6

Mein Ziel ist es, eine composer.json Datei an unser Projekt-Repository zu übergeben, die angibt, welche Designs oder Plugins für dieses Projekt verwendet werden sollen und wann ein Entwickler herunterzieht Das Repo alles, was sie tun müssen, ist die Installation von Composer. Wir wollen die Plugins aus dem Projektrepo heraushalten, um das Aufblähen des Projektrepo zu stoppen und es langsam zu ziehen und zu schieben.Erstellung eines privaten Repositories für WordPress-Themes und Plugins von satis composer

Für Standard-Wordpress-Plugins wie "Jetpack by WordPress.com" ist dies in Ordnung, da wir https://wpackagist.org/ verwenden werden. Für Premium-Plugins und speziell angefertigte Plug-ins, die nicht im Open Source-Verfahren installiert werden können, möchten wir sie jedoch in einem Private Composer Repository hosten.

Da wir mehrere Versionen dieser Plugins haben, möchte ich alle Versionen wie 1.1, 1.2, 1.3 zeigen, damit der Entwickler in der composer.json angeben kann, welche Version benötigt wird, z. wenn eine zukünftige Version etwas kaputt macht und wir auf die vorherige Version zurücksetzen müssen.

Ich habe die Grundlagen der Einrichtung eines privaten Satis-Repository gelesen, die ich getan habe, aber ich kann es nicht durch die Git-Tags der Versionen durchlaufen und auch angeben, dass es ein Wordpress-Plugin und installieren Sie es in der richtigen Lage.

Dies war mein erster Versuch, in dem es alle git Versionen markiert wird:

{ 
    "name": "Private Repository", 
    "homepage": "http://packages.privaterepo.com", 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "[email protected]:companyname/project.git" 
     } 
    ], 
    "require-all": true 
} 

Und dieses ist eine, wo ich die Version angeben müssen, sondern bekommen es in der richtigen Wordpress-Plugin Standort zu installieren:

{ 
    "name": "Private Repository", 
    "homepage": "http://packages.privaterepo.com", 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "company/project", 
       "description": "WordPress Plugin", 
       "version": "1.0", 
       "source": { 
        "type": "git", 
        "url": "[email protected]:company/project.git", 
        "reference": "origin/master" 
       }, 
       "type": "wordpress-plugin", 
       "require": { 
        "php": ">=5.3.2", 
        "composer/installers": "*" 
       } 
      } 
     } 
    ], 
    "require-all": true, 
    "require-dependencies": true, 
    "extra": { 
     "installer-paths": { 
      "wp-content/plugins/{$name}/": ["type:wordpress-plugin"] 
     } 
    } 
} 

Kann jemand beraten, wie ich diese beiden Szenarien zusammen arbeiten?

+0

Ich mache etwas sehr ähnlich zu dir und der einzige Unterschied, den ich sehen kann, ist, dass ich nicht Require-All benötige ich sie alle eins nach dem anderen benötige (also "require": {dann eine Liste). Dies funktioniert gut für mich und die privaten Plugins installieren mit den wpackagist Einsen usw. –

+0

Welche Version des Codes beziehen Sie sich auf die erste oder zweite? –

+0

Sorry Phil, der zweite. Und für die Referenz Unter Quelle) Ich habe das Tag verwendet. –

Antwort

0

Ich denke, ich habe ein ähnliches Setup: Im lokalen Satis Repo haben wir sowohl interne Pakete von einem privaten Git-Server, als auch alle externen Pakete von Github.

Der Trick besteht darin, zwei Schritte auszuführen: Schritt eins zieht nur die Metadaten aller externen Pakete, und hier kommt Ihr Versionsbereich ins Spiel, um ALLES zu vermeiden.

Der zweite Schritt wird alle lokalen Git repos scannen durch und erfassen alle Versionen und wird zusätzlich das Composer-Repo in Schritt erstellt hinzufügen 1.

Effektiv werden Sie mit zwei Satis Konfigurationen beschäftigen, die zwei Ergebnisse schaffen, und Das Ergebnis des ersten Jobs für externe Pakete ruft nur alle Metadaten ab, im zweiten Schritt wird es wie ein lokales Git Repo importiert und verwendet und der zweite Schritt wird so konfiguriert, dass nach "allen" Versionen gesucht wird und möglicherweise ZIP-Dateien erstellt werden Sie erstellen eine nette lokale Sicherungskopie von jedem Paket, das Sie benötigen.

Oder mit anderen Worten:

satis-external.json

{ 
    "repositories": [ 
     { 
      "type":"composer", 
      "url":"https://packagist.org" 
     } 
    ], 
    "require": { 
     "any/package":">=2.0" 
    } 
    "output-html": false, 
    "require-dependencies": true 
} 

Run it:

php -dmemory_limit=2G satis/bin/satis build satis-external.json external/ 

satis intern.

json
{ 
    "repositories": [ 
     { 
      "type": "composer", 
      "url": "http://url/from/external/above" 
     }, 
     { 
      "type": "vcs", 
      "url": "ssh://internal/gitrepo.git" 
     } 
    ], 
    "require-all": true, 
    "archive": { 
     "directory": "dist", 
     "format": "zip", 
     "prefix-url": "https://whatever/youneed", 
     "skip-dev": true 
    } 
} 

Führen Sie dieses

php -dmemory_limit=2G satis/bin/satis build satis-internal.json internal/ 

einen "type = Komponist" Repository in Satis wird diese Handlung wie jedes andere Repository machen Hinzufügen - vor allem wird es alle Pakete erwähnt herunterladen, wenn Sie „require-all = true ", also sei vorsichtig, packagist oder andere Repos nicht direkt hinzuzufügen.

Beachten Sie auch, dass "require-dependencies" für die externen Pakete gilt, weil Sie wahrscheinlich nicht die Mühe machen müssen, jede Abhängigkeit der zu verwendenden Pakete hinzuzufügen.

Wenn einige Ihrer bezahlten Pakete Remote-Repo-Zugriff bieten, können Sie diesen Repo in der externen Konfiguration zusammen mit Zugangsdaten hinzufügen - es sollte funktionieren.

+0

Oh, großartig: Eine -1 Stimme ohne zu kommentieren, was dem Benutzer nicht geholfen hat. – Sven