Administre módulos personalizados en varias instalaciones.

19

Tenemos algunos módulos personalizados que se utilizan para múltiples sitios. Esos no se pueden lanzar como módulos contribuidos, por ejemplo, porque son específicos del cliente, hacen suposiciones que no funcionan para los módulos contribuidos, etc.

Conozco las siguientes posibilidades para lidiar con esto:

  • Cópielos y péguelos. Obviamente hace que sea difícil mantener el módulo actualizado en todas las instalaciones.

  • Tenga una única instalación en varios sitios, pero esto no siempre es posible.

  • Utilice submódulos git, pero pueden ser desagradables, es fácil olvidar actualizarlos y no siempre son compatibles (por ejemplo, Pantheon)

  • Drush crea scripts para verificar desde un repositorio git común. Para esto, AFAIK necesita usar drush make para todo el sitio y actualmente no lo usamos.

  • http://drupal.org/project/fserver . Todavía no lo he probado, ¿alguien sabe si es lo suficientemente estable? La descripción del proyecto no suena muy prometedora y no hay una versión 7.x.

¿Algo más / mejor? Que prefieres y porque?

Berdir
fuente
Creo que la nueva forma de hacer estas cosas es con las aplicaciones: drupal.org/project/apps
mojzis

Respuestas:

10

El enfoque de hacer Drush , como ya mencionaste, es la versión que mi equipo está usando.

Aunque actualmente no está utilizando drush make para sus sitios, debería ser relativamente sencillo moverse a este flujo de trabajo si lo desea, ya que drush también proporciona drush make-generate que generará el archivo make desde un sitio existente. Por lo tanto, no es necesario sentir que solo vale la pena para nuevos sitios. :)

Letharion
fuente
Gracias, he decidido aceptar tu respuesta. Sin embargo, necesito acostumbrarme a hacer borracheras, descubrir cómo lidiar con esto en proyectos grandes con muchos módulos personalizados y convencer a mis compañeros de trabajo antes de que pueda comenzar a usar esto;) ¿Tiene algún recurso sobre cómo mantener un sitio, por ejemplo, la mejor manera de actualizar la versión, reconstruir un sitio.
Berdir
2
No tenía recursos, así que escribí uno :) drupal.stackexchange.com/questions/33403/... Por supuesto, siéntase libre de comentar con preguntas más profundas. :)
Letharion
1

Si todos los sitios están en el mismo servidor, puede usarlos symlinkpara cargar módulos desde un lugar central, o rsyncsi está tratando con varios servidores.

Esto resolverá el problema de la distribución de archivos, pero aún debe iniciar una actualización. Se puede automatizar con drush, junto con un script simple que llama a la actualización en cada sitio, uno por uno.

Máté Gelei
fuente
0

Parece ser que casi buscas casi todas las soluciones. Cuando lo leo, primero lo que viene a mi mente son otras dos soluciones como rsynco symlinkpero, una vez más, no es cómodo de mantener.

Luego recordé sobre ese módulo Git Deploy que en realidad sería un buen combo con submódulos git.

Todavía no he probado esta idea, pero podría funcionar, o al menos darte una idea de cómo hackearla para hacer tu propio sistema.

yvan
fuente
Git deploy expone información de la versión de los módulos contrib, pero no tenemos módulos contrib, así que no creo que ayude.
Berdir
0

Utilizo un repositorio git separado para todos los módulos contribuidos / personalizados donde cada módulo contribuido o personalizado está en una rama separada (no en un submódulo).

así es como funciona la fusión git aquí:

Maestro

      <-- custom
        <-- custom module 1
        <-- custom module 2    

      <-- contrib
        <-- contrib module 1
        <-- contrib module 2     

maestro -> lanzamiento

y un script bash / drush para actualizar las ramas

Refineo
fuente
Mi solución se basa en este artículo nvie.com/posts/a-successful-git-branching-model
Refineo
Hm. Entonces, esencialmente podría agregar otro sitio como remoto e importar una rama de módulo personalizada desde allí. Eso podría funcionar, pero es relativamente complejo.
Berdir
0

Utilizo SVN en lugar de Git para almacenar nuestros módulos desarrollados a medida. Después de confirmar el cambio desde localhost, simplemente ejecuto el script bash que ejecuta el comando "svn update" en ubicaciones de servidor predefinidas. Cada vez que implemento un módulo en una nueva ubicación, actualizo el script bash. Es realmente una configuración simple y funciona sin problemas.

Ajinkya Kulkarni
fuente