Wie machst du ein automatisches git pull auf dem remote-server?
Bevor ich beginne, ich weiß es sind viele Fragen ähnlich wie diese, aber ich bin wirklich Schwierigkeiten haben, eine übersichtliche, sichere, best-practice, da das feedback auf Ihnen wurde so weit variiert.
Was ich machen möchte:
1) die Komplette Arbeit auf meiner lokalen Maschine auf einem Zweig.
2) Drücken Sie die änderungen von git. Git Beiträge zu einem webhook URL und automatisch hat meine remote-server ziehen die Veränderungen, die auf eine Entwicklung vor Ort.
3) nach QA würde und bestätigt zu werden, richtigen auf die Entwicklung vor Ort, schieben Sie den master-Zweig auf den Produktions-Standort (auf dem gleichen server wie die Entwicklung vor Ort).
Wo bin ich bei:
Ich habe git installiert auf meinem lokalen Rechner und dem remote-server. Ich kann push-mods für die Entwicklung Zweig zu git. Auf dem remote-server, kann ich ziehen Sie die updates, und es funktioniert wie ein Charme. Das problem ist, dass ich nicht bekommen kann die remote-server, um automatisch zu aktualisieren, wenn änderungen von meiner lokalen Maschine.
Meine Fragen sind:
1) Für die remote-server-Entwicklung, Website-Verzeichnis, sollte ich git init "oder" git init --bare? Ich Plane nicht, auf dass Aktualisierungen auf dem server selbst. Ich möchte meine dev-team vor Ort zu arbeiten und push-mods auf den server. Ich glaube, ich brauche zu verwenden, git init die als Arbeits-Baum ist notwendig, um set-up eine remote-alias, um das git-repository, aber ich wollte bestätigen.
2) ich bin ziemlich sicher, dass die webhook post aus dem git Problem wird durch user-Privilegien. Wie kann ich sicher dies zu umgehen? Ich habe gelesen, dass viele tutorials, die nahelegen, dass die Aktualisierung von git-hook-Dateien, aber ich das Gefühl, dass ist krasser einer Maßnahme, als ich brauche, um zu nehmen. Ich würde lieben im Stande zu sein, haben die webhook Treffer eine URL, die sicher zieht die Dateien ohne eine Schiffsladung von code (wenn es möglich ist).
Ich bin ein web-Entwickler durch die Natur, also git und sysadmin-Aufgaben sind in der Regel der Fluch meiner Existenz. Wieder, ich weiß, diese Frage ist ähnlich wie andere, aber ich habe noch zu finden, eine umfassende, präzise, sichere, und die meisten logischen Ansatz zur Lösung des Problems. Ich bin über 16 Stunden in und haben offiziel die "going in circles mit keine Fortschritte" zeigen.
Vielen Dank im Voraus für Ihre Hilfe!
- Wow, ist es irgendwie unmöglich ist, die einfache Lösungen. Macht mich miss SVN ein wenig...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies ganz einfach tun, mit GitHub service hooks.
Sie ll müssen erstellen Sie eine weitere Datei, die mit der Durchführung der git pull. Fügen Sie eine neue Datei namens github.php (oder alles, was Sie möchten ), und fügen Sie hinzu:
Speichern Sie die Datei und laden Sie diese in das repository-Verzeichnis auf Ihrem server. Dann gehen Sie zu
Services Hooks -> Post-Receive URL
und kopieren Sie die URL zu dieser Datei, und fügen Sie es in die "Post-Receive "URL" E. g.http://demo.test.com/myfolder/github.php
So, wenn Sie drücken, GitHub wird automatisch besuchen Sie diese URL, so dass Sie Ihren server zum ausführen einer
git pull
.Sehen dies in mehr details zu gehen, um dieses tutorial
secret
zum Beispiel github:https://developer.github.com/webhooks/creating/#secret
. Alles, was Sie tun müssen, ist überprüfen Sie den Header.Ich hatte exakt das gleiche Problem, stark in der code und die Entwicklung von Fähigkeiten, schwach im sysadmin-skills. Als ich endlich bereit war, push-code, den ich Fragen musste, eine GitHub rep, was Ihre vorgeschlagene Methode war, und Sie antwortete mit Capistrano. Es ist ein Ruby - Anwendung, die Befehle ausgeführt werden (z.B. git pull) auf remote-Servern, zusammen mit so ziemlich jedem anderen Befehl, den Sie sich vorstellen können.
Hier ein paar Artikel, die Sie Lesen können, um mehr Infos zu bekommen:
GitHub - Deploy mit Capistrano
Wie kompilieren Sie die Capistrano-stack auf deinem *nix-system
Ein weiteres Beispiel für das bereitstellen von code mit Capistrano
Nicht liegen, die Lernkurve war ziemlich steil, aber sobald Sie beginnen, mit Capistrano, Sie werden sehen, dass es funktioniert gut für pushing-code. Ich entwickle meine Anwendungen im Symfony und ich habe meine Capistrano set-up zu ziehen-code, clear cache und clear log-Dateien, alle in einem einzigen Befehl von meiner lokalen Maschine.