不使用Elastic Beanstalk,CodePipeline和CodeCommit重新编译Smarty文件

时间:2017-08-10 11:39:05

标签: amazon-web-services smarty elastic-beanstalk aws-codepipeline aws-codecommit

我正在使用Elastic Beanstalk,使用CodeCommit和CodePipeline部署我的应用程序。我正在使用Smarty进行模板化。为了避免在部署新版本的应用程序时重新编译所有模板,我希望将编译后的模板文件保留在/var/app/current/目录之外,并在每次部署时将其删除。

但是当我这样做时,Smarty不会在更新原始模板文件时更新已编译的模板文件。我已调查找出原因,当我在EC2实例上查看我的原始模板文件时,它们的最后修改日期为1979-12-31 05:08:00。

在部署时,Elastic Beanstalk似乎不保留文件的修改日期。也许CodeCommit或CodePipeline中的原始修改日期会丢失?

我的猜测是,Smarty会查看文件的修改日期,以确定编译的文件是否是最新的。由于编译的模板比原始模板更新,因此即使它们不是最新模板,它们也被认为是最新的。

除了在每次新部署中删除已编译的模板之外,我有什么想法可以解决这个问题?有没有办法让Elastic Beanstalk保留修改时间?或者有没有办法让Smarty了解模板文件已经更新,除了文件的修改日期?

1 个答案:

答案 0 :(得分:1)

CodeCommit为您的存储库中的最新提交生成一个zip存档到S3。 CodePipeline将此存档用于您的ElasticBeanstalk应用程序。

zip存档中每个文件的修改日期设置为0纪元或格林尼治标准时间1970年1月1日12:00:00,无论文件最后一次在存储库中添加或更改的时间。将来,这可能会更改为生成存档的时间戳或提交的时间戳。

因此,我们不建议根据文件的上次修改日期对您的应用程序逻辑做出任何决定。我不清楚为什么你看到的最后修改日期是1979-12-31 05:08:00(0时代后10年)。