Neukompiliierungsfehler - Überspringen des Abschnitts "after_assets_precompile" in app.yml

Ich habe gerade einen ./launcher rebuild app ausgeführt – keine Änderungen an systembezogenen Dateien. Ich hänge jetzt bei den blinkenden Discourse-Punkten.

Ich habe Folgendes überprüft:

  • docker ps zeigt das Discourse-App-Image an (scheint normal).
  • Der top-Befehl zeigt Aktivität an (scheint normal).
  • Ich kann den Sidekiq-Status einsehen (scheint normal).

Also habe ich die App erneut neu kompiliert.

Gleiche Ergebnisse.

Ich habe versucht, den abgesicherten Modus zu verwenden. Alles ausgeschaltet. Keine Änderung. Ich erhalte immer noch den Bildschirm mit den blinkenden Punkten.

Ich habe jede Zeile des Quellcodes überprüft. Ich sehe, dass vier JS-Dateien nicht verfügbar sind. Es sind:

Es gibt zahlreiche fehlende JavaScript-Dateien. Dies waren die ersten gefundenen.

Erste Überprüfung:

  • Die Dateien sind über meine CDN-Bereitstellung nicht verfügbar.
  • Das CDN zieht aus meinem S3-Bucket.
  • Die Dateien befinden sich nicht in meinem S3-Bucket, wo alle anderen Assets gespeichert sind.

Wenn ich mir die Ergebnisse des Rebuilds ansehe, sehe ich Folgendes:

  1. Die 4 Dateien wurden erstellt und mit der Dateiendung .js in public/assets/ geschrieben.
  2. Die 4 Dateien wurden komprimiert und mit der Dateiendung .br.js gespeichert.

Überprüfung meines Servers:

  1. Alle 4 .js-Dateien sind auf meinem Server verfügbar.
  2. Die .br.js-Dateien sind auf meinem Server nicht verfügbar.
  3. Die .br.js-Dateien befinden sich nicht in meinem S3-Bucket.

Wenn ich die Rebuild-Ergebnisse durchgehe, scheint es, dass die Aktivität nach after_assets_precompile bei meinen Rebuilds nicht stattfindet. Ich kann manuell rake s3:upload_assets ausführen, die Assets werden nach S3 migriert und alles funktioniert gut.

Ich habe Folgendes überprüft:

  1. Meine YML-Datei besteht die Prüfungen auf korrekte Formatierung.

Was kann ich überprüfen, um festzustellen, warum after_assets_precompile nicht als Teil des Rebuilds verarbeitet wird?

Hinweis: Ich verwende: 3.4.0.beta4-dev - 6a50b3d4b4

1 „Gefällt mir“

Haben Sie die Klausel zum Hochladen von Assets hinzugefügt?

Konfigurieren Sie einen S3-kompatiblen Objektspeicheranbieter für Uploads

Sie finden diese Rake-Aufgabe dort und können sie dann aus dem Container heraus ausführen (um die Zeit eines Rebuilds zu sparen). Führen Sie dann einen Rebuild durch, sobald Sie Ihre yml-Datei bearbeitet haben.

S3 ist seit 43 Tagen auf der Website aktiv. Die Rake-Befehle wurden als Teil der S3-Installation dort platziert.

Die Website wurde mindestens 30 Mal neu erstellt. Ich habe im Laufe der Zeit zusätzliche Plugins und Komponenten hinzugefügt. Dies würde darauf hindeuten, dass .js-Dateien zum S3-Bucket hinzugefügt und dort abgelegt wurden.

Die S3-Komponente hat großartig funktioniert. Dies ist das erste Mal, dass ich Probleme mit Dateien hatte, die nicht nach S3 migriert wurden.

Was kann ich untersuchen, um zu verstehen, warum die Dateien nicht verschoben wurden?

Weiß jemand, was dazu führen könnte, dass after_assets_precompile nicht ausgeführt wird?

1 „Gefällt mir“

Hilfe!

Beim Neuerstellen überspringt der Prozess den folgenden Abschnitt in der Datei app.yml:

after_assets_precompile:
  - exec:
      cd: $home
      cmd:
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Unmittelbar nach dem Neuerstellen kann ich die Befehle manuell über Folgendes verarbeiten:

./launcher enter app
rake s3:upload_assets
rake s3:expire_missing_assets

Die Befehle werden ausgeführt und verarbeiten die erforderlichen Dateien nach S3.

