Bonjour à tous
, je viens de fusionner une nouvelle fonctionnalité qui aidera les plugins et les thèmes à verrouiller certaines versions lors de leur installation sur d’anciennes instances Discourse.
Vous pouvez désormais inclure un fichier .discourse-compatibility à la racine d’un dépôt de plugin ou de thème, qui spécifie quelle version vérifier lors de l’installation sur d’anciennes versions de Discourse.
Justification
C’est pénible de se souvenir quels plugins et thèmes sont compatibles avec quelles versions de Discourse. En tant qu’administrateur, il devrait être possible de parcourir facilement ces changements et de trouver une version adaptée à votre installation Discourse sans avoir à lire l’historique des commits du plugin. En tant qu’auteur de plugin ou de thème, il devrait être possible de gérer les versions d’installation tout en apportant des modifications incompatibles avec les versions antérieures, afin de ne pas casser les installations existantes.
Les mises à jour logicielles de Discourse sont déployées assez rapidement, ce qui, bien que génial, rend parfois très difficile la maintenance d’instances Discourse comportant de nombreux plugins, surtout si vous suivez d’autres rythmes de publication ou versions, comme la version stable actuelle. Mon intention ici est de permettre un écosystème qui facilite le processus de mise à jour pour ceux qui suivent soit la version stable, soit un autre rythme de publication, et de fournir aux administrateurs de sites une méthode pour récupérer rapidement et automatiquement la version de plugin compatible avec la version de Discourse qu’ils ciblent.
Annonce originale (désormais remplacée par la documentation liée ci-dessus)
Mise en œuvre
Première chose à noter : nous nous appuyons sur les tags du cœur de Discourse, car les versions bêta de Discourse sont publiées fréquemment, ce qui nous permet de verrouiller les versions des plugins par rapport à elles. Le verrouillage par hachage git est un cauchemar pour de nombreuses raisons, nous utilisons donc git describe pour obtenir le tag bêta/stable le plus proche.
Dans un plugin ou un thème, nous prenons désormais en charge un fichier de compatibilité de version nommé .discourse-compatibility à la racine. Ce fichier est une liste ordonnée décroissante (versions plus récentes de Discourse en premier) qui spécifie une carte de compatibilité.
Exemple
2.5.0.beta2: git-hash-1234e5f5d
2.4.4.beta6: 4444ffff33dd
2.4.2.beta1: named-git-tag-or-branch
Pour chaque plugin/thème, une mise à niveau ou une reconstruction continuera de vérifier un commit/branche/tag nommé ultérieur jusqu’à ce qu’il trouve un élément égal ou postérieur à la version actuelle de Discourse.
Par exemple, pour le fichier de version ci-dessus, si la version actuelle de Discourse est 2.4.6.beta12, il parcourra le fichier et choisira l’entrée pour 2.5.0.beta2.
Si la version actuelle de Discourse est 2.4.4.beta6, il choisira l’entrée correspondante pour 2.4.4.beta6.
Si aucune version ultérieure n’existe, il reste sur la version actuellement vérifiée.
Par exemple, pour 2.5.0.beta3, aucun verrouillage ne se produira.
Si aucune version antérieure n’existe, il vérifie la plus ancienne répertoriée dans le fichier de version.
Par exemple, pour 2.2.1.beta22, il vérifiera la plus ancienne possible étant donné la « version », l’entrée pour 2.4.2.beta1.
L’objectif ici est de réduire la douleur liée à la maintenance de déploiements alternatifs qui ne sont pas strictement basés sur tests-passed à l’avenir, et de donner aux administrateurs la flexibilité de décider quand et où effectuer la mise à niveau. Nous le faisons en permettant aux auteurs de plugins et de thèmes de développer des modifications incompatibles avec les versions antérieures sans affecter les installations sur d’anciennes versions de Discourse.