0

私はElastic Beanstalkを使用しており、CodeCommitとCodePipelineを使用してアプリケーションをデプロイしています。私はテンプレート作成にSmartyを使用しています。新しいバージョンのアプリケーションをデプロイするときには、すべてのテンプレートの再コンパイルを避けるため、コンパイル済みのテンプレートファイルを/var/app/current/ディレクトリの外に残しておき、各デプロイメントで削除されます。SmartByStalk、CodePipeline、CodeCommitを使用してSmartyファイルが再コンパイルされない

これを行うと、Smartyは元のテンプレートファイルが更新されたときにコンパイルされたテンプレートファイルを更新しません。原因を調べるために調査したところ、EC2インスタンスの元のテンプレートファイルを見ると、すべてのファイルの最終更新日は1979-12-31 05:08:00です。

展開時にElastic Beanstalkがファイルの変更日を保持していないようです。元の修正日がCodeCommitやCodePipelineで失われている可能性はありますか?

私の推測では、Smartyはファイルの更新日時を調べて、コンパイルされたファイルが最新であるかどうかを判断します。また、コンパイルされたテンプレートは元のテンプレートよりも新しいので、そうでない場合でも最新のものとみなされます。

新しいデプロイメントごとにコンパイルされたテンプレートを削除することを除いて、この問題をどのように解決できるかについてのアイデアはありますか? Elastic Beanstalkに変更時刻を保存させる方法はありますか?または、ファイルの変更日以外にテンプレートファイルが更新されたことをSmartyに理解させる方法がありますか?

答えて

0

CodeCommitは、リポジトリ内の最新のコミット用のzipアーカイブをS3に生成します。 CodePipelineは、このアーカイブをElasticBeanstalkアプリケーションに使用します。

zipアーカイブ内の各ファイルの変更日は、ファイルがリポジトリで最後に追加または変更された日時に関係なく、0エポックまたは1970年1月1日12:00:00 AM GMTに設定されます。将来、アーカイブが生成されたタイムスタンプまたはコミットが行われたタイムスタンプに変更される可能性があります。

したがって、ファイルの最終更新日に応じて、アプリケーションロジックを決定することはお勧めしません。あなたが見ている最後の修正日が1979-12-31 05:08:00(0エポックから10年後)である理由はわかりません。

関連する問題