Używam Gitlab na jednym serwerze i chciałbym wypchnąć moje repozytorium git przy zatwierdzaniu gałęzi master na inny serwer WWW. Kiedy więc pcham nową wersję strony, serwer produkcyjny zostaje zaktualizowany. Wiem, że powinno to być możliwe z hakami w gitlabie, ale nie jestem w stanie dokładnie ustalić, jak to dokładnie jest. Wypróbowałem następujący przewodnik http://danielmiessler.com/study/git/#website, ale nie jest napisany do użytku z gitlab, więc brakuje mi części.
Co muszę zrobić na produkcyjnym serwerze internetowym i do czego wtedy ustawić adres URL przechwytującego?
Odpowiedzi:
gitlab używa już wewnętrznego haka po odbiorze. możesz również bawić się tym skryptem i wywoływać hak, ale z dokumentów wynika, że „oficjalnym” sposobem byłoby użycie „haków internetowych”, tzn. pozwól gitlab wywoływać twój serwer po otrzymaniu, a następnie twój serwer ściąga repozytorium. Sam tego nie próbowałem, ale ponieważ nikt do tej pory nie odpowiedział, pomyślałem, że skieruję cię w tym kierunku:
aby włączyć haki internetowe, przejdź na stronę główną projektu i wybierz haki z prawego górnego rogu, poniżej menu głównego. ( http://yourgitlab.example.net/yourproject/hooks ). istnieje przykład i dokumenty połączone z tej strony ( http://yourgitlab.example.net/help/web_hooks ).
edytować://
Próbowałem tego dziś rano. Oto przykład skryptu php. Zakłada się, że już sklonowałeś repozytorium, a serwer WWW ma skonfigurowane wszystkie niezbędne uprawnienia / klucze ssh.
źródło
Ostatnio dodano niestandardowe haki (ponieważ, jak powiedział Gryphius, standardowe haki są używane wewnętrznie): https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md
Po prostu tworzysz
custom_hooks
katalog w gołym repozytorium Git i umieszczasz w nim haki, a następnie GitLab upewnia się, że się uruchomią.źródło
Gitlab nie ma haka po otrzymaniu, ponieważ twórcy zastąpili gitolite powłoką gitlab .
Dlatego możesz:
Upewnij się, że użytkownik git ma wszystkie uprawnienia potrzebne do uruchamiania poleceń w tym pliku
źródło
hook
folder już istnieje:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/