0

我正在使用Elastic Beanstalk,使用CodeCommit和CodePipeline部署我的應用程序。我正在使用Smarty進行模板。爲了避免在部署我的應用程序的新版本時重新編譯所有模板,我希望將已編譯的模板文件保留在/var/app/current/目錄之外,並在每次部署時將其刪除。Smarty文件不會使用Elastic Beanstalk,CodePipeline和CodeCommit重新編譯

但是,當我這樣做時,Smarty不更新原始模板文件更新時編譯的模板文件。我已經調查瞭解原因,並且當我查看EC2實例上的原始模板文件時,它們都有最後修改日期1979-12-31 05:08:00。

Elastic Beanstalk似乎並未在部署時保留文件的修改日期。 CodeCommit或CodePipeline中可能丟失了原始修改日期?

我的猜測是,Smarty會查看文件的修改日期以確定編譯的文件是否爲最新版本。而且,由於編譯後的模板比原始模板更新,所以即使它們不是最新的模板,它們也被認爲是最新的。

任何想法,我可以如何解決這個問題,除了每個新的部署刪除編譯模板?有沒有辦法讓Elastic Beanstalk保留修改時間?或者有什麼方法可以讓Smarty理解,除了文件的修改日期之外,模板文件已被更新?

回答

0

CodeCommit爲您的存儲庫中的最新提交生成一個zip存檔到S3。 CodePipeline將這個存檔用於您的ElasticBeanstalk應用程序。

無論上次在存儲庫中添加或更改文件的時間,zip歸檔文件中每個文件的修改日期都設置爲0 epoch或1970年1月1日12:00:00 GMT。將來,這可能會更改爲生成歸檔的時間戳或提交進行的時間戳。

因此,我們不建議根據文件的上次修改日期來對您的應用程序邏輯做出任何決定。我不清楚爲什麼你看到的最後修改日期是1979-12-31 05:08:00(0紀元後的10年)。

相關問題