Przekompiluj Heroku slug bez zmiany push lub config

Zastanawiam się, czy istnieje sposób na zmuszenie Heroku do przekompilowania Sluga bez popychania nowych commitów i/lub aktualizacji zmiennych konfiguracyjnych.

Dlaczego miałbym to robić?:

Używam stosu Cedar na Heroku dla aplikacji Rails 3.2 i mam problemy z niepowodzeniem zadania rake assets:precompile (tylko podczas kompilacji --- później działa dobrze z heroku run). Podejrzewam, że jest to spowodowane tym, że niektóre zmienne środowiskowe nie są dostępne podczas kompilacji Sluga i myślę, że heroku labs:enable user_env_compile funkcja eksperymentalna rozwiąże ten problem.

Jednak przy włączonej funkcji user_env_compile zmiany konfiguracji nie uruchamiają rekompilacji Sluga, a mój Kod się nie zmienił, więc nie mam żadnych nowych commitów do wypchnięcia.

Oczywiście, mógłbym wcisnąć" dummy " commit z trywialną zmianą, co jest prawdopodobnie najprostszą odpowiedzią - - - ale zastanawiam się, czy jest komenda heroku, która pozwoli mi bezpośrednio skompilować ślimaka.

Dzięki!
 111
Author: Kristian Glass, 2012-03-15

9 answers

Kompilacja Slug jest wywoływana za pomocą Hooka git pre-recieve, więc jedynym sposobem na przekompilowanie jest wypchnięcie nowego commita.

Dla kompletności zobacz ten artykuł na Heroku dla kompilatora slug . Omówiono użycie haka wstępnego do wywołania procesu kompilacji slug pod nagłówkiem kompilacji.

 82
Author: nmott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-06 13:43:53

Najprostszym obejściem jest wypchnięcie pustego commita .

git commit --allow-empty -m "empty commit"
git push heroku master
 189
Author: Brad Koch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-26 18:19:55

Moje ogólne podejście to zrobić:

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

Nie jestem pewien, czy zrobiłbym to w produkcji bez bycia pewnym, ponieważ technicznie przepisuje ostatni commit, ale nie powinno to powodować żadnych problemów w teorii. Jest to całkowicie w porządku, gdy testujesz rzeczy w inscenizacji.

Jako dodatkowy bonus, ponieważ większość ludzi ma problem z używaniem Vima do edycji komunikatów commit SHIFT-ZZ szybko zapisze i zamknie wiadomość commit dla ciebie bez wprowadzania w niej żadnych zmian.

W powiązanej notce jestem lekko zszokowany Heroku nadal nie ma tej funkcji. Często widziałem, jak Heroku nie udaje się wdrożyć z powodu problemów po ich stronie.

Podziękowania dla Michaela Miora za pomysł użycia -C HEAD, aby uniknąć otwarcia edytora.

 18
Author: Chris Nicola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-07 20:47:08

Aktualizacja: heroku repo: rebuild została usunięta .

Heroku ma wbudowane API, z którego możesz korzystać, Zobacz: Budowanie i uwalnianie za pomocą API


Możesz użyć komendy repo:rebuild jeśli jest to dodatek heroku-repo.

heroku repo:rebuild -a appname

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

 14
Author: khamaileon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-26 18:28:18

Wygląda na to, że to nie jest jeszcze dostępne. Jednak, żądanie funkcji zostało otwarte na repo heroku github

Wspomina również o "alternatywnym sposobie budowania, który nie jest zależny od git push"

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

 9
Author: Kostia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-06 19:52:12

Heroku wydało plugin, o który prosi się: https://github.com/heroku/heroku-repo

Aby go zainstalować:

$ heroku plugins:install heroku-repo

Aby wymusić przebudowę:

$ heroku repo:purge_cache -a appname
$ heroku repo:reset -a appname
$ git push heroku
 8
Author: Flimm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-02 09:34:00

Istnieje wtyczka heroku do tego.

$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on  murmuring-lowlands-3398... done, v17
 3
Author: Matt Joiner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-04 02:44:51

Usuń gałąź, a następnie ponownie naciśnij. Nie trzeba używać wtyczki.

git push heroku :master
git push heroku master
 -3
Author: Elliot Winkler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-30 21:48:45

git push --force powinno działać:)

 -13
Author: patcon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-17 20:11:13