Перекомпилируйте слизь Heroku без push или изменения конфигурации - PullRequest
128 голосов
/ 15 марта 2012

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

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

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

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

Конечно, я мог бы выдвинуть «фиктивный» коммит с тривиальным изменением, что, вероятно, является самым простым ответом - но мне интересно, есть ли команда heroku, которая позволит мне напрямую перекомпилировать слаг.*

Спасибо!

Ответы [ 9 ]

211 голосов
/ 04 сентября 2012

Самый простой обходной путь на данный момент - выдать пустой коммит .

git commit --allow-empty -m "empty commit"
git push heroku master
86 голосов
/ 16 марта 2012

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

Для полноты см. Эту статью о Heroku для компилятора слагов .В нем обсуждалось использование ловушки предварительного получения для вызова процесса компиляции слагов под заголовком «Компиляция».

22 голосов
/ 17 апреля 2013

Мой общий подход заключается в следующем:

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

Не уверен, что я бы сделал это в производстве, не будучи уверенным, так как это технически переписывает последний коммит, но не должно вызывать каких-либо проблем в теории. Впрочем, это прекрасно, когда вы тестируете вещи в постановке.

В качестве дополнительного бонуса, поскольку большинство людей испытывают проблемы с использованием Vim для редактирования сообщений фиксации. SHIFT-ZZ быстро сохранит и завершит для вас сообщение фиксации без внесения в него изменений.

В связанной ноте, я слегка шокирован, у Heroku все еще нет этой функции. Я часто видел, как Heroku не удалось развернуть из-за проблем на их конце.

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

16 голосов
/ 02 июня 2017

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
15 голосов
/ 22 февраля 2014

Обновление: Херкуо репо: восстановление было удалено .

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


Вы можете использовать команду repo: rebuild , если надстройка heroku-repo .

heroku repo:rebuild -a appname

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

9 голосов
/ 31 августа 2012

Похоже, это еще не доступно. Тем не менее, запрос функции был открыт в хранилище heroku github

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

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

3 голосов
/ 04 августа 2017

Для этого есть плагин heroku .

$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on ⬢ murmuring-lowlands-3398... done, v17
0 голосов
/ 31 июля 2014

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

git push heroku :master
git push heroku master
0 голосов
/ 18 ноября 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...