【问题标题】:Heroku Pipelines + Amazon Cloudfront and multiple environmentsHeroku Pipelines + Amazon Cloudfront 和多个环境
【发布时间】:2016-10-05 19:18:00
【问题描述】:

我已经使用 Heroku Pipelines 设置了一个 Rails 应用程序,以便能够自动将我们的暂存环境提升到生产环境。 master push -> CI run -> staging deploy -> production Promotion的工作流程对我们来说非常有效。

我们的资产通过 Amazon Cloudfront 分发。我为我在环境中配置的暂存环境和生产环境设置了单独的发行版:

# Environment variable configured per environment
config.action_controller.asset_host = ENV['ASSET_HOST']

这个设置会出现一个问题。即使我为每个环境配置了asset_host,资产也会在暂存环境中进行预编译,并且——当使用 Heroku Pipelines 进行推广时——也将在生产中使用。这会导致我们的自定义字体 CORS 出现问题。

我想过为多个来源配置单个 Cloudfront 分发,但无法解决。另外,我真的很想保留我们当前的工作流程,因为它为我们启用了 CD。

【问题讨论】:

  • 我的情况完全相同,在 Rails 应用程序和 webpack 应用程序上。在促销期间努力寻找重建蛞蝓的方法......

标签: ruby-on-rails heroku amazon-cloudfront


【解决方案1】:

解决方案是使用暂存环境和生产环境作为来源和行为来配置 Cloudfront。

为此,asset_host 对于登台和生产应该是相同的。

Heroku explains这个很好:

对于许多应用程序来说,在登台和生产之间共享 CDN 是令人惊讶的,但不会导致任何问题。您可以手动将两者配置为具有相同的“asset_host”。这是有效的,因为即使资产的副本已在登台应用程序上进行了修改,所有资产都会被指纹识别,并且“生产”应用程序会将浏览器指向正确的指纹。暂存应用最多可提供 3 个旧的资产副本,并且 CDN 应无限期地缓存资产。

【讨论】:

  • 那么,您最终是否拥有一个分发域和两个原始域(生产和暂存)?这就是我所做的,但我的资产没有在登台阶段提供服务。
猜你喜欢
  • 2021-03-16
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多