Ist es notwendig, Git Repo nur bei OpenShift zu haben? Ich habe bereits Bitbucket / Github Git Repo und würde es vorziehen, nur dort zu pushen. Kann ich mich einfach einhaken, damit OpenShift eine Andeutung bekommt?
Oder zur Vereinfachung drücke ich nur auf Github, aber wenn ich bereitstellen möchte, mache ich etwas mit OpenShift?
Ich habe überprüfen dies aber es verwirrt mich: es spricht Fusion spannend und neu (Openshift) git?
Antworten:
Ich habe den Eindruck, dass Sie noch nicht genug Git verwendet haben. Ich würde Ihnen raten, sich mit Git zu beschäftigen, um zu verstehen, wie Sie Ihren Code auf OpenShift verschieben können. Lassen Sie mich dennoch versuchen, Ihnen die Schritte zu erklären: Wie bei git im Allgemeinen besteht der hier zu wählende Ansatz darin, Ihr anderes Git-Repo (z. B. auf Bitbucket) auf Ihren lokalen Computer zu klonen:
git clone <bitbucket-repo-url>
Ihr lokaler Klon hat dann Ihr anderes Repo (Bitbucket usw.) als Remote-Repo. Ihr Remote-Repo wird mit dem Alias "origin" gespeichert (dem Standard-Alias, der von git beim Klonen verwendet wird). Anschließend fügen Sie das OpenShift-Repo Ihrem Klon als Remote hinzu. Sie tun dies, während Sie explizit einen Alias für das von Ihnen hinzugefügte Remote-Repo verwenden. Ich verwende hier "openshift" als Alias:
git remote add openshift -f <openshift-git-repo-url>
Um dann den Code von Ihrem lokalen Git-Repo zu OpenShift verschieben zu können, müssen Sie zuerst Ihr OpenShift-Repo mit Ihrem lokalen Bitbucket-Klon zusammenführen. Sie tun dies, indem Sie lokal Folgendes ausgeben:
git merge openshift/master -s recursive -X ours
Mit diesem Befehl weisen Sie git an, den Hauptzweig im OpenShift-Git-Repo mit Ihrem lokalen Git-Repo zusammenzuführen. Sie weisen es an, mithilfe der rekursiven Zusammenführungsstrategie zusammenzuführen und bei Konflikten Ihre ("unsere") Version auszuwählen.
Sobald die Zusammenführung ausgeführt ist, können Sie Ihr Git-Repo auf OpenShift stellen. Sie tun dies, indem Sie Folgendes tun:
git push openshift HEAD
Sie weisen git an, Ihren lokalen Code an den HEAD-Zweig auf dem Remote-Repo mit dem Namen "openshift" zu senden (der Alias, unter dem wir das OpenShift-Git-Repo gespeichert haben, einige Absätze weiter oben).
Übrigens. Ich habe vor einigen Monaten einen Blog mit jboss-Tools geschrieben, in dem gezeigt wurde, wie der openshift-java-client verwendet wird: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client . Sie werden die obigen Schritte im letzten Absatz "Wir sind fast da" erkennen.
quelle
--allow-unrelated-histories
da sich der Git-Standard geändert hat, um das Zusammenführen nicht verwandter Historien nicht zuzulassen.Ich weiß, dass die Frage 2 Jahre alt ist und die Antwort von @ adietisheim akzeptiert wurde. Ich persönlich möchte das OpenShift-Repo nicht in meinen lokalen Klon einbinden, da ich das OpenShift-Repo nicht in den Hauptzweig meines öffentlichen Repos mischen möchte.
Angenommen, Sie haben die Fernbedienung mit hinzugefügt
git remote add openshift <openshift-git-repo-url>
, würde ich Folgendes tun:Erstellen Sie einen neuen lokalen Zweig
openshift
basierend auf demmaster
Zweig.Sie können im Commit einige Commits vornehmen,
openshift
z. B. Ihre App-Bereitstellungskonfigurationen. Verschieben Sie dann den aktuellen Zweig mit dem Flag an den Remote-Ref-Matching-Master im OpenShift-Repository-f
, um alles im Remote-master
Zweig zu überschreiben .Wann immer ich meine App für OpenShift bereitstellen möchte, überprüfe ich den lokalen
openshift
Zweig undmaster
füge den Zweig mit ihm zusammen. Dann erzwinge ich einen Push an OpenShift, der jedoch-f
für die nächsten Pushs möglicherweise nicht erforderlich ist:quelle
Führen Sie in Ihrem Projektordner Folgendes aus
Sie können Pushing auf zwei Git-Remote-Ursprünge aus einem Repository und Ändern von Git-Remote-Ursprung lesen .
quelle
git push backup master
ausreichend ist, müssen Sie nicht beide Seiten der Referenz angeben.git push -u all
to 'all' für die Standardfernbedienung ausführen. Dabeigit push
wird das anschließend auf die 2 Repos geschoben!Ich stimme der Antwort von @ adietisheim zu: Sie müssen git besser verstehen, bevor Sie mit openshift bereitstellen =)
Selbst wenn Sie git verstehen, ist es nicht unbedingt offensichtlich, wie Sie Ihr vorhandenes Repo bereitstellen, wenn Ihre Verzeichnisstruktur nicht mit der für openshift erforderlichen Verzeichnisstruktur übereinstimmt und Sie Ihre alte Verzeichnisstruktur beibehalten möchten.
Dafür habe ich folgende Tipps:
separate Optionen, die von der Bereitstellung abhängig sind, von denen, die sich nicht in verschiedenen Dateien befinden. Zum Beispiel trenne ich meine Datenbankeinstellungen von anderen Einstellungen in verschiedene Dateien wie folgt:
settings_deploy / openshift
settings_deploy / localhost
und dann Symlink zu Ihrem Localhost-Test als etwas wie:
Eine weitere Option besteht darin, den Host mithilfe von Umgebungsvariablen zu erkennen:
Dies ist etwas einfacher, da Sie alle Konfigurationen in einer einzigen Datei speichern können. Es ist etwas weniger allgemein, da
OPENSHIFT_APP_NAME
die Methode unterbrochen wird , wenn jemals ein anderer Ihrer Hosts eine Umgebungsvariable anbietet (für diese unwahrscheinlich). Wie auch immer, Sie müssen immer noch klar trennen, was von der Bereitstellung abhängt und was nicht.Erstellen Sie ein lokales Bereitstellungsverzeichnis
Klonen Sie die anfängliche OpenShift-Vorlage hinein
Erstellen Sie ein Bereitstellungsskript, das:
verknüpft alles von Ihrem alten vorhandenen lokalen zu den richtigen Standorten an der
Hardlinks lassen sich schnell erstellen und verwenden nur sehr wenig Speicher
Sie könnten etwas wie verwenden:
cp -lrf original_repo_dir deploy_repo_dir
Behalten Sie nur die richtige
settings_deploy
Datei im Bereitstellungs-Repo:cd deploy_repo
mv settings_deploy/openshift settings_deploy_file
rm -r settings_deploy
Kraftstoß:
cd deploy_repo
git push -f origin master
Bereinigen Sie das Bereitstellungs-Repo:
git reset --hard HEAD
git clean -df
Für diejenigen, die an einer Django-Bereitstellung interessiert sind, habe ich ein Beispiel auf meinem Github , insbesondere das
deploy.sh
Skript und das Projekt,projects/elearn
das es bereitstellt.quelle
Sie sollten in der Lage sein, ein vorhandenes Git-Repository über in die Asset-Pipeline zu übergeben
Das entfernte Git-Repository liefert dann die erste Anwendung für OpenShift.
Als zweite Möglichkeit können Sie die Erstellung des lokalen OpenSHift Git-Repositorys über überspringen
Führen Sie dann die oben beschriebenen Schritte aus, um das OpenShift-Remote-Git-Repository mit Ihrem lokalen Git-Repository zusammenzuführen.
quelle
Mohannds Antwort ist perfekt, aber ich möchte die vollständige Lösung zusammenfassen, falls andere sie benötigen:
Um Ihr Github-Repo als Openshift-Repo zu verwenden, gibt es derzeit keine perfekte Lösung, da Openshfit Git-Hooks verwendet, um die Bereitstellung oder erneute Bereitstellung basierend auf Ihren Commits auszulösen. Am klügsten wäre es jedoch, zwei Repos (das OpenShift-Repos und das Github-Repos) zu verwenden, um den Code gleichzeitig an zu senden.
Gehen Sie dazu folgendermaßen vor: Fügen Sie eine Fernbedienung mit dem Namen "all" hinzu und fügen Sie 2 Push-URLs hinzu.
Stellen Sie dann die Fernbedienung mit dem Namen "all" als Standard-Push-Fernbedienung ein:
Um Ihren Code festzuschreiben und zu pushen, gehen Sie wie gewohnt vor: Die 2 Fernbedienungen werden gepusht und unter OpenShift bereitgestellt
Und sehen Sie sich das Ergebnis an:
Hoffe das hilft
quelle
Es gibt eine Möglichkeit, das zu tun, was Sie wollen, dh das Repo von Openshift zu überspringen. Was Sie tun müssen, ist, ein Jenkins einzurichten und es Ihr eigenes Repository abfragen zu lassen.
Hier finden Sie einen Link, der erklärt, wie Sie es von Grund auf neu einrichten: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
quelle
Ich hatte Probleme beim Bereitstellen eines bereits vorhandenen Code-Repositorys für Openshift. In meinem speziellen Kontext, in dem ich versucht habe, eine Tomcat-Webanwendung bereitzustellen, waren die im Ordner .openshift enthaltenen Openshift-Tomcat-Konfigurationsdateien von entscheidender Bedeutung.
Was es für mich behoben hat, war die Aufnahme des .openshift-Ordners in meinen vorhandenen Quellbaum sowie die Aufnahme des openshift-Profils in meine maven pom.xml-Datei.
Dies ist höchstwahrscheinlich dasselbe, was passieren würde, wenn Sie Ihr Repository mit dem neuen OpenShift-Upstream zusammenführen. Für mich ist dies das "Warum" hinter dem folgenden Satz in Adietisheims großartiger Antwort:
"Um dann den Code von Ihrem lokalen Git-Repo zu OpenShift verschieben zu können, müssen Sie zuerst Ihr OpenShift-Repo mit Ihrem lokalen Bitbucket-Klon zusammenführen."
In meinem Fall war diese Zusammenführung erforderlich, um die Konfigurationsdateien aus dem Verzeichnis .openshift abzurufen. Es hat lange gedauert, bis ich es herausgefunden habe, da das Drücken ohne das Verzeichnis .openshift meine App immer noch erfolgreich erstellt und bereitgestellt hat. Das einzige Verhalten, das ich sah, war ein Bericht über fehlende JSP-Dateien, der mich glauben ließ, dass das Problem mit meiner eigenen web.xml- und Servlet-Konfiguration zusammenhängt.
quelle
Wenn Sie Github verwenden, können Sie Travis so konfigurieren, dass die Bereitstellung jedes Mal erfolgt, wenn Sie eine Änderung in Ihrem Github-Repository vornehmen
http://docs.travis-ci.com/user/deployment/openshift/
quelle
Wenn Sie Java verwenden, gibt es einen alternativen Ansatz. Aber auch bei diesem Ansatz würden Sie das OpenShift-Git-Repository verwenden. Mit dem von OpenShift bereitgestellten Git-Repository geben Sie OpenShift Ihren Code und Ihre bereitstellbaren Dateien:
Sie können - anstatt Ihren Code in das OpenShift-Git-Repo zu übertragen - einfach Ihre War-Datei angeben. Sie klonen das OpenShift-Git-Repo auf Ihren lokalen Computer. Anschließend erstellen Sie einen Krieg aus Ihrer Anwendungsquelle und legen diesen Krieg im Bereitstellungsordner Ihres OpenShift-Git-Repos (Klons) ab. Anschließend fügen Sie Ihren lokalen Klon zu OpenShift hinzu, schreiben ihn fest und übertragen ihn. Sobald der Push erfolgreich ausgeführt wurde, wählt der JBoss AS7 Ihren Krieg aus und setzt ihn ein.
quelle
EINFACH NEHMEN!
Schritt 1: App erstellen. Mit Ihrer Lieblingsmethode (von gitRepository, Pre-Maker Openshift usw.). Wenn Sie die Konsolenmetod-Methode verwenden
Schritt 2:
rhc git-clone nameApp
Schritt 3:
rhc app-configure nameApp --auto-deploy
Schritt 4: GENIESSEN!
quelle