重新编译Heroku slug没有推或configuration更改

我想知道是否有办法强制Heroku重新编译slug而不推动新的提交和/或更新configurationvariables。

我为什么要这样做?

我正在使用Heroku上的Cedar堆栈来处理Rails 3.2应用程序,而且我遇到了rake assets:precompile问题rake assets:precompile任务失败(仅在编译过程中,后来它可以正常heroku run )。 我高度怀疑这是由于slug编译时间期间某些环境variables不可用,我认为heroku labs:enable user_env_compile实验性function将解决此问题。

但是, user_env_compilefunction后,configuration更改不会触发slug的重新编译,而且我的代码也没有更改,所以我没有任何新的提交提交。

当然,我可以推一个“虚拟”提交一个小小的变化,这可能是最简单的答案—但我想知道是否有一个heroku命令,可以让我直接重新编译slu </s>。

谢谢!

用git pre-recieve钩子调用弹头编译,所以重新编译的唯一方法是推送一个新的提交。

为了完整,请参阅Heroku的slug编译器文章 。 它讨论了使用pre-recieve钩子来调用编译标题下的slug编译过程。

现在最简单的解决方法是推送一个空的提交 。

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

我一般的做法是做:

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

我不确定我是否会在生产中做到这一点,因为它在技术上重写了最后一次提交,但不应该在理论上造成任何问题。 当你正在testing东西的时候,这是非常好的。

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

在一个相关的说明我有点震惊Heroku仍然没有这个function。 我经常看到Heroku因为问题而无法部署。

感谢Michael Mior为了避免打开编辑器而使用-C HEAD

更新: heroku回购:重build已被删除 。

Heroku有一个可以使用的Build API,请参阅: 使用API​​构build和发布


如果使用heroku-repo加载项,则可以使用repo:rebuild命令。

 heroku repo:rebuild -a appname 

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

看起来这是不可用的。 但是,在heroku github回购中已经开启了一个function请求

它还提到“build立一个不依赖git push的替代方法”

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

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

要安装它:

 $ heroku plugins:install heroku-repo 

强制重build:

 $ 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 

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

 git push heroku :master git push heroku master 

git push --force应该工作:)