0

Ich verwende Elastic Beanstalk und stelle meine Anwendung mit CodeCommit und CodePipeline bereit. Ich verwende Smarty für das Templating. Um die Neukompilierung aller Vorlagen bei der Bereitstellung einer neuen Version meiner Anwendung zu vermeiden, möchte ich die kompilierten Vorlagendateien außerhalb des Verzeichnisses /var/app/current/ aufbewahren, wo sie bei jeder Bereitstellung entfernt werden.Smarty-Dateien werden nicht mit Elastic Beanstalk, CodePipeline und CodeCommit neu kompiliert.

Aber wenn ich dies tue, aktualisiert Smarty die kompilierten Vorlagendateien nicht, wenn die ursprünglichen Vorlagendateien aktualisiert werden. Ich habe untersucht, um die Ursache herauszufinden, und wenn ich meine ursprünglichen Vorlagedateien auf den EC2-Instanzen ansehe, haben sie alle ein Datum der letzten Änderung von 1979-12-31 05:08:00.

Es scheint, dass Elastic Beanstalk das Änderungsdatum der Dateien bei der Bereitstellung nicht bewahrt. Vielleicht gehen die ursprünglichen Änderungsdaten in CodeCommit oder CodePipeline verloren?

Meine Vermutung ist, dass Smarty das Änderungsdatum der Dateien untersucht, um festzustellen, ob die kompilierten Dateien aktuell sind oder nicht. Und da die kompilierten Vorlagen neuer als die ursprünglichen Vorlagen sind, werden sie als aktuell angesehen, auch wenn sie nicht vorhanden sind.

Irgendwelche Ideen, wie ich dieses Problem lösen kann, außer das Löschen der kompilierten Vorlagen mit jeder neuen Bereitstellung? Gibt es eine Möglichkeit, Elastic Beanstalk die Modifikationszeiten beizubehalten? Oder gibt es eine Möglichkeit Smarty zu verstehen, dass eine Vorlagendatei neben dem Änderungsdatum der Datei aktualisiert wurde?

Antwort

0

CodeCommit generiert ein Zip-Archiv für das neueste Commit in Ihrem Repository zu S3. CodePipeline verwendet dieses Archiv für Ihre ElasticBeanstalk-Anwendung.

Das Änderungsdatum für jede Datei im Zip-Archiv wird auf 0 Epoche oder 1. Januar 1970 12:00:00 GMT gesetzt, unabhängig davon, wann die Datei zuletzt im Repository hinzugefügt oder geändert wurde. In Zukunft könnte dies in den Zeitstempel geändert werden, zu dem das Archiv erstellt wurde, oder auf den Zeitstempel, zu dem das Commit durchgeführt wurde.

Wir empfehlen daher nicht, abhängig vom letzten Änderungsdatum der Dateien, Entscheidungen über Ihre Anwendungslogik zu treffen. Es ist mir unklar, warum das letzte Änderungsdatum, das Sie sehen, 1979-12-31 05:08:00 (10 Jahre nach 0 Epoche) ist.

Verwandte Themen