Програма Redeploy Heroku без змін коду


88

Я хотів би розгорнути додаток Heroku, який буде зроблено в ідеалі за допомогою git push -u heroku master. Однак це буде працювати лише в тому випадку, якщо є якісь очікуючі коміти, які потрібно виштовхнути до майстра.

Як я можу передислокувати програму, коли нема чого натискати? Я спробував git push -u heroku master -fі досі отримую те саме нижче

Branch master set up to track remote branch master from heroku.
Everything up-to-date

PS: Я також хочу зберегти існуючу програму, а це означає, що я не можу використовувати цю відповідь https://stackoverflow.com/a/22043184/968442


3
Це звучить як проблема XY . Чого ви сподіваєтесь досягти повторним перерозподілом того самого коду?
Кріс

1
Випадок, коли я змінив декілька конфігураторів, які заслуговують на передислокацію, але жодних
комітів

1
Встановлення змінної конфігурації призводить до перезапуску програми. Він повинен набути чинності без необхідності передислокації. Чи можете ви бути більш конкретними?
Кріс

2
На жаль, конфігуратором, який я видалив, був DISABLE_COLLECTSTATIC=1, який повинен викликати чергову команду Django, manage.py collectstaticяка підключена до логіки розгортання heroku.
nehem

Відповіді:


139

Зазвичай встановлення конфігураційного варіанта призводить до перезапуску програми. У більшості ситуацій не потрібно передислокуватися після цього.

Якщо вам дійсно потрібно запустити нове розгортання, ви можете додати новий порожній коміт, а потім знову натисніть на Heroku:

git commit --allow-empty -m "Trigger Heroku deploy after enabling collectstatic"
git push heroku master

Новий порожній коміт - це звичайний коміт. Він має хеш, автора, позначку часу тощо. Він матиме те саме дерево, що і його батько. Це повинно змусити Heroku знову побудувати додаток програми, використовуючи той самий код, що і попередній коміт.

Це трохи незручно, але це працює.


Звучить досить справедливо і робить свою справу. Тепер у мене виникає спокуса зробити резервну копію / відновити сховище ( .git), щоб приховати цей коміт від github.
nehem

@itsneo, я б не заважав. Це некрасивий коміт, але якщо ви продовжуватимете писати код поверх попереднього коміту, наступного разу вам доведеться змусити натиснути на Heroku. Це не чудова звичка, щоб заводити, хоча іноді це може знадобитися ...
Кріс,

Навіть коли git commit --allow-emptyя отримую Everything up-to-dateвід Heroku ...
Бенні Нойгебауер,

@BennyNeugebauer, подивіться, будь ласка, на ваш git log. Чи вдало ви створили новий коміт перед натисканням?
Кріс

4
Ах, я бачу проблему! Я був в іншому місцевому відділенні (ніж master). Тому я повинен був виконати: git push -f heroku the_branch_i_changed:master.
Бенні Нойгебауер,

22

Ви можете зробити це також з інтерфейсу користувача!

  1. Увійдіть на свою Herokuінформаційну панель і перейдіть до deployрозділу
  2. Знайти Manual deployваріант

Натисніть Deploy Branchкнопку!

введіть тут опис зображення


2
Варто зазначити, що для того, щоб ця опція була доступною, вам потрібно підключити програму до GitHub. Якщо ви використовуєте метод розгортання Heroku Git, не підключивши програму до репозиторію GitHub, не завжди очевидно, як розгорнути її вручну.
Дерек

11

Тепер існує також плагін для командного рядка Heroku, який дозволяє повторно випустити останній розгорнутий куля.

Див. Https://www.npmjs.com/package/heroku-releases-retry


Спочатку я думав, що це рішення, але насправді воно робить лише перепланування, але не відновлення. Але є спосіб також відновити без забрудненості вам історії Git, натиснувши нове зобов'язання: stackoverflow.com/q/9713183/322863
AEF

4

Можна бігати heroku restart --app app_name і вам добре йти.



@PanMan Питання говорить: "Як я можу передислокувати програму, коли нема чого натискати?". Це не прохання відновити програму, а перезапустити, а враховуючи те, що змін не було, я не розумію, чому ви все одно хочете.
Леандро

1
Там чітко сказано "передислокувати", а не "перезапустити". Мені, наприклад, потрібно перерозподілити (не перезавантажувати), тому що я намагаюся закріпити свій додаток за допомогою Heroku, і, коли я налагоджую, я не хочу потенційно забруднювати своє дерево git. Це те, як я опинився на цьому ТАКОМ питанні.
Mike K
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.