Cómo recompilar plugins y NO recompilar Discourse?

¿Cómo es posible recompilar el plugin y NO recompilar Discourse (sin actualizar a la última versión)? Tengo un problema: Discourse tiene actualizaciones muy frecuentes. Con mucha frecuencia, las actualizaciones hacen que los plugins dejen de funcionar. Me gustaría recompilar sin actualizar Discourse. ¿Es posible?

1 me gusta

Estimado @Ed_Bobkov,

Puedes lograr la “esencia” de lo que deseas de una manera “no soportada” construyendo Discourse con (1) tu propia imagen base de Docker de Discourse y (2) una base de código de GitHub de Discourse bifurcada, si crees que es absolutamente necesario, ejecutando una bifurcación del código fuente de Discourse.

Por lo tanto, en ese caso necesitarás:

Consulta esta línea en el Dockerfile de Discourse:

git clone https://github.com/discourse/discourse.git &&\

y esta línea en el script de lanzamiento:

image="discourse/base:2.0.20200512-1735"

Si ejecutas un registro privado de Docker, puedes subir la imagen base de Discourse (la que elijas) a tu registro privado y, por ejemplo:

image="localhost:5000/base:2.0.20200512-1735"

De manera similar, si bifurcas Discourse, puedes usar esa bifurcación en el Dockerfile (arriba), por ejemplo:

git clone https://github.com/tu_cuenta_git/discourse.git &&\

Esto te ayudará a gestionar tanto la imagen base de Docker como el código de compilación.

Por supuesto, esto no se recomienda porque no te beneficiarás de todas las correcciones de errores y actualizaciones de seguridad (y características) de Discourse; y este método no está soportado ni recomendado.

Espero que esto te ayude, @Ed_Bobkov.

Nota: En este método, aún estás recompilando Discourse; pero estás controlando (1) la versión de la imagen base de Docker y (2) el código del repositorio de GitHub de Discourse; y estás “por tu cuenta” porque este método no está soportado ni recomendado en absoluto (según mi conocimiento).

Ver también:

4 Me gusta

¡Gracias por la respuesta tan detallada! No es una solución sencilla. Es extraño que no exista un comando para recompilar sin verificar la actualización de Discourse.

1 me gusta

Hola @Ed_Bobkov

Bueno, muy bien podría haber algún “otro método” que yo no conozca :slight_smile: En eso, me remito a los demás.

Trabajé en esto durante varios días hace un tiempo, y esto fue lo “mejor que pude lograr” después de muchos “ensayos y errores”.

Si hay una forma más fácil, me encantaría saberlo; pero tiene sentido si trabajas mucho con Docker.

En primer lugar, la imagen debe construirse. Discourse comienza con una imagen base y la modifica. Cuando agregas nuevos plugins en producción (Docker), generalmente necesitas reconstruir el contenedor. Por eso respondí como lo hice arriba.

Hay mucha gente aquí más inteligente que yo en el tema de la administración de sistemas de Discourse, así que quizás alguien más tenga una idea mejor en la línea de lo que buscas.

¡Saludos!

4 Me gusta

Si tu objetivo es simplemente actualizar un complemento sin actualizar la versión de Discourse, entonces simplemente usa la consola de actualización del Administrador de Docker, accesible desde el panel de control en línea, y haz clic en el botón de actualización correspondiente para el complemento específico, por ejemplo:

https://tu-sitio/admin/upgrade

Advertencia #1: Creo que esto solo funcionará con activos públicos, por ejemplo, complementos de código abierto. Para activos privados a los que se accede mediante claves de implementación incrustadas en el script de compilación, es posible que debas reconstruir todo el proyecto.
Advertencia #2: Muchas actualizaciones de complementos se implementan para agregar compatibilidad con la última versión de Discourse. En la mayoría de los casos, tiene sentido actualizar ambos a la versión más reciente, ya que algunas actualizaciones pueden romper la compatibilidad con versiones anteriores de Discourse, aunque depende de lo que estés haciendo.

11 Me gusta