Comment recompiler les plugins et NE PAS recompiler Discourse ?

Comment est-il possible de recompiler le plugin sans recompiler Discourse (sans mettre à jour vers la dernière version) ? Je rencontre un problème : Discourse propose des mises à jour très fréquentes. Souvent, ces mises à jour rendent les plugins inopérants. J’aimerais pouvoir recompiler sans mettre à jour Discourse. Est-ce possible ?

1 « J'aime »

Cher @Ed_Bobkov,

Vous pouvez réaliser l’« essence » de ce que vous souhaitez de manière « non officielle » en construisant Discourse avec (1) votre propre image Docker de base pour Discourse et (2) une version forkée du code source Discourse sur GitHub, si vous estimez que c’est absolument nécessaire, en exécutant une version forkée du code source de Discourse.

Dans ce cas, vous devrez donc :

Voyez cette ligne dans le Dockerfile de Discourse :

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

et cette ligne dans le script de lancement :

image="discourse/base:2.0.20200512-1735"

Si vous exécutez un registre Docker privé, vous pouvez pousser l’image de base de Discourse (de votre choix) vers votre registre privé, par exemple :

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

De même, si vous fork Discourse, vous pouvez utiliser ce fork dans le Dockerfile (ci-dessus), par exemple :

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

Cela vous aidera à gérer à la fois l’image Docker de base et le code de construction.

Bien sûr, cela n’est pas recommandé car vous ne bénéficierez pas de toutes les corrections de bugs et des mises à jour de sécurité (et de fonctionnalités) de Discourse ; et cette méthode n’est ni prise en charge ni recommandée.

J’espère que cela vous aidera, @Ed_Bobkov.

Remarque : Avec cette méthode, vous reconstruisez toujours Discourse ; mais vous contrôlez (1) la version de l’image Docker de base et (2) le code du dépôt GitHub de Discourse ; et vous êtes « seul » car cette méthode n’est ni prise en charge ni recommandée, du moins à ma connaissance.

Voir aussi :

4 « J'aime »

Merci pour cette réponse très détaillée ! Ce n’est pas une solution simple. Étrange qu’il n’y ait pas de commande pour recompiler sans vérifier la mise à jour de Discourse.

1 « J'aime »

Bonjour @Ed_Bobkov

En effet, il pourrait très bien exister une « autre méthode » que je ne connais pas :slight_smile: Je m’en remets aux autres pour cela.

J’ai travaillé dessus pendant plusieurs jours il y a quelque temps, et c’était le « meilleur résultat que j’ai pu obtenir » après de nombreux essais et erreurs.

S’il existe un moyen plus simple, j’aimerais beaucoup en entendre parler ; mais cela fait sens si vous travaillez beaucoup avec Docker.

Tout d’abord, l’image doit être construite. Discourse part d’une image de base et la modifie. Lorsque vous ajoutez de nouveaux plugins en production (Docker), vous devez généralement reconstruire le conteneur. C’est pourquoi j’ai répondu comme je l’ai fait ci-dessus.

Il y a beaucoup de personnes ici plus compétentes que moi sur le sujet de l’administration système de Discourse, alors peut-être que quelqu’un d’autre a une meilleure idée dans la lignée de ce que vous recherchez.

Salutations !

4 « J'aime »

Si votre objectif est simplement de mettre à jour un plugin sans mettre à jour la version de Discourse, utilisez simplement la console de mise à jour du gestionnaire Docker accessible depuis le tableau de bord en ligne et cliquez sur le bouton de mise à jour correspondant pour le plugin spécifique, par exemple :

https://your-site/admin/upgrade

Avertissement n°1 : Je pense que cela ne fonctionnera qu’avec des assets publics, par exemple des plugins open source. Pour les assets privés accédés via des clés de déploiement intégrées dans le script de construction, vous devrez peut-être reconstruire l’ensemble du projet.
Avertissement n°2 : De nombreuses mises à jour de plugins sont déployées pour ajouter la compatibilité avec la dernière version de Discourse. Dans la plupart des cas, il est logique de mettre à jour les deux vers la dernière version, car certaines mises à jour peuvent rompre la compatibilité avec les versions antérieures de Discourse, mais cela dépend de ce que vous faites.

11 « J'aime »