重新编译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_compile
function后,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
看起来这是不可用的。 但是,在heroku github回购中已经开启了一个function请求
它还提到“build立一个不依赖git push
的替代方法”
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
应该工作:)