Beim Versuch, EMBER_CLI_PROD_ASSETS auf 1 zu setzen, erhalte ich während der Vorabkompilierung von Assets (Version 2.9.0.beta2 Commit: d2de058ff51f204fcf85c86a00750a59505af3bb) Folgendes:
yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
node:internal/errors:464
ErrorCaptureStackTrace(err);
^
SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
at new SystemError (node:internal/errors:233:5)
at new NodeError (node:internal/errors:336:7)
at Object.userInfo (node:os:347:11)
at summarizeProcess (/var/www/discourse/app/assets/javascripts/node_modules/console-ui/lib/summarize-process.js:17:15)
at writeError (/var/www/discourse/app/assets/javascripts/node_modules/console-ui/lib/write-error.js:114:3)
at UI.writeError (/var/www/discourse/app/assets/javascripts/node_modules/console-ui/lib/index.js:167:20)
at CLI.logError (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/cli.js:318:13)
at CLI.run (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/cli.js:253:12)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async module.exports (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/index.js:145:12) {
code: 'ERR_SYSTEM_ERROR',
info: {
errno: -2,
code: 'ENOENT',
message: 'no such file or directory',
syscall: 'uv_os_get_passwd'
},
errno: [Getter/Setter],
syscall: [Getter/Setter]
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Kein Erfolg nach einem Neuaufbau der Instanz. Ich suche eher danach, was den Aufruf von uv_os_get_passwd verursacht, oder allgemeiner, was diesen Fehler verursacht. Erwartet dies, dass ein bestimmter Benutzer im System/in den Einstellungen festgelegt ist?
Wie genau führen Sie das Discourse-Image aus? Gibt es zusätzliche Flags für die Sicherheit?
Wenn Sie dieser Spur folgen, besteht das Problem darin, dass der Ember-CLI-Build fehlschlägt, und während des Versuchs, den Fehler auszugeben, wird eine weitere Ausnahme ausgelöst, die den eigentlichen Fehler verschleiert.
Können Sie in das Discourse-Image wechseln und Folgendes versuchen:
node
const os = require('os');
os.userInfo().shell
Interessant, das ist, was ich erhalte, wenn ich Ihren Vorschlag ausführe (und das ergibt absolut Sinn, wenn die Absicht darin besteht, auf ein internes Bibliothekssystem mit einem zufälligen Benutzer außer Root zuzugreifen):
node
Willkommen bei Node.js v16.13.2.
Geben Sie ".help" für weitere Informationen ein.
> const os = require('os');
undefined
> os.userInfo().shell
Uncaught:
SystemError [ERR_SYSTEM_ERROR]: Ein Systemfehler ist aufgetreten: uv_os_get_passwd gab ENOENT (keine solche Datei oder Verzeichnis) zurück
at __node_internal_captureLargerStackTrace (node:internal/errors:464:5)
at new SystemError (node:internal/errors:233:5)
at new NodeError (node:internal/errors:336:7)
at Object.userInfo (node:os:347:11) {
code: 'ERR_SYSTEM_ERROR',
info: {
errno: -2,
code: 'ENOENT',
message: 'no such file or directory',
syscall: 'uv_os_get_passwd'
},
errno: [Getter/Setter: -2],
syscall: [Getter/Setter: 'uv_os_get_passwd']
}
>
Wie genau führen Sie das Discourse-Image aus? Gibt es zusätzliche Flags für die Sicherheit?
Wir verwenden eine containerisierte Lösung auf Basis von OpenShift, in der Discourse mit einer zufälligen Benutzer-ID läuft. Bisher keine Probleme, ein Ansatz, der dem offiziellen Installationsleitfaden sehr ähnlich ist.
Sicherlich können wir dieses Problem umgehen, indem wir EMBER_CLI_PROD_ASSETS auf 0 setzen, Assets werden wie in alten Zeiten vorkompiliert, aber früher oder später, wenn Ihre Pläne in diese Richtung gehen, kann dies ein echtes Problem für solche Lösungen darstellen, wenn der aktuelle Vorkompilierungsprozess aufgegeben wird.
Hier also ein paar Fragen:
Haben Sie einen ETA für die Aufgabe (falls dies der Fall ist) der Vorkompilierung von Assets auf die alte Weise?
Gibt es eine Möglichkeit, auf die os-Maschinen auf andere Weise zuzugreifen oder einen anderen Ansatz zu wählen, damit containerisierte Lösungen mit zufälligen Benutzer-IDs weiterhin funktionieren?
Wir werden das EMBER_CLI_PROD_ASSETS in den nächsten Wochen entfernen.
Wir verwenden dies nicht direkt, sondern eine Abhängigkeit, einer Abhängigkeit, einer Abhängigkeit … Ich denke, es ist ein seltsamer Aufruf, aber es liegt nicht in unserer Hand.
Beachten Sie, dass der Fehler, den Sie sehen, nicht der eigentliche Fehler ist.
Es ist ein Fehler, der auftritt, wenn versucht wird, Ihnen den eigentlichen Fehler anzuzeigen…
Ja, verstanden nach dem obigen Beitrag. Es sei denn, das Team unternimmt spezielle Aktionen/Prüfungen, um dies zu ermöglichen, ist die Ära der Verwendung zufälliger Benutzer-IDs meiner Meinung nach vorbei.
Ja, genau. Wir haben diese neue Asset-Pipeline über Jahre hinweg langsam eingeführt, damit wir verfolgen können, was das EmberJS-Projekt empfiehlt, und weniger ein Sonderfall sind. Wir befinden uns bereits in der Endphase der Einführung.
Nur für das Protokoll, und ob es für jemanden nützlich ist. Es gibt mindestens eine Möglichkeit, ember cli wie erwartet mit einer zufälligen UID zum Laufen zu bringen, und zwar dadurch, dass sichergestellt wird, dass die zugewiesene zufällige UID einen Eintrag unter /etc/passwd hat, wenn der Vorgang rake assets:precompile ausgeführt wird.
So etwas wie:
if [ `id -u` -ge 10000 ]; then
cat /etc/passwd | sed -e "s/^discourse:/builder:/" > /tmp/passwd
echo "discourse:x:`id -u`:`id -g`:,,,:/home/discourse:/bin/bash" >> /tmp/passwd
cat /tmp/passwd > /etc/passwd
rm /tmp/passwd
fi
yarn run v1.22.17
$ /discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
- Building
Environment: production
- Building
- building...
[WARN] (broccoli-terser-sourcemap) Minifying "assets/chunk.529.6ee9018498e97f872147.js" took: 24288ms (more than 20,000ms)
...
Mir ist auch aufgefallen, dass dieser Vorgang ziemlich teuer ist und fast 2 GB RAM nur für die Vorabkompilierung verbraucht