部署版本控制资产的策略(适用于 PHP 应用程序的资产到 Amazon S3)


Strategy to deploy versioned assets (for PHP app's assets to Amazon S3)

我目前使用 s3cmd 部署 PHP 应用程序的静态资产。

如果 Amazon S3 的资产发生了更改(如 JavaScript 脚本),我将手动重命名它,以便新版本由 Amazon Cloudfront 同步和提供服务。

是否有将 PHP 应用程序的静态资产部署到 Amazon S3 的记录实践?我已经看到站点使用哈希来引用其资产的特定部署版本。我想知道让 Web 应用程序引用该哈希(如 git 提交 SHA?)的方法。

我可以看到有效的方法是写入保存当前 SHA 的独立配置文件,并从中读取以进行部署。

使用当前进程更新 1

我希望使资产的部署更加自动化:

  • 对应用的 JavaScript 进行更改
  • 将脚本从 app.23.js 重命名为 app.24.js
  • 编辑网站的标题 HTML 模板以引用app.24.js
  • 将所有更改提交到 git
  • develop分支合并到master
  • 使用新版本号标记提交
  • 将代码推送到 BitBucket
  • 使用 s3cmd 将新脚本同步到 Amazon S3(以及 Cloudfront CDN)
  • SSH 进入服务器,并拉取最新的 git 树。生产服务器为master分支提供服务。
我想这个问题

没有具体的答案,但这里有几件事。

  1. 如果您只想自动执行正在执行的手动工作,那么可能值得研究一些部署工具。Capistrano和Magallanes是我想到的两个名字,但你可以谷歌一下,我相信你会发现很多选择。

  2. Rails框架建立在有最好的做事方法的理念之上。它还使用哈希对静态资产进行版本控制,并即时完成开箱即用的操作。您可以考虑在您的案例中实现哈希。

  3. Grunt 是您可以研究的另一种自动化工具。我发现这个模块可能会派上用场 https://github.com/theasta/grunt-assets-versioning

我想说的是,2,3,4是您工作流程中的问题区域。手动重命名并每次更新代码听起来不太好。正如您所指出的,GIT 哈希是唯一的,因此也许可以在部署期间将 GIT 哈希附加到您的资产并将它们同步到 S3/Cloudfront ?