Ich verwende Gitlab auf einem Server und möchte mein Git-Repository beim Festschreiben des Master-Zweigs auf einen anderen Webserver übertragen. Wenn ich also eine neue Version der Website pushe, wird der Produktionsserver aktualisiert. Ich weiß, dass dies mit Hooks in Gitlab möglich sein sollte, aber ich kann nicht genau herausfinden, wie. Versuchte die folgende Anleitung http://danielmiessler.com/study/git/#website, aber es ist nicht für die Verwendung mit Gitlab geschrieben, so dass ich Teile vermisse.
Was muss ich auf dem Produktions-Webserver tun und auf was stelle ich dann die Hook-URL ein?
Antworten:
gitlab verwendet den Post-Receive-Hook bereits intern. Sie könnten mit diesem Skript herumspielen und Ihren Hook auch aufrufen, aber in den Dokumenten sieht es so aus, als ob der "offizielle" Weg darin bestünde, "Web-Hooks" zu verwenden, dh gitlab ruft Ihren Webserver nach dem Empfang auf und Ihren Webserver dann zieht das Repository. Ich habe das selbst nicht ausprobiert, aber da bisher noch niemand geantwortet hat, dachte ich, ich würde Sie in diese Richtung weisen:
Um Web-Hooks zu aktivieren, rufen Sie die Hauptseite Ihres Projekts auf und wählen Sie oben rechts unter dem Hauptmenü Hooks aus. ( http://yourgitlab.example.net/yourproject/hooks ). Auf dieser Seite befindet sich ein Beispiel und Dokumente ( http://yourgitlab.example.net/help/web_hooks ).
bearbeiten://
Ich habe es heute Morgen versucht. Hier ist ein PHP-Skript-Beispiel. Es wird davon ausgegangen, dass Sie das Repo bereits geklont haben und der Webserver alle erforderlichen Berechtigungen / SSH-Schlüssel eingerichtet hat.
quelle
Kürzlich wurden benutzerdefinierte Hooks hinzugefügt (wie Gryphius sagte, werden die regulären Hooks intern verwendet): https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md
Sie erstellen einfach ein
custom_hooks
Verzeichnis in Ihrem nackten Git-Repo und setzen die Hooks hinein, und dann stellt GitLab sicher, dass sie ausgeführt werden.quelle
Gitlab hat keinen Post-Receive-Hook, da die Entwickler Gitolite durch Gitlab-Shell ersetzt haben .
Deshalb können Sie:
Stellen Sie sicher, dass der Benutzer git über alle Berechtigungen verfügt, die zum Ausführen der Befehle in dieser Datei erforderlich sind
quelle
hook
Ordner bereits vorhanden:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/