Czy konieczne jest posiadanie repozytorium git tylko na openshift? Mam już repozytorium bitbucket / github git i wolałbym tylko tam naciskać. Czy mogę po prostu podłączyć się do niego, aby funkcja openshift stała się intymna?
Lub dla uproszczenia pcham tylko na github, ale kiedy chcę wdrożyć, robię coś z openshift?
Sprawdziłem to, ale zdezorientowało mnie: chodzi o scalanie exiting i nowego (openshift) gita?
Odpowiedzi:
Mam wrażenie, że nie jesteś jeszcze wystarczająco przyzwyczajony do używania gita. Radziłbym zapoznać się z git, aby w pełni zrozumieć, jak wypchnąć kod do openshift. Niemniej jednak pozwólcie, że spróbuję wam wyjaśnić, jakie kroki trzeba wykonać: Tak jak w przypadku gita ogólnie, podejście do wyboru tutaj polega na sklonowaniu innego repozytorium git (np. Na bitbuckecie) na komputer lokalny:
git clone <bitbucket-repo-url>
Twój lokalny klon ma wtedy inne repozytorium (bitbucket itp.) Jako repozytorium zdalne. Twoje zdalne repozytorium jest przechowywane z aliasem „origin” (domyślny alias używany przez git podczas klonowania). Następnie dodajesz repozytorium openshift jako zdalne do swojego klona. Robisz to, używając aliasu dla zdalnego repozytorium, które dodajesz - używam „openshift” jako aliasu tutaj:
git remote add openshift -f <openshift-git-repo-url>
Aby móc następnie przesłać kod z lokalnego repozytorium git do openshift, najpierw musisz scalić repozytorium openshift z lokalnym klonem bitbucket. Robisz to, wydając lokalnie:
git merge openshift/master -s recursive -X ours
Za pomocą tego polecenia możesz powiedzieć gitowi, aby scalił gałąź główną w repozytorium git openshift z lokalnym repozytorium git. Mówisz mu, aby scalił, używając strategii scalania rekurencyjnego i aby wybrał twoją („naszą”) wersję, gdy wystąpią konflikty.
Po zakończeniu scalania możesz przesunąć repozytorium git na openshift. Robisz to, wykonując:
git push openshift HEAD
Mówisz gitowi, aby przekazał twój lokalny kod do gałęzi HEAD w zdalnym repozytorium o nazwie "openshift" (alias, w którym zapisaliśmy repozytorium git openshift, kilka akapitów dalej).
przy okazji. Napisałem blog narzędzi jboss, który kilka miesięcy temu demonstrował, jak używać klienta openshift-java: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client . Powyższe kroki zauważysz w ostatnim akapicie „Już prawie gotowe”.
źródło
--allow-unrelated-histories
ponieważ domyślne ustawienie git zostało zmienione, aby uniemożliwić scalanie niepowiązanych historii.Wiem, że pytanie ma 2 lata, a odpowiedź @ adietisheim została przyjęta. Osobiście nie lubię scalać repozytorium openshift z moim lokalnym klonem, ponieważ nie chcę mieszać repozytorium OpenShift z główną gałęzią mojego publicznego repozytorium.
Zakładając, że dodałeś pilota za pomocą
git remote add openshift <openshift-git-repo-url>
, oto co bym zrobił:Utwórz nowy oddział lokalny
openshift
na podstawiemaster
oddziału.Możesz wprowadzić pewne zatwierdzenia w gałęzi,
openshift
takie jak konfiguracje wdrażania aplikacji. Następnie wypchnij bieżącą gałąź do zdalnego wzorca pasującego do referencji w repozytorium OpenShift z flagą,-f
aby nadpisać wszystko w zdalnejmaster
gałęzi.Za każdym razem, gdy chcę wdrożyć moją aplikację w OpenShift, sprawdzałem lokalny
openshift
oddział imaster
scalałem z nim gałąź, a następnie wymuszałem wypychanie na OpenShift, jednak-f
może nie być wymagane przy następnych wypychaniach:źródło
Z folderu projektu, zrób
Możesz przeczytać Pushing to two git remote origins z jednego repozytorium i Changing git remote origin .
źródło
git push backup master
jest wystarczające, nie musisz określać obu stron refspec.git push -u all
to „all” do domyślnego pilota. Kiedy to zrobiszgit push
, następnie push do 2 repozytoriów!Zgadzam się z odpowiedzią @ adietisheim: musisz lepiej zrozumieć git przed wdrożeniem z openshift =)
Teraz, nawet jeśli rozumiesz git, niekoniecznie jest oczywiste, jak wdrożyć istniejące repozytorium, jeśli struktura katalogów nie pasuje do struktury katalogów wymaganej przez openshift i jeśli chcesz zachować starą strukturę katalogów.
W tym celu mam następujące wskazówki:
oddzielne opcje, które są zależne od tych, które nie znajdują się w różnych plikach. Na przykład oddzielam ustawienia mojej bazy danych od innych ustawień do różnych plików, takich jak:
settings_deploy / openshift
settings_deploy / localhost
a następnie łącze symboliczne do testu hosta lokalnego jako coś takiego:
Inną opcją jest wykrycie hosta za pomocą zmiennych środowiskowych:
Jest to trochę prostsze, ponieważ pozwala umieścić wszystkie konfiguracje w jednym pliku. Jest to trochę mniej ogólne, ponieważ jeśli kiedykolwiek inny z twoich hostów zaoferuje
OPENSHIFT_APP_NAME
zmienną środowiskową (mało prawdopodobne dla tego), metoda się zepsuje. W każdym razie nadal musisz wyraźnie oddzielić, co jest zależne od wdrożenia, a co nie.utwórz lokalny katalog wdrażania
sklonuj do niego początkowy szablon openshift
utwórz skrypt wdrażania, który:
łączy wszystko, od starego istniejącego lokalnego do ich prawidłowych lokalizacji w
dowiązania twarde są szybkie w tworzeniu i wykorzystują bardzo mało pamięci
możesz użyć czegoś takiego:
cp -lrf original_repo_dir deploy_repo_dir
zachowaj tylko poprawny
settings_deploy
plik w repozytorium wdrażania:cd deploy_repo
mv settings_deploy/openshift settings_deploy_file
rm -r settings_deploy
siła pchająca:
cd deploy_repo
git push -f origin master
wyczyść repozytorium wdrożenia:
git reset --hard HEAD
git clean -df
dla zainteresowanych wdrożeniem django mam przykład na moim githubie , w szczególności sprawdź
deploy.sh
skrypt i projekt,projects/elearn
który wdraża.źródło
Powinieneś być w stanie przekazać istniejące repozytorium Git do potoku zasobów za pośrednictwem
Zdalne repozytorium Git dostarcza następnie początkową aplikację dla OpenShift.
Drugą możliwością jest pominięcie tworzenia lokalnego repozytorium OpenSHift Git przez
a następnie wykonaj kroki opisane powyżej, aby połączyć zdalne repozytorium Git OpenShift z lokalnym repozytorium Git.
źródło
Odpowiedź Mohannda jest doskonała, ale chciałbym podsumować całe rozwiązanie, na wypadek, gdyby ktoś tego potrzebował:
Aby użyć repozytorium github jako repozytorium Openshift, nie ma teraz idealnego rozwiązania, ponieważ Openshfit używa haków git do wyzwalania wdrażania lub ponownego wdrażania na podstawie twoich zatwierdzeń. Jednak najmądrzejszym sposobem byłoby użycie 2 repozytoriów (jednego z openshift i jednego z githuba), aby jednocześnie przekazać kod.
Aby to zrobić: Dodaj pilota o nazwie „all” i dodaj do niego 2 adresy URL typu push.
Następnie ustaw pilota o nazwie „all” jako domyślnego pilota wypychanego:
Aby zatwierdzić i wypchnąć swój kod, postępuj jak zwykle: wypchnie 2 piloty i wdroży na OpenShift
I zobacz wynik:
Mam nadzieję że to pomoże
źródło
Jest sposób na zrobienie tego, co chcesz, tj. Pominięcie repozytorium Openshift. To, co musisz zrobić, to skonfigurować jenkins i poprosić o sondowanie własnego repozytorium.
Tutaj znajduje się link wyjaśniający, jak skonfigurować go od podstaw: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
źródło
Napotkałem problemy podczas wdrażania istniejącego repozytorium kodu w Openshift. W moim konkretnym kontekście, w którym próbowałem wdrożyć aplikację internetową tomcat, kluczowe były pliki konfiguracyjne tomcat Openshift zawarte w folderze .openshift.
To, co mnie naprawiło, to włączenie folderu .openshift do mojego istniejącego drzewa źródłowego, a także włączenie profilu openshift do mojego pliku pom.xml maven.
Jest to najprawdopodobniej to samo, co mogłoby się zdarzyć, gdybyś scalił repozytorium z nową wersją OpenShift. Dla mnie to jest „dlaczego” kryjące się za następującym zdaniem w świetnej odpowiedzi Adietisheim:
„Aby następnie móc przesłać kod z lokalnego repozytorium git do openshift, musisz najpierw scalić repozytorium openshift z lokalnym klonem bitbucket”.
W moim przypadku to scalenie było potrzebne, aby pobrać pliki konfiguracyjne z katalogu .openshift. Zajęło mi to dużo czasu, ponieważ wypychanie bez katalogu .openshift nadal powodowało pomyślne kompilowanie i wdrażanie mojej aplikacji. Jedynym zachowaniem, które widziałem, był raport o brakujących plikach jsp, co sprawiło, że pomyślałem, że problem był związany z moją własną konfiguracją web.xml i serwletu.
źródło
Jeśli korzystasz z github, możesz skonfigurować travis tak, aby wdrażał za każdym razem, gdy wprowadzasz zmiany w repozytorium github
http://docs.travis-ci.com/user/deployment/openshift/
źródło
Jeśli używasz Java, istnieje alternatywne podejście. Ale nawet w tym podejściu nadal używałbyś repozytorium git OpenShift. Repozytorium git dostarczone przez OpenShift to sposób, w jaki udostępniasz OpenShift swój kod, swoje wdrożenia:
Możesz - zamiast przesyłać swój kod do repozytorium git OpenShift - po prostu przekazać mu swój plik wojenny. Klonujesz repozytorium git OpenShift na komputer lokalny. Następnie tworzysz wojnę ze źródła aplikacji i umieszczasz tę wojnę w folderze wdrożeń w repozytorium git OpenShift (klon). Następnie dodajesz, zatwierdzasz i przesyłasz swój lokalny klon do OpenShift. Po pomyślnym wykonaniu push JBoss AS7 wybierze twoją wojnę i wdroży ją.
źródło
SPRÓBUJ SIĘ!
Krok 1: Utwórz aplikację. Twoją ulubioną metodą (z gitRepository, pre-maker Openshift itp.). jeśli używasz metody konsoli
krok 2:
rhc git-clone nameApp
krok 3:
rhc app-configure nameApp --auto-deploy
krok 4: ENJOY!
źródło