【问题标题】:Error deploying to Heroku, failed to run repack部署到 Heroku 时出错,无法运行重新打包
【发布时间】:2013-11-08 18:50:27
【问题描述】:

在编译资产并启动应用程序后部署到 Heroku 时出现错误:

-----> Compiled slug size: 172.8MB
-----> Launching... done, v274
-----> Deploy hooks scheduled, check output in your logs
       http://mysite.com deployed to Heroku

Auto packing the repository for optimum performance.
error: Could not read ddb3b2358b3ea331cea15b03a8657f929364ec8c
fatal: Failed to traverse parents of commit c30cd906cd578d9618a4605cefa6e55ac535b42e
error: failed to run repack

部署似乎即将完成,最新的 Ruby 代码已部署,但我最新的 JS 更改未提供服务。对可能发生的事情有什么想法吗?

【问题讨论】:

  • 看起来像文件大小问题(以前用 git gc 看到过)。
  • 你的仓库有多大?听起来 Heroku 上的部署可能内存不足。
  • 试过git push --force?
  • 我的 Git 存储库是 45.4MB,目前我在部署到 Heroku 时没有问题。根据我的知识,构建是由 Heroku 上的工人测功机进行的。因此,如果 Heroku 可能像@CDub 假设的那样内存不足,我能想到的一种方法是将工作人员测功机从 1X 配置为 2X。 2X dynos 有 1GB 的 RAM,而 1X dynos 有 512MB(截至 01/2014)。
  • 那么有些不对劲,因为您的 repo 约为 45MB,但编译后的 slug 大小几乎是该大小的 4 倍...我对 Heroku 的体验是他们的 dynos 最多可以支持的 slug 大小约为 90MB ,也许 100MB。

标签: ruby-on-rails heroku asset-pipeline


【解决方案1】:

这可能是由浅克隆引起的问题。如果您没有完整的历史记录,则无法完全遍历树,从而导致悬空提交。这通常发生在 CI 系统中,其中 CI 进行浅层克隆以节省带宽和/或延迟。

最好的做法是避免浅层克隆。

如果完全克隆和强制推送不起作用,您可能需要重置您的存储库。重置您的存储库会将您的应用程序的存储库重新初始化为裸存储库。您正在运行的应用程序不会受到影响。这里有一个用于重置 Heroku 上的 repo 的实用插件:

https://github.com/heroku/heroku-repo

安装后,运行heroku repo:reset,然后再次推送。

如果上述技术不起作用,请记录支持票。

【讨论】:

  • 您也可以在部署之前在 CI 服务器上运行 git fetch --unshallow。它在 CircleCI 上帮助了我们。
猜你喜欢
  • 2019-07-21
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
相关资源
最近更新 更多