Як налаштувати Gitlab за допомогою гачка після отримання?


19

Я використовую Gitlab на одному сервері і хотів би перенести свій репозиторій git на фіксацію головного відділення на інший веб-сервер. Тому коли я натискаю нову версію веб-сайту, сервер виробництва оновлюється. Я знаю, що це має бути можливо гачками всередині gitlab, але я не можу знайти, як саме. Спробував наступний посібник http://danielmiessler.com/study/git/#website, але він не написаний для використання з gitlab, тому мені відсутні частини.

Що мені потрібно зробити на виробничому веб-сервері і для чого мені потім встановити URL-адресу гака?


ви можете використовувати звичайні гачки git, якщо у вас є кореневий доступ до сервера git, див. гачок після фіксації тут: git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Doka

Ви можете спробувати гачки на замовлення Git .
Монста

Відповіді:


9

gitlab вже використовує гачок після отримання. Ви можете пограбувати з цим сценарієм і зателефонувати на гачок, але з документів це виглядає так, що "офіційним" способом було б використання "веб-гачків", тобто нехай gitlab зателефонує своєму веб-серверу після отримання, а ваш веб-сервер потім тягне сховище. Я сам цього не пробував, але оскільки ніхто до цього часу не відповів, я думав, що я вкажу тебе в цьому напрямку:

щоб увімкнути веб-гачки, перейдіть на головну сторінку вашого проекту та виберіть гачки вгорі праворуч, під головним меню. ( http://yourgitlab.example.net/yourproject/hooks ). є приклад та документи, пов’язані із цієї сторінки ( http://yourgitlab.example.net/help/web_hooks ).

редагувати: //

Я спробував це сьогодні вранці. Ось приклад сценарію php. Це передбачає, що ви вже клонували репо і веб-сервер має всі необхідні дозволи / ssh ключі.

<?php
$mirrordir='/srv/http/gitlabhooktest/gitmirror';
$gitdir=$mirrordir."/.git";

$json= file_get_contents('php://input');
#error_log($json);
$jsarr=json_decode($json,true);
#error_log(print_r($jsarr,true));
$branch=$jsarr["ref"];
if($branch=='refs/heads/master'){
 $cmd="git --work-tree=$mirrordir --git-dir=$gitdir pull";
 #error_log($cmd);
 exec($cmd);
} 

так, я знаю, де знайти сторінку з гачками. Я просто не знаю, як повинен виглядати файл, як повинен розміщуватися gitlab.
Трістан

1
див. відредаговану відповідь, я додав приклад сценарію. може не бути ідеальним, але принаймні швидкий тест, здається, спрацює
Грифій

5

Нещодавно додані спеціальні гачки (оскільки, як сказав Грифіус, звичайні гачки використовуються всередині): https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md

Ви просто створіть custom_hooksкаталог у вашому голому Git repo і покладіть в нього гачки, і тоді GitLab гарантує, що вони запустяться.


4

У Gitlab немає гачка після отримання, оскільки розробники замінили гітоліт на gitlab-shell .

Тому ви можете:

sudo -u git bash
touch /home/git/repositories/<repository name>.git/hooks/post-receive
vim /home/git/repositories/<repository name>.git/hooks/post-receive

Переконайтеся, що користувач git має всі дозволи, необхідні для запуску команд у цьому файлі


hookпапка вже існує:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
MariuszS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.