2017-03-15 60 views
7

Mam kilka testów integracyjnych na Travis, że muszę uruchomić po moja aplikacja Ruby on Rails została wdrożona na Heroku. Jak mogę to zrobić?Trigger Travis działa po wdrożeniu Heroku

Próbowałem użyć metody HTTP-POST, ale Travis required custom headers and JSON body i Heroku does not support both. Czy istnieje inny sposób?

+0

Jeśli jesteś zainteresowany pójściem z podejściem nr 1 od odpowiedzi Michała, możesz to zrobić [viaSOCKET] (https://viasocket.com). Jestem jednym z jego programistów. Nie musisz tworzyć niestandardowej aplikacji ani niczego wdrażać. – 31piy

Odpowiedz

1

Potrafię wymyślić kilka rozwiązań, ale żaden nie jest doskonały.

Jedna: Możesz stworzyć prostą aplikację, która przetłumaczy normalny hak do rozmieszczenia Heroku na format akceptowany przez Travis. Oczywiście musisz go gdzieś umieścić, ale jest to świetny przypadek użycia dla Amazon Lambda lub podobnego rozwiązania. Jeśli kiedykolwiek chciałeś spróbować bez serwera, myślę, że masz doskonały przypadek. Koszt hostingu będzie prawie zerowy.

Po drugie: Możesz użyć fazy zwalniania na Heroku. Utwórz skrypt bin/notify-travis i prześlij go do swojego Procfile release: bin/notify-travis. Problem polega na uzyskaniu wszystkich informacji o wdrożonym kodzie, takim jak commit sha. W tym celu można włączyć funkcję laboratorium o nazwie dyno-metadata. Wprowadzi dodatkowe zmienne konfiguracyjne, jedna to HEROKU_SLUG_COMMIT, która zawiera commit sha. Jeśli wymaganych jest więcej danych, to rozwiązanie może nie działać. Upewnij się, że bin/notify-travis zwraca 0. Będzie działał tuż przed wdrożeniem. A jeśli się nie powiedzie, twój kod nie zostanie wdrożony.

Trzy: Możesz znaleźć lub napisać niestandardowy buildpack, który wyśle ​​webhook do Travis. Problem polega na tym, że będzie działał podczas fazy budowy. W przypadku błędów Twój kod może nie zostać wdrożony, ale wyślesz webhook. A także problematyczne może być uzyskanie wszystkich wymaganych informacji o kompilacji, tak jak w drugim rozwiązaniu.

Masz kilka opcji. Domyślam się, że pierwszy jest najlepszy, ale może nie pasować do twoich pozostałych wymagań.