Zastanawiam się, czy istnieje sposób, aby zmusić Heroku do ponownej kompilacji informacji o pracy bez wprowadzania nowych zatwierdzeń i / lub aktualizowania zmiennych konfiguracyjnych.
Dlaczego miałbym to zrobić ?:
Używam stosu Cedar na Heroku dla aplikacji Rails 3.2 i mam problemy z rake assets:precompile
niepowodzeniem zadania (tylko podczas kompilacji - później działa dobrze z a heroku run
). Podejrzewam, że jest to spowodowane tym, że pewne zmienne środowiskowe nie są dostępne w czasie kompilacji ślimaka i myślę, że heroku labs:enable user_env_compile
funkcja eksperymentalna rozwiąże ten problem.
Jednak przy user_env_compile
włączonej funkcji zmiany konfiguracji nie powodują ponownej kompilacji informacji o pracy, a mój kod się nie zmienił, więc nie mam żadnych nowych zatwierdzeń do wypchnięcia.
Oczywiście, mógłbym wcisnąć „fałszywe” zatwierdzenie z trywialną zmianą, co jest prawdopodobnie najprostszą odpowiedzią - ale zastanawiam się, czy istnieje polecenie heroku, które pozwoli mi bezpośrednio ponownie skompilować ślimak.
Dzięki!
Odpowiedzi:
Kompilacja Slug jest wywoływana za pomocą podpięcia git pre-recieve, więc jedynym sposobem na rekompilację jest wypchnięcie nowego zatwierdzenia.
Pełne informacje znajdziesz w tym artykule o Heroku dla kompilatora slug . Omówiono użycie haka pre-recieve do wywołania procesu kompilacji slug w sekcji Compilation.
źródło
repo:rebuild
nie jest już prawidłowym poleceniem we wtyczce, jak można zobaczyć tutaj: github.com/heroku/heroku-repo/commit/…Najprostszym rozwiązaniem na razie jest wypchnięcie pustego zatwierdzenia .
źródło
git reset HEAD~; git push -f heroku master
. Wiąże się z kosztem czasu kolejnego wdrożenia Heroku, ale czysta historia FTW.~/.profile
dodaniu:alias heroku-rebuild="git reset HEAD~; git push -f heroku master"
lubalias heroku-rebuild="git commit --allow-empty -m 'empty commit' && git push heroku master"
tak możesz po prostu wpisaćheroku-rebuild
Moje ogólne podejście to:
Nie jestem pewien, czy zrobiłbym to na produkcji bez pewności, ponieważ technicznie przepisuje ostatnie zatwierdzenie, ale nie powinno powodować żadnych problemów w teorii. Jest to jednak w porządku, gdy testujesz rzeczy w inscenizacji.
Jako dodatkowy bonus, ponieważ większość ludzi ma problemy z używaniem Vima do edycji,
SHIFT-ZZ
wiadomości o zmianach szybko zapiszą i wyjdą z zatwierdzenia bez wprowadzania jakichkolwiek zmian.A propos, jestem lekko zszokowany, że Heroku nadal nie ma tej funkcji. Często widziałem, jak Heroku nie udało się wdrożyć z powodu problemów po ich zakończeniu.
Podziękowania dla Michaela Miora za pomysł,
-C HEAD
aby uniknąć otwierania edytora.źródło
git commit --amend -C HEAD
aby w ogóle uniknąć otwierania edytora i zachować ten sam komunikat o zatwierdzeniu.Heroku wydało wtyczkę, o którą pytano: https://github.com/heroku/heroku-repo
Aby go zainstalować:
Aby wymusić przebudowę:
źródło
Aktualizacja: Heroku repo: rebuild zostało usunięte .
Heroku ma Build API, którego możesz użyć, zobacz: Tworzenie i wydawanie za pomocą API
Możesz użyć polecenia repo: rebuild, jeśli dodatek heroku-repo .
https://github.com/heroku/heroku-repo
źródło
Wygląda na to, że to nie jest jeszcze dostępne. Jednak żądanie funkcji zostało otwarte w repozytorium heroku github
Wspomina również o „alternatywnym sposobie budowania, który nie jest zależny od
git push
”https://github.com/ddollar/heroku-anvil
źródło
Jest do tego wtyczka heroku .
źródło
Usuń gałąź, a następnie ponownie ją pchnij. Nie ma potrzeby używania wtyczki.
źródło
git push --force
powinno działać :)źródło