Перекомпилируйте иглу Heroku без изменения или изменения конфигурации
Мне интересно, есть ли способ заставить Heroku перекомпилировать слизню, не нажимая новые коммиты и/или обновляя конфигурационные переменные.
Почему я хочу это сделать?:
Я использую стек кедра на Heroku для приложения Rails 3.2, и у меня возникают проблемы с выполнением задачи rake assets:precompile
(во время компиляции --- позже он отлично работает с heroku run
). Я очень подозреваю, что это связано с тем, что некоторые переменные среды не доступны во время компиляции пули, и я думаю, что экспериментальная функция heroku labs:enable user_env_compile
решит это.
Однако, если функция user_env_compile
включена, изменения в конфигурации не вызывают перекомпиляцию пула, а мой код не изменился, поэтому у меня нет новых коммитов, чтобы нажать.
Конечно, я мог бы нажимать "dummy" commit с тривиальным изменением, что, вероятно, является самым простым ответом --- но мне интересно, есть ли команда heroku, которая позволит мне перекомпилировать пул напрямую.
Спасибо!
Ответы
Ответ 1
Компиляция slug вызывается с помощью git pre-recieve hook, поэтому единственный способ перекомпиляции - нажать новый коммит.
Для полноты см. эту статью о Heroku для компилятора slug. В нем обсуждалось использование предварительного захвата для вызова процесса компиляции пули в заголовке компиляции.
Ответ 2
Простейшим обходным решением на данный момент является нажать пустую фиксацию.
git commit --allow-empty -m "empty commit"
git push heroku master
Ответ 3
Мой общий подход:
git commit --amend -C HEAD
git push heroku:master -f
Не уверен, что я сделал бы это в производстве, не будучи уверенным, так как он технически переписывает последнее коммандит, но он не должен вызывать никаких проблем в теории. Это прекрасно, когда вы тестируете вещи в стадии разработки.
В качестве дополнительного бонуса, поскольку большинство людей сталкиваются с проблемой использования Vim для редактирования сообщений о фиксации, SHIFT-ZZ
быстро сохранит и выйдет из сообщения фиксации для вас, не внося никаких изменений в него.
В связи с примечанием я слегка шокирован, у Героку все еще нет этой функции. Я часто видел, что Heroku не удалось развернуть из-за проблем с их конца.
Спасибо Майклу Миору за идею использовать -C HEAD
, чтобы не открывать редактор.
Ответ 4
Обновление: heroku repo: rebuild был удален.
У Heroku есть API-интерфейс Build, который вы можете использовать: Создание и выпуск с использованием API
Вы можете использовать команду repo: rebuild, если надстройка heroku-repo.
heroku repo:rebuild -a appname
https://github.com/heroku/heroku-repo
Ответ 5
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
Ответ 6
Похоже, это еще не доступно. Тем не менее, запрос функции был открыт на геройку github repo
В нем также упоминается "альтернативный способ построения, который не зависит от git push
"
https://github.com/ddollar/heroku-anvil
Ответ 7
Для этого есть плагин heroku.
$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on ⬢ murmuring-lowlands-3398... done, v17
Ответ 8
попробуй это
git push heroku HEAD:master -f
Ответ 9
Удалите ветку, затем снова нажмите ее. Не нужно использовать плагин.
git push heroku :master
git push heroku master
Ответ 10
git push --force
должен работать:)