Co to jest dobra strategia wdrażania do używania z Git + Heroku (Ruby on Rails)?Dobre wdrożenie Git przy użyciu strategii oddziału w Heroku?
Obecnie sposób, w jaki pracuję z moim źródłem pochodzenia Repozytorium Git: Wszystkie funkcje (lub "historie") są najpierw sprawdzane jako gałęzie, a następnie łączone z wzorcem i przekazywane do miejsca pochodzenia.
Wszystko, co zostało przekazane do miejsca pochodzenia/wzorca, uruchamia skrypt, który ściąga nowy kod szyny do obszaru przemieszczania (prosty rails webserver).
Kiedy nadejdzie czas, aby wypchnąć nową wersję produkcyjną do Heroku, czy powinienem utworzyć nowy oddział (nazywany czymś takim jak production_version_121), i wepchnąć to jakoś do Heroku?
Idealnie chciałbym wybrać i wybrać funkcje z poprzednich wersji rozwojowych, które powinienem dołączyć do gałęzi produkcyjnej ... przetestować i wcisnąć do Heroku.
Na przykład, może nie chcę, aby cały najnowszy kod został przekazany do produkcji. Mogę chcieć funkcji "a", nad którą pracowałem, i funkcji "c", w jakikolwiek sposób połączonej z produkcją, bez włączania funkcji eksperymentalnej "b", która wymaga więcej debugowania.
N.B. Zamierzam najpierw spróbować ominąć capistrano i na razie coś zrobić ręcznie.
Myśli? Najlepsze praktyki?
Dzięki David! Byłem ciekawy, czy ktoś tak postępuje. Racja Po prostu używam mojego zdalnego "master" jako produkcji .. więc do wdrożenia po prostu kontynuuję: git push heroku (kiedy nadejdzie czas) Problem polega na tym, że nie mam jeszcze funkcji, które chcę aby wybrać i włączyć do wdrożenia produkcyjnego jeszcze ... Oczekuję, że pojawi się potrzeba, w którym to przypadku będę musiał uruchomić uprawnioną gałąź "produkcji" na moim zdalnym serwerze git. Następnym razem, gdy spróbuję: git push heroku production: master Zakładam, że będzie narzekać i będę musiał użyć flagi "force", aby heroku wyrzuciło to, co śledził? – Zaqintosh
Moje jedyne inne pytanie brzmi: czy w ogóle używasz swojego pilota? Czy pracujesz w oddziałach i wdrażasz/scalasz do/z oddziałów w 100% przypadków? – Zaqintosh
To, czy musisz wymusić, zależy od tego, czy "produkcja" jest bezpośrednim potomkiem tego, co aktualnie istnieje na zdalnym wzorcu. Gemcutter używa gałęzi "master" jako trunk. Tam właśnie przechodzą wszystkie najnowsze zmiany. Gałęzie obiektów są tworzone, a następnie łączone z powrotem do linii głównej. Czasami pojedyncze zatwierdzenia lub gałęzie funkcji są scalane w gałęzi produkcyjnej, czasem master jest bezpośrednio łączony, jeśli chcemy tego wszystkiego. –