Перекомпилируйте Heroku slug без нажатия или изменения конфигурации


мне интересно, есть ли способ заставить Heroku перекомпилировать slug без нажатия новых коммитов и/или обновления переменных конфигурации.

зачем мне это делать?:

Я использую Кедровый стек на Heroku для приложения Rails 3.2, и у меня возникли проблемы с rake assets:precompile сбой задачи (только во время компиляции - - - позже он отлично работает с heroku run). Я очень подозреваю, что это связано с тем, что некоторые переменные среды недоступны во время slug время компиляции, и я думаю heroku labs:enable user_env_compile экспериментальная функция решит эту проблему.

однако, с user_env_compile функция включена, изменения конфигурации не вызывают перекомпиляцию слизняка, и мой код не изменился, поэтому у меня нет никаких новых коммитов для нажатия.

конечно, я мог бы нажать" фиктивную " фиксацию с тривиальным изменением, что, вероятно, является самым простым ответом - - - но мне интересно, есть ли команда heroku, которая позволит мне напрямую перекомпилировать слизняк.

спасибо!

9 111

9 ответов:

компиляция Slug вызывается с помощью Git pre-recieve hook, поэтому единственный способ перекомпилировать-это нажать новую фиксацию.

для полноты смотрите эту статью на Heroku для компилятор слаг. Он обсудил использование предварительно получить крюк, чтобы вызвать процесс компиляции слаг по составлению заголовка.

самый простой обходной путь на данный момент является нажмите пустую фиксацию.

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 не удается развернуть из-за проблем на их конце.

спасибо Майклу Миору за идею использовать -C HEAD чтобы избежать открытия редактора.

обновление: heroku repo: восстановление было удалены.

Heroku имеет API сборки, который вы можете использовать, см.:создание и выпуск с помощью API


можно использовать РЕПО:восстановить если heroku-repo надстройки.

heroku repo:rebuild -a appname

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

похоже, что это еще не доступно. Однако,запрос был открыт на Heroku GitHub repo

Он также упоминает " альтернативный способ построения, который не зависит от git push"

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

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

удалите ветку, затем снова нажмите на нее. Нет необходимости использовать плагин.

git push heroku :master
git push heroku master

git push --force должно работать :)