У меня работает система уже долгое время, и раньше проблем не возникало. Я всегда обновляю её через полную пересборку, никогда не использую встроенную функцию обновления.
Недавно я выполнил apt-get upgrade, обновил Docker до версии 19.03.5 и попытался сделать пересборку, но теперь система не работает. Операционная система — Ubuntu 16.04.6.
@j.jaffeux Нужно ли вернуть Discourse.redis в ветки stable и beta? Думаю, это будет проще, чем добавлять код для обратной совместимости в несколько плагинов.
Краткое резюме: стратегия tests-passed сработала, у меня был простой в течение 1 дня.
Развёрнутая версия: Я считаю, что это одно из самых качественных проектов с открытым исходным кодом, написанных в интернете на сегодняшний день, с надёжной бизнес-моделью и отличной командой. Как так вышло, что механизм обновлений настолько сломан?
Функция обновления внутри приложения вызывала у меня столько простоев, что я решил вообще не использовать её, а всегда выполнять пересборку.
Но, как видно из этой ветки, в двух последних случаях из двух пересборка также приводила к неработоспособному приложению. Исправить это самостоятельно я не мог, поэтому пришлось прибегнуть к стратегии tests-passed, следуя рекомендациям здесь.
Почему механизм обновлений настолько сломан в таком хорошо написанном программном обеспечении? Почему сайты на WordPress, работающие уже более 5 лет, функционируют без проблем благодаря встроенному механизму обновлений?
В чём смысл наличия релизов в Discourse, если их буквально невозможно использовать? Пересборка всегда выполняется из ветки git, а релизы никак не связаны с git.
Для меня релиз — это либо тег git, либо zip-архив. Почему я не могу просто использовать пересборку с версией 2.3.x, как это можно сделать с любым современным менеджером пакетов сегодня?
Как оказалось, tests-passed — это версия, которую discourse.org разворачивает на своих серверах; она проходит более тщательное тестирование и работает надёжнее, чем stable. Если вы останетесь на tests-passed, у вас будет меньше проблем. Если же вы хотите использовать stable, имейте в виду, что это потребует больше усилий по сравнению с tests-passed: например, вам потребуется запускать тестовый сервер для проверки обновлений перед их применением в продакшн-среде.
Мне просто нужно что-то стабильное и надежное, основанное на
tests-passed — это то, что discourse.org развёртывает на своих серверах; это лучше протестировано и надёжнее, чем stable.
Я буду придерживаться этого. Два момента всё ещё кажутся очень странными:
Почему это называется tests-passed, а не stable, если оно действительно стабильно? Возможно, ветку stable стоит переименовать в какую-то «legacy».
Система релизов всё ещё не имеет смысла. Если мы собираем из ветки Git, то в чём вообще смысл делать релизы? Я бы хотел иметь возможность оставаться на версии 2.3.x, пока 2.4.x не достигнет зрелости, но, судя по модели Discourse, это вообще невозможно.
С уважением, но я не согласен с этим. Версия Stable очень надежна и, как следует из названия, стабильна. Зависимость в Rubygems была обновлена, что привело к сбоям как в tests-passed, так и в stable. Решение этой проблемы свелось к портированиюисправления.
Кстати, этого можно было бы избежать, если бы версия rubygems была зафиксирована на конкретном значении в команде gem update. Команда gem update --system 3.0.6 была бы безопасной.
То, что версия stable была неработоспособна дольше, чем tests-passed, — это просто совпадение и, насколько я помню, первый подобный случай.
Мы уже более шести лет используем этот подход (использование стабильной версии по умолчанию) на сотнях экземпляров Discourse без серьезных проблем.
Только в этой ветке уже несколько раз стабильная ветка обновлялась до нерабочего состояния, и это точно не первый случай. Если коммерческие экземпляры discourse.org проходят тестирование, я буду придерживаться их.
Мы делаем это (использовать стабильную версию по умолчанию) уже более шести лет, и сотни экземпляров Discourse работают без серьёзных проблем.
Приверженность стабильной версии и приверженность ветке 2.3.x — это очень разные вещи. Например, стабильная версия не позволяет оставаться на 2.3.x до тех пор, пока 2.4.x не станет достаточно зрелой. В производственной среде я предпочитаю обновляться только после выхода версии x.x.3 или x.x.4. На мой взгляд, сегодня это невозможно.
Я знаю, что это правда, но вы не обычный администратор Discourse. Вы много раз спасали меня, и по правилам я перечитываю всё, что вы говорите, дважды, чтобы убедиться, что запомнил, но всё же считаю, что для большинства обычных людей безопаснее придерживаться версии tests-passed.
Вы можете использовать идентификатор коммита git вместо тега.
Но даже в этом случае это не спасёт меня в ситуации, когда стабильная ветка сломана, верно? В обоих случаях проблема заключалась в отсутствии бэкпорта, и он, полагаю, будет отсутствовать в любом ID коммита git.
Поэтому не существует понятия «релиза» Discourse, когда вы скачиваете zip-архив в стиле WordPress или используете менеджер пакетов вроде yarn/pip/gem, просто потому что Discourse не выпускается в виде релизов, а постоянно «пересобирается», всегда используя актуальные версии внешних пакетов.