Проблемы с обновлением сайта 10-летней давности

Хм. Кажется, я столкнулся с похожей проблемой. У меня работает экземпляр Discourse возрастом уже 10 лет (!), который никогда не мигрировался и обновлялся с переменным успехом :slight_smile:.

Сегодня попытался обновить Docker Manager через панель управления, и теперь при попытке отобразить настройки администратора (в частности, ссылку «Настроить», сгенерированную сообщением «попробуйте отключить некоторые компоненты интерфейса») в консоли браузера появляется следующее:

loader.js:247 Uncaught (in promise) Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`

При попытке пересобрать через CLI возникает ошибка PUPS:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'yarn config set network-timeout 60000 -g' failed with return #<Process::Status: pid 280 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [ \"$version\" != \"tests-passed\" ]; then\n  rm -rf app/assets/javascripts/node_modules\nfi", "su discourse -c 'yarn config set network-timeout 60000 -g'", "su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

Других очевидных ошибок при загрузке нет. У меня установка в одном контейнере… есть какие-нибудь идеи, как выбраться из этой ситуации? Сайт пока ещё доступен, но в очень плохом состоянии.

О, подождите, ошибка PUPS, возможно, вызвана этим:

error This project's package.json defines "packageManager": "yarn@pnpm@9.15.5". However the current global version of Yarn is 1.22.22.

Как такое вообще могло произойти…

Хорошо, похоже, это есть в templates/web.template.yml:

  - exec:
      cd: $home
      hook: yarn
      cmd:
        - |-
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn config set network-timeout 60000 -g'
        - su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'

Но я этого не добавлял… И похоже, что-то здесь вызывает конфликт версий Yarn, из-за чего возникает проблема?

Вам удалось решить проблему в итоге? Восстановление резервной копии на новом сервере, возможно, станет для вас лучшим решением, чем борьба с устаревшей настройкой.

На самом деле, я разобрался! Мы год назад выбрали один коммит, чтобы исправить что-то сломанное в основной ветке, и плагин Docker Update Manager этого не оценил (видимо, у него нет проверки на открепленную HEAD-ветку git), что привело к сбою при развертывании. В итоге всё исправилось простым выполнением git reset --hard && ./launcher rebuild app на сервере, но в процессе это вызвало много путаницы :slight_smile: