Creando el repository privado de satis composer para los temas y plugins de WordPress

Mi objective es tener un file composer.json comprometido con nuestro repository de proyecto que especifique qué tema (s) o complemento (s) se deben usar para ese proyecto y cuando un desarrollador retira el repository todo lo que necesitan hacer es ejecutar la installation del compositor . Queremos mantener los complementos fuera del repository del proyecto para detener la distensión del repository del proyecto y que sea lento para tirar y empujar.

Para los complementos estándar de WordPress, como "Jetpack by WordPress.com", está bien, ya que utilizaremos https://wpackagist.org/ . Sin embargo, para los complementos Premium pagados y los personalizados en la casa que no pueden ser de fuente abierta queremos alojarlos en un Repositorio de Compositor Privado.

Debido a que tendremos múltiples versiones de estos complementos, me gustaría que todas las versiones se muestren, como 1.1, 1.2, 1.3 para que el desarrollador pueda especificar en el composer.json qué versión es necesaria, por ejemplo, si una versión futura rompe algo y necesitamos deshacer a la versión anterior.

He leído los fundamentos de la configuration de un repository privado de Satis, lo cual hice, pero no puedo ver las tags git de las versiones y también especificar que es un complemento de WordPress e instalarlo en la location correcta.

Este fue mi primer bash en el que obtiene todas las versiones labeldas de git:

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

Y este es uno en el que tengo que especificar la versión pero hacer que se instale en la location correcta del plugin de WordPress:

 { "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": "git@bitbucket.org: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"] } } } 

¿Alguien puede aconsejarme cómo consigo que ambos escenarios funcionen juntos?

Creo que tengo una configuration similar: en el informe de satisfacción local tenemos packages internos de un server privado de Git y todos los packages externos de Github.

El truco consiste en hacer dos pasos: el paso uno solo extrae los metadatos de todos los packages externos, y aquí es donde entra en juego su range de versiones para evitar tirar de TODO.

El segundo paso explorará todos los repositorys locales de Git y detectará todas las versiones, y adicionalmente agregará el repository de Compositor creado en el paso 1.

Efectivamente tratará con dos configuraciones de Satis que crearán dos resultados, y el resultado del primer trabajo para packages externos solo obtendrá todos los metadatos, y en el segundo paso se importará y usará como un repository local de Git, y configurando eso El segundo paso para search "todas" las versiones y, posiblemente, la creación de files ZIP a partir de ellos creará una buena copy de security local de cada package que pueda necesitar.

O en otras palabras:

satis-external.json

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

Ejecutarlo:

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

satis-internal.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 } } 

Ejecuta esto

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

Agregar un repository "type = composer" en Satis hará que actúe como cualquier otro repository, especialmente downloadá TODOS los packages mencionados allí si "require-all = true", así que tenga cuidado de no agregar Packagist ni ningún otro repository directamente.

También tenga en count que "requerir dependencies" es cierto para los packages externos porque es probable que no quiera pasar por la molestia de agregar cada dependencia de los packages que desea utilizar.

Si algunos de sus packages pagados ofrecen acceso de repo remoto, puede agregar este repository en la configuration externa junto con las cnetworkingenciales de acceso, debería funcionar.