Discourse 2.8로 업그레이드

안녕하세요,

최신 릴리스 버전으로 업그레이드를 시도했는데 문제가 발생하고 있습니다. docker-manager를 업그레이드했고, CLI를 사용하여 업데이트하라는 안내를 받았습니다. 가끔 일어나는 일이니 괜찮습니다.

git pull을 수행하고 ./launcher rebuild app을 실행하면 실패하며, 정확히 어디서 문제가 발생하는지 알 수 없습니다. 제 플러그인 목록과 로그를 첨부합니다.

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-chat-integration.git
          - git clone https://github.com/gdpelican/retort.git
#          - git clone https://github.com/Ebsy/discourse-nationalflags.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/discourse/discourse-steam-login.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-oauth2-basic
          - git clone https://github.com/discourse/discourse-perspective-api.git
          - git clone https://github.com/procourse/procourse-installer.git

로그:

I, [2022-02-26T02:55:14.922993 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
cd /var/www/discourse/plugins && git clone https://github.com/pmusaraj/discourse-jitsi.git
Cloning into 'discourse-jitsi'...
cd /var/www/discourse/plugins && git clone https://github.com/paviliondev/discourse-question-answer.git
Cloning into 'discourse-question-answer'...
cd /var/www/discourse/plugins && git clone https://github.com/critcola/discourse-twitch-onebox.git
Cloning into 'discourse-twitch-onebox'...
cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-akismet.git
Cloning into 'discourse-akismet'...
cd /var/www/discourse/plugins && git clone https://github.com/pmusaraj/discourse-jitsi.git
fatal: destination path 'discourse-jitsi' already exists and is not an empty directory.
Cannot clone directory
cd /var/www/discourse/plugins && git clone https://github.com/paviliondev/discourse-question-answer.git
fatal: destination path 'discourse-question-answer' already exists and is not an empty directory.
Cannot clone directory
cd /var/www/discourse/plugins && git clone https://github.com/critcola/discourse-twitch-onebox.git
fatal: destination path 'discourse-twitch-onebox' already exists and is not an empty directory.
Cannot clone directory
cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-akismet.git
fatal: destination path 'discourse-akismet' already exists and is not an empty directory.
Cannot clone directory
I, [2022-02-26T02:55:40.287227 #1]  INFO -- : gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed geocoder-1.4.4
1 gem installed
gem install ruby-openid -v 2.9.2 -i /var/www/discourse/plugins/discourse-steam-login/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed ruby-openid-2.9.2
1 gem installed
gem install rack-openid -v 1.3.1 -i /var/www/discourse/plugins/discourse-steam-login/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed rack-openid-1.3.1
1 gem installed
gem install omniauth-openid -v 1.0.1 -i /var/www/discourse/plugins/discourse-steam-login/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed omniauth-openid-1.0.1
1 gem installed
gem install omniauth-steam -v 1.0.6 -i /var/www/discourse/plugins/discourse-steam-login/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed omniauth-steam-1.0.6
1 gem installed

I, [2022-02-26T02:55:40.287755 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
** PLUGIN FAILURE **

You are unable to build Discourse due to this error during plugin
initialization:

uninitialized constant Onebox
/var/www/discourse/plugins/discourse-twitch-onebox/plugin.rb:8:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:671:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:671:in `activate!'
lib/discourse.rb:279:in `block in activate_plugins!'
lib/discourse.rb:276:in `each'
lib/discourse.rb:276:in `activate_plugins!'
/var/www/discourse/config/application.rb:324:in `block in <class:Application>'
/var/www/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/var/www/discourse/config/application.rb:323:in `<class:Application>'
/var/www/discourse/config/application.rb:73:in `<module:Discourse>'
/var/www/discourse/config/application.rb:72:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `require'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/rake_module.rb:29:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/rake_module.rb:29:in `load_rakefile'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:710:in `raw_load_rakefile'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:104:in `block in load_rakefile'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:103:in `load_rakefile'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:82:in `block in run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:80:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake:25:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake:25:in `<top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:484:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:31:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:25:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/exe/bundle:48:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/exe/bundle:36:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
I, [2022-02-26T02:55:43.858479 #1]  INFO -- :
I, [2022-02-26T02:55:43.859326 #1]  INFO -- : Terminating async processes
I, [2022-02-26T02:55:43.859684 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 41
I, [2022-02-26T02:55:43.860155 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 102
2022-02-26 02:55:43.860 UTC [41] LOG:  received fast shutdown request
102:signal-handler (1645844143) Received SIGTERM scheduling shutdown...
2022-02-26 02:55:43.862 UTC [41] LOG:  aborting any active transactions
2022-02-26 02:55:43.865 UTC [41] LOG:  background worker "logical replication launcher" (PID 50) exited with exit code 1
2022-02-26 02:55:43.867 UTC [45] LOG:  shutting down
2022-02-26 02:55:43.889 UTC [41] LOG:  database system is shut down
102:M 26 Feb 2022 02:55:43.896 # User requested shutdown...
102:M 26 Feb 2022 02:55:43.896 * Saving the final RDB snapshot before exiting.
102:M 26 Feb 2022 02:55:43.979 * DB saved on disk
102:M 26 Feb 2022 02:55:43.979 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 608 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
4d132e6fe184252d1944e826993f8ae2528b2d4d6bfb05a5f69a9ff282646cc9
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

해당 플러그인(그리고 기타 플러그인)이 어딘가에 두 번 나열되어 있습니다.

즉, 이전에 업데이트된 Discourse를 설치한 이후로 아무것도 변한 게 없어요. 플러그인이 두 번 클론되는 건 보이는데, 왜 그런 건지 모르겠어요. yml 파일(실제로는 app.yml 하나만 존재)에 플러그인에 대한 중복 참조가 있는 것도 없어요.

이 플러그인을 제거해 보는 건 어떨까요?

이것은 공식 설치가 아닌 것 같다는 느낌이 드네요. 그리고 현재 보고 계신 yml 파일이 잘못된 파일일 수 있습니다.

언급하신 플러그인은 리빌드에서 사용되는 플러그인이 아닙니다.

@pfaffman 그게 맞았던 것 같아요. 저는 https://github.com/procourse/procourse-installer를 통해 플러그인을 설치했는데, 깨진 플러그인 목록에 올라와 있는 것 같으니 이제 사용을 중단해야 할 것 같습니다. 그래도 SSH로 서버에 접속해서 한 줄을 추가하고, 앱을 다시 빌드하고 재시작하는 수고 없이 플러그인을 설치할 수 있으니 정말 편하긴 해요.

두 플러그인 모두 최상으로 유지 관리되고 있지 않기 때문에, procourse installer와 retort를 모두 제거하고 대신 discourse-reactions를 사용하는 것이 좋다고 생각합니다. 재빌드 시 문제가 발생할 가능성이 높기 때문입니다.