Por lo tanto, disfruto usando el instalador de hackathon Magento Composer, pero me cuesta entender cómo otros lo usan en relación con un servicio de implementación. Actualmente estoy usando DeployHQ, y sí, puedo configurarlo para implementar y ejecutar Composer cuando hay una actualización del repositorio, pero esto no tiene sentido para mí ahora.
Mi repositorio principal de compositor, que contiene solo el archivo json de todos los paquetes que quiero incluir en mi compilación, solo se actualiza cuando agrego un nuevo paquete a la lista.
Cuando actualizo mi tema o extensión personalizada (a la que se hace referencia en el archivo json), no hay un "gancho" para actualizar mi servicio de implementación. Así que tengo que iniciar sesión en mi servidor y ejecutar manualmente Composer (que desactiva el sitio hasta que está terminado).
Entonces, ¿cómo manejan esto los demás? ¿Debo ejecutar el compositor solo localmente e incluir la carpeta del proveedor en mi repositorio?
Cualquier respuesta sería muy apreciada.
fuente
Respuestas:
He establecido una estructura en nuestra agencia que nos permite usar Composer para implementar todos nuestros sitios de Magento. Esto podría ser un poco exagerado para la pregunta que hizo, pero de todos modos aquí hay una descripción básica de la estructura:
Estructura del repositorio
A continuación se muestra la estructura de carpetas del repositorio 'padre'. Contiene el compositor JSON y los archivos de bloqueo y otras configuraciones necesarias para la implementación.
code/magento
)index.php
carpetas personalizadas y otras, como medios y errores, se encuentran dentro de una carpeta pública fuera de la raíz de MagentoDespliegue
composer install
durante la compilación y despliega todos los módulos en el submódulo Magento.Todavía no se trata de una configuración de integración continua, pero creo que funciona bien para los sitios de Magento. No dude en enviarme un mensaje si desea más consejos específicos para su configuración.
fuente
Otro método es utilizar la estrategia de implementación de copia de hackathons de magento, que se parece a esto en su archivo composer.json:
El uso del método anterior copia los archivos instalados del proveedor a la instalación real, lo que permite que se confirme en Git y se implemente de forma normal, sin tener que realizar ninguna instalación del compositor.
No soy un gran admirador de extraer repositorios de terceros cuando está a punto de hacer una implementación en vivo, y depender de repositorios de terceros es un poco arriesgado, a menos que tenga algún tipo de caché proxy para su red .
Lea este artículo y le dará una perspectiva diferente: http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle
Básicamente, NPM dejó de funcionar (más o menos ...) y los sistemas de compilación de todos dejaron de funcionar (¡para implementaciones críticas!) Porque dependían directamente de NPM. (NPM es como Packagist para Javascript, excepto que NPM en realidad aloja el archivo y Packagist solo señala los repositorios de módulos de Github; corrígeme si me equivoco)
editar: solo la respuesta de fschmengler rojo .. Esta es una elaboración de su primer enfoque
fuente
Es importante comprender que Composer no es una herramienta de implementación, sino una herramienta de desarrollo.
Existen diferentes enfoques para preparar una implementación con todas las dependencias:
composer install
y cree un archivo con el resultado, que puede implementar repetible en diferentes sistemas de destinocomposer install
en el servidor y luego cambiar los enlaces simbólicos como sugiere @ jharrison.au es una variación de esteAparte de eso, no recomiendo usar el compositor para cada módulo y solo mantenerlo
composer.json
ycomposer.lock
en el repositorio del proyecto. Esto es exagerado y hace que el desarrollo sea innecesariamente complicado. Tiene perfecto sentido para el código que se reutiliza en varios proyectos, pero ¿por qué colocaría el código específico del proyecto en repositorios separados?La estructura de mi proyecto actual se ve así (usando los instaladores de compositores alternativos de AOE ):
src
contiene todos los módulos específicos del proyecto. Composer también instala cualquier otro módulo de Magento aquí.modman
enlaces parasrc
que modman pueda manejar el enlace simbólico fácilmentewww
es el webroot Composer instala el núcleo de Magento aquíDe esta manera incluyo módulos externos en el repositorio. Si prefiere no hacerlo, ajústelo así:
src
contiene todos los módulos específicos del proyecto. Para incluirlos de.modman
modo que modman cree enlaces simbólicos, usemodman link
.modman
está en.gitignore
. Composer instala módulos de Magento aquíwww
es el webroot Composer instala el núcleo de Magento aquífuente