Come posso ricostruire Discourse senza cambiare versione?

Devo aggiornare le impostazioni SMTP in app.yml, ma non voglio cambiare la versione di Discourse.

Quando specifico una versione tramite il tag version, il rebuild fallisce con l’errore riportato di seguito. Attualmente sono alla versione 2.4.0.beta8.

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+ failed with return #<Process::Status: pid 336 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
6269af00c2a4671a6fd2cb13a55bd475743205262bae7f483bf468e4dcacbeed
** FAILED TO BOOTSTRAP ** scorri verso l'alto e cerca i messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.

Questo problema si presenta ogni anno e probabilmente meriterebbe una discussione howto. Ho appena cercato versione specifica:

Sì, la differenza qui è che sto usando il tag della versione nello YAML, ma ricevo un errore durante la ricostruzione.

Se hai solo bisogno di modificare le impostazioni SMTP, puoi eseguire:

./launcher destroy app
./launcher start app

Ok, quindi leggerà il file YML anche se non viene ricostruito, sembra tutto a posto. Anche se questo risolverà il mio problema urgente, sono ancora interessato a capire perché la versione non funziona.

Hai detto di aver ricevuto “un errore”. Ciò significa che hai commesso un errore. La mia ipotesi migliore è un errore di formattazione YML, ma senza sapere qual era l’errore, non c’è davvero modo di saperlo.

Scusa, “ti preghiamo di scorrere verso l’alto e cercare i messaggi di errore precedenti; potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.”

Sì, vedo che le informazioni fornite nel post non erano sufficientemente dettagliate. Non credo si tratti di un errore di formattazione, dato che il file YAML funziona correttamente senza il tag della versione.

Ho effettuato ulteriori test e sembra che il bug che ho incontrato non si verifichi nelle versioni 10 e 11, ma si presenti invece nelle versioni da 4 a 9.

Nel log di output ho individuato solo due errori, che ritengo siano attesi:

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

Ho consultato le note di rilascio della versione 10, ma non ho trovato alcun riferimento a una correzione relativa a questo problema.

È positivo che sia stato risolto e, con il tuo workaround per le impostazioni SMTP (lo testerò lunedì, non voglio toccare il server di produzione durante il weekend), non c’è alcuna urgenza da parte mia. Tuttavia, sarebbe utile sapere se esiste un errore sconosciuto che i test non rilevano e che potrebbe ripresentarsi, se la correzione è avvenuta per caso e non tramite una modifica mirata. Immagino che voglia capire quanto ci si possa aspettare che la funzione della versione sia stabile in futuro.

Di seguito un dump dell’output di un’esecuzione con la versione v2.4.0.beta9 come target.
dump_disco_version_error.txt (127.5 KB)

Finalmente ho trovato il tempo di testarlo, ma non ha funzionato. Vedo che stampa la password corretta all’avvio dell’app, ma le email continuano a fallire a causa del rifiuto dell’accesso.

Hmm. Sono sicuro che funzionasse in passato. Ho notato che alcune altre impostazioni non vengono salvate nel file di configurazione. Non sono sicuro che sia considerato un bug.

Potrebbe anche essere che io stia usando una versione vecchia, quindi potrebbe funzionare o meno nell’ultima versione. Volevo solo aggiornare con le mie scoperte.

Ho avuto motivo di tornare su questo: mi sembra che la versione funzioni per i rami, ma non per i tag. Immagino sia perché il launcher non scarica tutti i tag in anticipo, ma non ne sono sicuro. Esiste un modo per modificare gli script del launcher?

Ho finalmente capito cosa non funziona: il repository discourse_docker e il repository discourse dipendono l’uno dall’altro, quindi una versione specifica di Discourse può essere installata solo con una versione specifica del repository discourse_docker. Purtroppo, nel repository discourse_docker non ci sono tag, quindi non è facile capire quale SHA utilizzare per installare una versione specifica. È comunque piacevole avere almeno un po’ di chiusura. Inizierò a prendere appunti su questo per le installazioni che farò in futuro.