Échec de reconstruction - peut-être lié à rolldown ?

Salut tout le monde, je viens d’essayer une reconstruction en utilisant discourse/base:2.0.20260617-0053. Cependant, je rencontre quelques erreurs liées à des packages manquants.

Got some warnings
╭ Warning ─────────────────────────────────────────────────────────────────────╮
│                                                                              │
│   Ignored build scripts: core-js@2.6.12, core-js@3.49.0, lefthook@2.1.9,     │
│   rete@2.0.6.                                                                │
│   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
│   to run scripts.                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
Done in 10.4s using pnpm v10.28.0
Lockfile is up to date, resolution step is skipped
Already up to date

╭ Warning ─────────────────────────────────────────────────────────────────────╮
│                                                                              │
│   Ignored build scripts: core-js@2.6.12, core-js@3.49.0, lefthook@2.1.9,     │
│   rete@2.0.6.                                                                │
│   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
│   to run scripts.                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
.....
Successfully installed aws-sdk-translate-1.35.0
1 gem installed
rake aborted!
Discourse::Utils::CommandError: pnpm -C=frontend/asset-processor node build.mjs (Discourse::Utils::CommandError)
file:///var/www/discourse/node_modules/.pnpm/rolldown@1.1.2/node_modules/rolldown/dist/shared/error-T-E9reEy.mjs:48
        const wrapper = new Error(summary);
                        ^

Error: Build failed with 9 errors:

[RESOLVE_ERROR] Could not resolve './shims' in transpiler.js
   ╭─[ transpiler.js:1:8 ]
   │
 1 │ import "./shims";
   │        ────┬────
   │            ╰────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve './postcss' in transpiler.js
   ╭─[ transpiler.js:2:8 ]
   │
 2 │ import "./postcss";
   │        ─────┬─────
   │             ╰─────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve './asset-processor-rollup' in transpiler.js
   ╭─[ transpiler.js:3:8 ]
   │
 3 │ import "./asset-processor-rollup";
   │        ─────────────┬────────────
   │                     ╰────────────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve '@babel/standalone' in transpiler.js
   ╭─[ transpiler.js:4:45 ]
   │
 4 │ import { transform as babelTransform } from "@babel/standalone";
   │                                             ─────────┬─────────
   │                                                      ╰─────────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve 'decorator-transforms' in transpiler.js
   ╭─[ transpiler.js:5:33 ]
   │
 5 │ import DecoratorTransforms from "decorator-transforms";
   │                                 ───────────┬──────────
   │                                            ╰──────────── Tsconfig not found
