Comment reconstruire Discourse sans changer de version ?

Je dois mettre à jour les paramètres SMTP dans app.yml, mais je ne souhaite pas changer la version de Discourse.

Lorsque je spécifie une version via la balise version, la reconstruction échoue avec l’erreur ci-dessous. Je suis actuellement sur la version 2.4.0.beta8.

ÉCHEC
--------------------
Pups::ExecError: cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+ a échoué avec le statut de retour #<Process::Status: pid 336 exit 1>
Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'
L'exécution a échoué avec les paramètres {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
6269af00c2a4671a6fd2cb13a55bd475743205262bae7f483bf468e4dcacbeed
** ÉCHEC DU BOOTSTRAP ** veuillez faire défiler vers le haut et rechercher les messages d'erreur précédents, il peut y en avoir plus d'un.
./discourse-doctor peut aider à diagnostiquer le problème.

Cela revient chaque année et mériterait probablement un sujet #tutoriel. Je viens de rechercher version spécifique :

Oui, la différence ici est que j’utilise l’attribut de version dans le fichier YAML, mais je rencontre une erreur lors de la reconstruction.

Si vous devez simplement modifier les paramètres SMTP, vous pouvez exécuter :

./launcher destroy app 
./launcher start app

ok, donc cela lira le fichier yml même s’il n’y a pas de reconstruction, cela semble bon. Bien que cela résolve mon problème urgent, je suis toujours intéressé par la raison pour laquelle la version ne fonctionne pas.

Vous avez mentionné une « erreur ». Cela signifie que quelque chose s’est mal passé. Mon meilleur pari est une erreur de formatage YML, mais sans savoir quelle était l’erreur, il est impossible de le déterminer avec certitude.

Désolé, « veuillez faire défiler vers le haut et rechercher les messages d’erreur antérieurs ; il peut y en avoir plus d’un.
./discourse-doctor peut aider à diagnostiquer le problème. »

Oui, je vois que les informations que j’ai fournies dans le message n’étaient pas assez détaillées. Je ne pense pas qu’il s’agisse d’une erreur de mise en forme, car le fichier YAML fonctionne correctement sans la balise de version.

J’ai effectué quelques tests supplémentaires et il semble que le bug que j’ai rencontré ne se déclenche pas dans les versions 10 et 11, mais se produit bien dans les versions 4 à 9.

Je ne trouve que deux erreurs dans la sortie, et je pense qu’elles sont attendues :

2020-02-22 10:42:33.410 UTC [62] postgres@postgres ERROR:  database "discourse" already exists

2020-02-22 10:42:33.533 UTC [73] postgres@discourse ERROR:  role "discourse" already exists

J’ai consulté les notes de version de la version 10 et n’ai trouvé aucune référence à une correction liée à ce problème.

C’est bien que cela soit corrigé, et avec votre solution de contournement pour les paramètres SMTP (je la testerai lundi, je ne veux pas toucher au serveur de production pendant le week-end), il n’y a pas d’urgence de mon côté. Cependant, il serait utile de savoir s’il existe une erreur inconnue que les tests ne détecteront pas et qui pourrait réapparaître, si elle a été « corrigée » par hasard et non par une modification ciblée. Je suppose que je veux savoir à quel point la fonction de version peut être considérée comme stable à l’avenir.

Voici un extrait de la sortie d’une exécution avec la version cible v2.4.0.beta9.
dump_disco_version_error.txt (127.5 KB)

J’ai enfin trouvé le temps de tester cela, mais cela n’a pas fonctionné. Je vois bien qu’il affiche le bon mot de passe au démarrage de l’application, mais les e-mails échouent toujours en raison d’un refus d’accès.

Hmm. Je suis certain que cela fonctionnait auparavant. J’ai remarqué que certains autres paramètres n’étaient pas appliqués au fichier de configuration. Je ne sais pas si cela est considéré comme un bug.

Il se peut aussi que j’utilise une ancienne version, donc cela peut fonctionner ou non dans la dernière version. Je voulais simplement partager mes découvertes.

J’ai eu besoin de revenir là-dessus : il me semble que la version fonctionne pour les branches, mais pas pour les tags. Je suppose que c’est parce que le lanceur ne récupère pas tous les tags d’abord, mais je ne sais pas. Y a-t-il un moyen de modifier les scripts du lanceur ?

J’ai enfin compris ce qui ne va pas : les dépôts discourse_docker et discourse dépendent l’un de l’autre, si bien qu’une version spécifique de Discourse ne peut être installée qu’avec une version spécifique du dépôt discourse_docker. Malheureusement, il n’y a pas de balises dans le dépôt discourse_docker, ce qui rend difficile la détermination du SHA à utiliser pour installer une version donnée. C’est au moins rassurant d’avoir une conclusion. Je vais commencer à prendre des notes à ce sujet pour les installations que je ferai à l’avenir.