Errore di ricostruzione - salto della sezione "after_assets_precompile" di app.yml

Ho appena eseguito un ./launcher rebuild app senza modifiche ai file di sistema. Ora sono bloccato sui puntini lampeggianti di Discourse.

Ho controllato quanto segue:

  • Il comando docker ps mostra l’immagine dell’app Discourse (sembra normale).
  • Il comando top mostra attività (sembra normale).
  • Posso visualizzare lo stato di Sidekiq (sembra normale).

Quindi, ho ricostruito nuovamente l’app.

Stessi risultati.

Ho provato a usare la modalità provvisoria (Safe-mode). Tutto disattivato. Nessun cambiamento. Ricevo ancora la schermata con i puntini lampeggianti.

Ho esaminato ogni riga del codice sorgente. Vedo che ho quattro file JS non disponibili. Sono:

Ci sono numerosi file JavaScript mancanti. Questi sono stati i primi trovati.

Revisione iniziale:

  • I file non sono disponibili tramite la mia CDN.
  • La CDN preleva dal mio bucket S3.
  • I file non sono nel mio bucket S3 dove sono archiviati tutti gli altri asset.

Guardando i risultati della ricostruzione, posso vedere quanto segue.

  1. I 4 file sono stati creati e scritti in public/assets/ con estensione .js.
  2. I 4 file sono stati compressi e salvati con estensione .br.js.

Controllo sul mio server:

  1. Tutti e 4 i file .js sono disponibili sul mio server.
  2. I file .br.js non sono disponibili sul mio server.
  3. I file .br.js non sono nel mio bucket S3.

Scorrendo i risultati della ricostruzione, sembra che l’attività after_assets_precompile non venga eseguita durante le mie ricostruzioni. Posso eseguire manualmente un rake s3:upload_assets e gli asset vengono migrati su S3 e tutto funziona bene.

Ho controllato quanto segue:

  1. Il mio file yml supera i controlli per una formattazione corretta.

Cosa posso controllare per determinare perché after_assets_precompile non viene elaborato come parte della ricostruzione?

nota: sto eseguendo: 3.4.0.beta4-dev - 6a50b3d4b4

1 Mi Piace

Hai aggiunto la stanza per caricare gli asset?

Configura un provider di object storage compatibile con S3 per i caricamenti

Puoi trovare quel rake task lì e quindi eseguirlo dall’interno del container (per risparmiare tempo di una ricostruzione). E poi fare una ricostruzione una volta modificato il file yml.

S3 è attivo e funzionante sul sito da 43 giorni. I comandi rake sono stati inseriti lì come parte dell’installazione di S3.

Il sito è stato ricostruito almeno 30 volte. Ho aggiunto plugin e componenti aggiuntivi lungo il percorso. Ciò indicherebbe che i file .js sono stati aggiunti e popolati nel bucket S3.

Il componente S3 ha funzionato benissimo. Questa è la prima volta che ho avuto problemi con file non migrati su S3.

Cosa posso indagare per capire perché i file non sono stati spostati?

Qualcuno sa cosa potrebbe causare il mancato avvio di after_assets_precompile?

1 Mi Piace

Aiuto!

Al momento della ricompilazione, il processo salta la seguente sezione nel file 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

Subito dopo la ricompilazione, posso elaborare manualmente i comandi tramite:

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

I comandi vengono eseguiti ed elaborano i file richiesti su S3.

Ho aggiunto un comando echo alla sezione after_assets_precompile.

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

L’istruzione echo non appare mai nell’output della ricompilazione.

Il passaggio di ricompilazione elabora i passaggi prima e dopo questa sezione nel file app.yml. Elabora tutti i plugin e i comandi personalizzati.

Ho intrapreso i seguenti passaggi per provare a risolvere il problema:

  1. Rimossi tutti i plugin
  2. Disabilitati tutti i componenti
  3. Esaminati tutti i file di log di discourse. Non sono stati riscontrati errori.
  4. Esaminati i file di log del sistema di base. Non sono stati riscontrati errori.

Qualcuno ha un’idea del perché il processo di ricompilazione salterebbe questa sezione?

Come test, ho spostato i comandi after_assets_precompile nella sezione dei comandi personalizzati.

run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se vuoi impostare l'indirizzo email 'From' per la tua prima registrazione, decommenta e cambia:
  ## Dopo aver ricevuto la prima email di iscrizione, ri-commenta la riga. Deve essere eseguita solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  ## comando per proteggere con password il sito web durante il lavoro. rimuovere per la produzione.
  - exec:
      cd: $home
      cmd:
        - echo "Inizio dei comandi di precompilazione"
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
  - exec: echo "Fine dei comandi personalizzati"

I comandi hanno funzionato senza problemi. Questo esclude problemi di accesso all’ambiente o di sicurezza.

Il processo di avvio sta saltando il codice after_assets_precompile durante la ricostruzione.

Qualcuno ha un’idea?

1 Mi Piace

Non ne ho idea, ma ho ricostruito circa 4 ore fa senza alcun problema.

1 Mi Piace

Potrebbe esserci un errore di spazio bianco o di indentazione nel tuo file yml. Cerca un validatore e controlla: [validate yaml]

questa non dovrebbe essere una chiave di primo livello, dovrebbe essere sotto hooks, ad esempio:

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 Mi Piace

Questo era elencato nel primo post. app.yml è stato convalidato per le corrette indentazioni.

1 Mi Piace

@supermathie - sei fantastico con una vista incredibile. Sei stato in grado di vedere che il codice non era indentato di due spazi. E solo da un singolo snippet rispetto alla sezione più estesa. Grazie.

Ho aggiunto i due spazi e questo ha risolto il problema.

In precedenza avevo eseguito app.yml tramite un controllo yml. Lo strumento di test mi ha detto che il file era strutturalmente valido. Non poteva dirmi che era funzionalmente errato.

Il frammento di codice corretto dovrebbe essere:

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
  # imposta file interni per cdn
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - echo "Inizio dei comandi di precompilazione"
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Per documentare il file app.yml. Le uniche chiavi di primo livello sono:

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

Tutto il resto dovrebbe essere indentato.

Il più semplice degli errori può essere il più frustrante. Sei ore della mia vita sono state perse per due spazi.

Il mio regno per due spazi.

2 Mi Piace

Mi succede sempre.

La mia altra cosa preferita è modificare il file sbagliato, o il file giusto sul computer sbagliato.

2 Mi Piace

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