───╯
/var/www/discourse/lib/discourse.rb:180:in 'Discourse::Utils::CommandRunner#execute_command'
/var/www/discourse/lib/discourse.rb:146:in 'Discourse::Utils::CommandRunner#exec'
/var/www/discourse/lib/discourse.rb:33:in 'Discourse::Utils.execute_command'
/var/www/discourse/lib/asset_processor.rb:58:in 'AssetProcessor.build_asset_processor'
/var/www/discourse/lib/asset_processor.rb:107:in 'block in AssetProcessor.load_or_build_processor_source'
/var/www/discourse/lib/asset_processor.rb:86:in 'block in AssetProcessor.with_file_lock'
/var/www/discourse/lib/asset_processor.rb:84:in 'IO.open'
/var/www/discourse/lib/asset_processor.rb:84:in 'AssetProcessor.with_file_lock'
/var/www/discourse/lib/asset_processor.rb:103:in 'AssetProcessor.load_or_build_processor_source'
/var/www/discourse/lib/tasks/assets.rake:161:in 'block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake:27:in '<top (required)>'
/usr/local/bin/bundle:25:in 'Kernel#load'
/usr/local/bin/bundle:25:in '<main>'
Tasks: TOP => db:migrate => assets:precompile:asset_processor
(See full trace by running task with --trace)
19:signal-handler (1782860705) Received SIGTERM scheduling shutdown...
I, [2026-06-30T23:05:05.686770 #1]  INFO -- : Terminating async processes
I, [2026-06-30T23:05:05.686855 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 19
19:M 30 Jun 2026 23:05:05.697 * User requested shutdown...
19:M 30 Jun 2026 23:05:05.697 * Saving the final RDB snapshot before exiting.
19:M 30 Jun 2026 23:05:05.743 * DB saved on disk
19:M 30 Jun 2026 23:05:05.743 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 3131 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
exec failed with the params {"cd" => "$home", "tag" => "migrate", "hook" => "db_migrate", "cmd" => ["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** 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.

J’ai essayé de supprimer les modules Node et d’exécuter manuellement pnpm install, mais sans succès. J’ai également essayé pnpm approve-builds dans le conteneur, mais il m’a indiqué qu’il n’y avait aucun package à approuver.

Quelqu’un d’autre a-t-il rencontré ce problème ? J’ai déjà effectué une reconstruction avec cette image pour un autre forum, et cela a fonctionné. J’ai tenté la reconstruction en utilisant ./launcher rebuild app.

Y a-t-il des nouvelles à ce sujet ou des étapes à suivre pour permettre à la reconstruction de se poursuivre ? Merci !

Avez-vous des plugins installés ?

Non, seulement les usuelles du discours officiel

Salut @tanya_byrne, utilisez-vous la version « latest » de Discourse, avec une installation standard ?

Savez-vous s’il y a des différences majeures entre les deux machines/forums ?

Il semble que cette erreur puisse être causée par l’exécution de rm -rf sur un plugin central. C’est une opération très risquée — tous les tests de Discourse sont effectués avec tous les plugins centraux présents. Je vous recommande donc de supprimer cette ligne de votre fichier app.yml.

Cela dit, nous pouvons améliorer ce processus de compilation des assets pour qu’il ne plante pas aussi catastrophiquement :

David, alors comment faisons-nous pour écraser les modèles dans les plugins de base sans d’abord supprimer un plugin de base puis le remplacer par une version fourchue ? N’est-ce pas sûr ? Les actifs peuvent-ils rester qui reflètent l’original ?

J’ai suivi avec succès cette approche auparavant lorsqu’il n’y avait tout simplement pas d’autre option.

L’écrasement des modèles n’est pas une fonctionnalité « prise en charge ».

Bien sûr, vous pouvez le faire à vos propres risques, et cela « devrait » probablement fonctionner. Mais ce n’est pas quelque chose que nous pouvons garantir ou tester.

Je t’apprécie d’avoir rendu ça moins problématique ici !

J’aimerais simplement que nous puissions maintenir une situation où les plugins restent complètement modulaires, lorsque c’est possible.

C’était bien le problème. Avez-vous des recommandations pour masquer/supprimer ces plugins, car je pense que supprimer des plugins que nous n’utilisons pas ne devrait pas casser la construction, les plugins étant censés être modulaires.

La méthode « prise en charge » consiste à désactiver les plugins via l’interface d’administration.

Vous êtes libre de les supprimer sur le système de fichiers, et cela « devrait » fonctionner (comme vous le dites, idéalement les plugins devraient être modulaires). Mais ce n’est pas quelque chose que nous testons rigoureusement pour le moment, donc je ne peux pas vous en garantir le fonctionnement à 100 %.

Merci David, j’apprécie vos conseils.

Je partage entièrement ton avis.

Cela me semble logique que tu puisses cacher à 100 % les plugins de l’interface d’administration (par défaut) pour réduire le désordre (et pas simplement les désactiver).

Les plugins devraient très certainement être modulaires.

Bien que je respecte le fait qu’il y ait parfois des considérations techniques, cela devrait être l’objectif ultime, à mon humble avis.

Mais célébrons aussi le fait que ce regroupement ait permis des builds beaucoup, beaucoup plus rapides :rocket: