Fallo en la reconstrucción - se omite la sección "after_assets_precompile" de app.yml

Acabo de hacer un ./launcher rebuild app — sin cambios en los archivos relacionados con el sistema. Ahora estoy atascado en los puntos parpadeantes de Discourse.

He comprobado lo siguiente:

  • docker ps muestra la imagen de la aplicación de Discourse (parece normal).
  • El comando top muestra actividad (parece normal).
  • Puedo ver el estado de Sidekiq (parece normal).

Así que, reconstruí la aplicación de nuevo.
Mismos resultados.

Intenté usar el modo seguro. Todo apagado. Sin cambios. Todavía recibo la pantalla de los puntos parpadeantes.

Revisé cada línea del código fuente. Muestro que tengo cuatro archivos JS que no están disponibles. Son:

Hay numerosos archivos JavaScript que faltan. Estos fueron los primeros encontrados.

Revisión inicial:

  • Los archivos no están disponibles a través de mi entrega CDN.
  • El CDN extrae de mi bucket S3.
  • Los archivos no están en mi bucket S3 donde se almacenan todos los demás activos.

Mirando los resultados de la reconstrucción, puedo ver lo siguiente.

  1. Los 4 archivos se crearon y se escribieron en public/assets/ con una extensión de archivo .js.
  2. Los 4 archivos se comprimieron y se guardaron con una extensión de archivo .br.js.

Comprobando mi servidor:

  1. Los 4 archivos .js están disponibles en mi servidor.
  2. Los archivos .br.js no están disponibles en mi servidor.
  3. Los archivos .br.js no están en mi bucket S3.

Al revisar los resultados de la reconstrucción, parece que la actividad after_assets_precompile no se está realizando en mis reconstrucciones. Puedo ejecutar manualmente un rake s3:upload_assets y los activos se migran a S3 y todo funciona bien.

He comprobado lo siguiente:

  1. Mi archivo yml pasa las comprobaciones de formato correcto.

¿Qué puedo comprobar para determinar por qué after_assets_precompile no se está procesando como parte de la reconstrucción?

nota: Estoy ejecutando: 3.4.0.beta4-dev - 6a50b3d4b4

1 me gusta

¿Agregaste la estrofa para subir activos?

Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas

Puedes encontrar esa tarea de rake allí y luego ejecutarla desde dentro del contenedor (para ahorrar tiempo de una reconstrucción). Y luego haz una reconstrucción una vez que edites tu archivo yml.

S3 ha estado funcionando en el sitio durante 43 días. Los comandos rake se colocaron allí como parte de la instalación de S3.

El sitio se ha reconstruido al menos 30 veces. He agregado complementos y componentes adicionales en el camino. Esto indicaría que se agregaron y poblaron archivos .js al bucket S3.

El componente S3 ha estado funcionando muy bien. Esta es la primera vez que tengo problemas con archivos que no se migran a S3.

¿Qué puedo investigar para entender por qué los archivos no se movieron?

¿Alguien sabe qué podría causar que after_assets_precompile no se ejecute?

1 me gusta

¡Ayuda!

En la reconstrucción, el proceso omite la siguiente sección en el archivo 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

Inmediatamente después de la reconstrucción, puedo procesar manualmente los comandos a través de:

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

Los comandos se ejecutan y procesan los archivos requeridos a S3.

He agregado un comando echo a la sección after_assets_precompile.

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

La declaración echo nunca aparece en la salida de la reconstrucción.

El paso de reconstrucción procesa los pasos antes y después de esta sección en el archivo app.yml. Procesa todos los complementos y comandos personalizados.

He tomado los siguientes pasos para intentar resolverlo:

  1. Eliminé todos los complementos
  2. Deshabilité todos los componentes
  3. Revisé todos los archivos de registro de discourse. No encontré ningún error indicado.
  4. Revisé los archivos de registro del sistema base. No encontré ningún error indicado.

¿Alguien tiene una idea de por qué el proceso de reconstrucción omitiría esta sección?

Como prueba, moví los comandos after_assets_precompile a la sección de comandos personalizados.

run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  ## command to password protect the website during work. remove for production.
  - exec:
      cd: $home
      cmd:
        - echo "Beginning of precompile commands"
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
  - exec: echo "End of custom commands"

Los comandos funcionaron sin ningún problema. Esto descarta problemas de acceso ambiental o de seguridad.

El proceso del lanzador se está saltando el código after_assets_precompile durante la reconstrucción.

¿Alguien tiene alguna idea?

1 me gusta

Ni idea, pero reconstruí hace unas 4 horas sin ningún problema.

1 me gusta

Es posible que tenga un error de espacio en blanco o de sangría en su archivo yml. Busque un validador y compruebe: [validar yaml]

esta no debería ser una clave de nivel superior, debería estar bajo hooks, por ejemplo:

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 Me gusta

Eso se incluyó en la primera publicación. app.yml se validó para indentaciones correctas.

1 me gusta

@supermathie - eres increíble con una vista increíble. Pudiste ver que el código no estaba con sangría de dos espacios. Y solo a partir de un solo fragmento en comparación con la sección más extensa. Gracias.

Agregué los dos espacios y eso resolvió el problema.

Anteriormente, había ejecutado app.yml a través de un verificador de yml. La herramienta de prueba me dijo que el archivo era estructuralmente sólido. No pudo decirme que era funcionalmente incorrecto.

El fragmento de código correcto debería ser:

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
  # set internal files for cdn
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - echo "Beginning of precompile commands"
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Para documentar el archivo app.yml. Las únicas claves de nivel superior son:

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

Todo lo demás debe tener sangría.

El más simple de los errores puede ser el más frustrante. Seis horas de mi vida se perdieron por dos espacios.

Mi reino por dos espacios.

2 Me gusta

Esto me pasa todo el tiempo.

Mi otra cosa favorita es editar el archivo equivocado, o el archivo correcto en la computadora equivocada.

2 Me gusta

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