Ich habe dem Code after_assets_precompile einen Echo-Befehl hinzugefügt.

      cmd:
        - echo "Beginning of precompile commands"
        - sudo -E -u discourse bundle exec rake s3:upload_

Die Echo-Anweisung erscheint nie in der Ausgabe des Neuerstellens.

Der Schritt zum Neuerstellen verarbeitet die Schritte vor und nach diesem Abschnitt in der Datei app.yml. Er verarbeitet alle Plugins und benutzerdefinierten Befehle.

Ich habe die folgenden Schritte unternommen, um zu versuchen, das Problem zu beheben:

  1. Alle Plugins entfernt
  2. Alle Komponenten deaktiviert
  3. Alle Discourse-Protokolldateien überprüft. Keine Fehler angegeben gefunden.
  4. Protokolldateien des Basissystems überprüft. Keine Fehler angegeben gefunden.

Hat jemand eine Ahnung, warum der Prozess des Neuerstellens diesen Abschnitt überspringen würde?

Zu Testzwecken habe ich die after_assets_precompile-Befehle in den benutzerdefinierten Befehlsabschnitt verschoben.

run:
  - exec: echo „Beginn der benutzerdefinierten Befehle“
  ## Wenn Sie die E-Mail-Adresse des Absenders für Ihre erste Registrierung festlegen möchten, kommentieren Sie sie aus und ändern Sie sie:
  ## Nachdem Sie die erste Anmelde-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
  #- exec: rails r „SiteSetting.notification_email='info@unconfigured.discourse.org'“
  ## Befehl zum Passwortschutz der Website während der Arbeit. Entfernen für die Produktion.
  - exec:
      cd: $home
      cmd:
        - echo „Beginn der Precompile-Befehle“
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
  - exec: echo „Ende der benutzerdefinierten Befehle“

Die Befehle funktionierten ohne Probleme. Dies schließt Probleme mit dem Umgebungzugriff oder der Sicherheit aus.

Der Launcher-Prozess überspringt den after_assets_precompile-Code während des Rebuilds.

Hat jemand eine Ahnung?

1 „Gefällt mir“

Keine Ahnung, aber ich habe vor etwa 4 Stunden ohne Probleme neu aufgebaut.

1 „Gefällt mir“

Möglicherweise liegt ein Leerzeichen- oder Einrückungsfehler in Ihrer YAML-Datei vor. Suchen Sie nach einem Validator und überprüfen Sie: [YAML validieren]

Dies sollte kein Top-Level-Schlüssel sein, sondern unter hooks stehen, z. B.:

hooks:
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
3 „Gefällt mir“

Das wurde im ersten Beitrag aufgeführt. app.yml wurde auf korrekte Einrückungen validiert.

1 „Gefällt mir“

@supermathie - du bist großartig mit unglaublichem Sehvermögen. Du hast erkannt, dass der Code nicht mit zwei Leerzeichen eingerückt war. Und das nur aus einem einzigen Ausschnitt im Gegensatz zu einem umfangreicheren Abschnitt. Danke.

Ich habe die zwei Leerzeichen hinzugefügt und das Problem damit behoben.

Ich hatte zuvor app.yml durch einen YML-Checker laufen lassen. Das Testwerkzeug sagte mir, dass die Datei strukturell einwandfrei sei. Es konnte mir nicht sagen, dass sie funktional falsch war.

Der korrekte Codeausschnitt sollte lauten:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-adplugin
          - git clone https://github.com/discourse/discourse-affiliate
          - git clone https://github.com/discourse/discourse-subscriptions
          - git clone https://github.com/discourse/discourse-yearly-review
          - git clone https://github.com/discourse/discourse-whos-online
          - git clone https://github.com/discourse/discourse-data-explorer
  # interne Dateien für CDN festlegen
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - echo "Beginn der Precompile-Befehle"
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Um die Datei app.yml zu dokumentieren. Die einzigen Top-Level-Schlüssel sind:

  • templates:
  • params:
  • env:
  • volumes:
  • hooks:
  • run:

Alles andere sollte eingerückt sein.

Der einfachste Fehler kann der frustrierendste sein. Sechs Stunden meines Lebens gingen für zwei Leerzeichen verloren.

Mein Königreich für zwei Leerzeichen.

2 „Gefällt mir“

Das passiert mir ständig.

Mein anderer Favorit ist das Bearbeiten der falschen Datei oder der richtigen Datei auf dem falschen Computer.

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.