J’ai effectué une reconstruction de lanceur ./launcher rebuild app — aucune modification des fichiers système. Je suis maintenant bloqué sur les points de suspension clignotants de Discourse.
J’ai vérifié les points suivants :
docker ps affiche l’image de l’application Discourse (semble normal).
La commande top montre une activité (semble normale).
Je peux voir l’état de Sidekiq (semble normal).
J’ai donc reconstruit l’application à nouveau.
Mêmes résultats.
J’ai essayé d’utiliser le mode sans échec. Tout est désactivé. Aucun changement. Je reçois toujours l’écran des points de suspension clignotants.
J’ai examiné chaque ligne du code source. Je constate que quatre fichiers JS ne sont pas disponibles. Ce sont :
Il y a de nombreux fichiers JavaScript manquants. Ce sont les premiers trouvés.
Examen initial :
Les fichiers ne sont pas disponibles via ma diffusion CDN.
Le CDN tire de mon bucket S3.
Les fichiers ne sont pas dans mon bucket S3 où tous les autres actifs sont stockés.
En regardant les résultats de la reconstruction, je peux voir ce qui suit :
Les 4 fichiers ont été créés et écrits dans public/assets/ avec une extension de fichier .js.
Les 4 fichiers ont été compressés et enregistrés avec une extension de fichier .br.js.
En vérifiant mon serveur :
Les 4 fichiers .js sont disponibles sur mon serveur.
Les fichiers .br.js ne sont pas disponibles sur mon serveur.
Les fichiers .br.js ne sont pas dans mon bucket S3.
En parcourant les résultats de la reconstruction, il semble que l’activité after_assets_precompile ne se produise pas lors de mes reconstructions. Je peux exécuter manuellement un rake s3:upload_assets et les actifs sont migrés vers S3 et tout fonctionne bien.
J’ai vérifié les points suivants :
Mon fichier yml passe les vérifications de formatage correct.
Que puis-je vérifier pour déterminer pourquoi after_assets_precompile n’est pas traité dans le cadre de la reconstruction ?
Vous pouvez trouver cette tâche rake là-bas, puis l’exécuter depuis l’intérieur du conteneur (pour gagner du temps lors d’une reconstruction). Ensuite, effectuez une reconstruction une fois que vous avez modifié votre fichier yml.
S3 est opérationnel sur le site depuis 43 jours. Les commandes rake y ont été placées dans le cadre de l’installation S3.
Le site a été reconstruit au moins 30 fois. J’ai ajouté des plugins et des composants supplémentaires au fil du temps. Cela indiquerait que des fichiers .js ont été ajoutés et peuplés dans le bucket S3.
Le composant S3 a très bien fonctionné. C’est la première fois que j’ai des problèmes avec des fichiers qui ne sont pas migrés vers S3.
Que puis-je investiguer pour comprendre pourquoi les fichiers n’ont pas été déplacés ?
Quelqu’un sait ce qui pourrait empêcher after_assets_precompile de s’exécuter ?
L’instruction echo n’apparaît jamais dans la sortie de reconstruction.
L’étape de reconstruction traite les étapes avant et après cette section dans le fichier app.yml. Elle traite tous les plugins et commandes personnalisées.
J’ai entrepris les démarches suivantes pour tenter de résoudre le problème :
Suppression de tous les plugins
Désactivation de tous les composants
Examen de tous les fichiers journaux de discourse. Aucune erreur n’a été détectée.
Examen des fichiers journaux du système de base. Aucune erreur n’a été détectée.
Quelqu’un a-t-il une idée de la raison pour laquelle le processus de reconstruction ignorerait cette section ?
Pour tester, j’ai déplacé les commandes after_assets_precompile dans la section des commandes personnalisées.
run:
- exec: echo "Début des commandes personnalisées"
## Si vous souhaitez définir l'adresse e-mail 'De' pour votre première inscription, décommentez et modifiez :
## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit s'exécuter qu'une seule fois.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## commande pour protéger le site web par mot de passe pendant les travaux. à supprimer pour la production.
- exec:
cd: $home
cmd:
- echo "Début des commandes de précompilation"
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
- exec: echo "Fin des commandes personnalisées"
Les commandes ont fonctionné sans aucun problème. Cela exclut les problèmes d’accès environnemental ou de sécurité.
Le processus de lancement ignore le code after_assets_precompile lors de la reconstruction.
@supermathie - tu es formidable avec une vue incroyable. Tu as pu constater que le code n’était pas indenté de deux espaces. Et ce, à partir d’un seul extrait par rapport à une section plus étendue. Merci.
J’ai ajouté les deux espaces, et cela a résolu le problème.
J’avais précédemment fait passer app.yml par un vérificateur yml. L’outil de test m’a dit que le fichier était structurellement sain. Il ne pouvait pas me dire qu’il était fonctionnellement erroné.