Как можно пересобрать Discourse без изменения версии?

Мне нужно обновить настройки SMTP в файле app.yml, но я не хочу менять версию Discourse.

Когда я указываю версию через тег version, процесс пересборки завершается ошибкой, приведенной ниже. В данный момент я использую версию 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 ** пожалуйста, прокрутите вверх и поищите сообщения об ошибках, возникших ранее; их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.

Это возникает каждый год, и, вероятно, стоило бы создать тему с меткой howto. Я просто поискал конкретную версию:

Да, разница здесь в том, что я использую тег версии в YAML, но при пересборке возникает ошибка.

Если вам нужно просто изменить настройки SMTP, вы можете выполнить:

./launcher destroy app 
./launcher start app

Хорошо, значит, это будет читать YAML-файл, даже если пересборка не выполняется. Звучит отлично. Хотя это и решит мою срочную проблему, меня всё ещё интересует, почему версия не работает.

Вы упомянули, что получили «ошибку». Это означает, что вы допустили ошибку. Скорее всего, проблема в некорректном форматировании YAML-файла, но без знания точного текста ошибки точно определить причину невозможно.

Извините, но, пожалуйста, прокрутите вверх и найдите предыдущие сообщения об ошибках — их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.

Да, я вижу, что информация, которую я предоставил в посте, была недостаточно подробной. Я не думаю, что это ошибка форматирования, так как файл YAML работает корректно без тега версии.

Я провел дополнительные тесты, и, похоже, ошибка, с которой я столкнулся, не проявляется в версиях 10 и 11, но возникает в версиях с 4 по 9.

В выводе я обнаружил только две ошибки, и, думаю, они ожидаемы:

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

Я изучил примечания к выпуску версии 10, но не нашел упоминания исправления, связанного с этой проблемой.

Хорошо, что проблема решена, и благодаря вашему обходному пути для настроек SMTP (я проверю это в понедельник, не хочу вмешиваться в работу продакшн-сервера в выходные) у меня нет срочной необходимости, но было бы полезно узнать, нет ли неизвестной ошибки, которую тесты не обнаружат и которая может проявиться снова, если она была «исправлена» случайно, а не целенаправленным изменением. Я, пожалуй, хочу понять, насколько стабильной можно ожидать функцию версии в будущем.

Ниже приведён дамп вывода при запуске с целевой версией v2.4.0.beta9.
dump_disco_version_error.txt (127.5 KB)

Наконец-то я нашел время это проверить, и это не сработало. Я вижу, что при запуске приложения выводится правильный пароль, но отправка писем все равно не удается из-за отказа в доступе.

Хм. Я уверен, что раньше это работало. Я видел, как некоторые другие настройки не сохранялись в файл конфигурации. Не уверен, считается ли это ошибкой.

Возможно, я использую старую версию, поэтому это может работать или не работать в последней версии. Я просто хотел поделиться своими находками.

Мне пришлось вернуться к этому вопросу. Мне кажется, что версия работает для веток, но не для тегов. Я предполагаю, что это связано с тем, что лаунчер не загружает все теги заранее, но я не уверен. Есть ли способ отредактировать скрипты лаунчера?

Наконец-то выяснил, в чём проблема: репозитории discourse_docker и discourse зависят друг от друга, поэтому конкретную версию discourse можно установить только с помощью определённой версии репозитория discourse_docker. К сожалению, в репозитории discourse_docker нет тегов, поэтому найти, какой SHA-хэш использовать для установки конкретной версии, непросто. Хотя бы приятно получить хоть какое-то завершение. Впредь буду вести заметки по установке для будущих инсталляций.