重新编译 Heroku 蛞蝓,不需要推送或更改配置

我想知道是否有一种方法可以强制 Heroku 重新编译蛞蝓,而不需要推送新的提交和/或更新配置变量。

我为什么要这么做:

我正在使用 Heroku 上的 Cedar 栈来开发一个 Rails 3.2应用程序,而且我遇到了 rake assets:precompile任务失败的问题(仅在编译期间——-稍后它可以在 heroku run上正常工作)。我高度怀疑这是由于某些环境变量在蛞蝓编译期间不可用,我认为 heroku labs:enable user_env_compile实验特性将解决这个问题。

但是,在启用了 user_env_compile特性之后,配置更改不会触发蛞蝓的重新编译,而且我的代码也没有更改,所以我不需要推送任何新的提交。

当然,我可以通过一个简单的更改来推送一个“虚拟”提交,这可能是最简单的答案——但是我想知道是否有一个 heroku 命令可以让我直接重新编译蛞蝓。

谢谢!

78267 次浏览

Slug 编译是通过 git 预接收钩子调用的,因此重新编译的唯一方法是推送一个新的提交。

完整性见本文关于 Heroku 的 段塞式编译器。它讨论了在 Compilation 标题下使用预接收钩子调用蛞蝓编译过程。

看起来这还不可用。但是,heroku github 回购上已经打开了一个 功能要求

它还提到“不依赖于 git push的另一种构建方式”

Https://github.com/ddollar/heroku-anvil

目前最简单的解决方案是 推出一个空白提交

git commit --allow-empty -m "empty commit"
git push heroku master

我的总体方法是:

git commit --amend -C HEAD
git push heroku master -f

在没有确定的情况下,我不确定是否会在生产环境中这样做,因为它确实在技术上重写了最后一次提交,但是在理论上不会引起任何问题。不过,对于在分段测试中测试东西来说,这样做非常好。

作为一个额外的好处,因为大多数人在使用 Vim 编辑提交消息时都有问题。 SHIFT-ZZ将快速保存并退出提交消息,而不需要对其进行任何更改。

在一个相关的注意,我有点震惊 Heroku 仍然没有这个功能。我经常看到 Heroku 因为他们那边的问题而不能部署。

感谢 Michael Mior 提出了使用 -C HEAD来避免打开编辑器的想法。

更新: heroku repo: 已重建为 被移除了

Heroku 有一个可以使用的 BuildAPI,参见: 使用 API 构建和发布


如果使用 (俄语)附加组件,则可以使用 重建命令。

heroku repo:rebuild -a appname

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

删除分支,然后重新推动它。不需要使用插件。

git push heroku :master
git push heroku master

Heroku 发布了一个插件: https://github.com/heroku/heroku-repo

安装:

$ heroku plugins:install heroku-repo

迫使重建:

$ heroku repo:purge_cache -a appname
$ heroku repo:reset -a appname
$ git push heroku

这个有 Heroku 插件

$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on ⬢ murmuring-lowlands-3398... done, v17

Heroku 并不容易找到,但是如果导航到应用程序,可以通过 Heroku 仪表板找到它。选择“ Deploy”选项卡,然后滚动到页面的底部,在那里您将看到标题为“ ManualDeploy”的部分。在输入字段中输入您的分支名称,然后单击按钮“ Deploy Branch”

如果你的应用程序连接到一个回购协议,那么简单来说:

  1. 打开 deploy选项卡并滚动到底部
  2. 单击 Manual deploy下的 Deploy branch

How to deploy branch manually