Gitlab alım sonrası kancasıyla nasıl kurulur?


19

Bir sunucuda Gitlab kullanıyorum ve ana şubenin başka bir web sunucusuna gönderilmesinde git veri havuzumu itmek istiyorum. Bu yüzden web sitesinin yeni bir versiyonunu bastığımda üretim sunucusu güncelleniyor. Bunun gitlab içindeki kancalarla mümkün olması gerektiğini biliyorum ama tam olarak ne olduğunu bulamıyorum. Aşağıdaki kılavuzu http://danielmiessler.com/study/git/#website denedim ama gitlab ile kullanım için yazılmamış, bu yüzden eksik parçalar var.

Üretim web sunucusunda ne yapmam gerekiyor ve kanca URL'sini o zaman ne olarak ayarlayabilirim?


git sunucusuna kök erişiminiz varsa normal git kancalarını kullanabilirsiniz, sonradan işleme sonrası kancaya bakın: git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Doka

Özel Git kancalarını deneyebilirsiniz .
monsta

Yanıtlar:


9

gitlab zaten alma sonrası kancasını dahili olarak kullanıyor. bu komut dosyasıyla uğraşabilir ve kancanızı da çağırabilirsiniz, ancak dokümanlardan "resmi" yol "web kancaları" kullanmak gibi görünüyor, yani gitlab post-web ve web sunucunuzda web sunucunuzu arasın. veri havuzunu çeker. Bunu kendim denemedim, ama şimdiye kadar kimse cevap vermediği için seni bu yönde göstereceğimi düşündüm:

web kancalarını etkinleştirmek için projenizin ana sayfasına gidin ve sağ üst kısımdan ana menünün altındaki kancaları seçin. ( http://yourgitlab.example.net/ projeniz / kancalar ). bu sayfadan bağlanan bir örnek ve dokümanlar var ( http://yourgitlab.example.net/help/web_hooks ).

Düzenle://

Bu sabah denedim. İşte bir php script örneği. Repoyu zaten klonladığınızı ve web sunucusunun gerekli tüm izinleri / ssh anahtarlarını ayarladığını varsayar.

<?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);
} 

evet Kancalar sayfasını nerede bulacağımı biliyorum. Ben sadece dosya gitlab göndermek için nasıl görünmesi gerektiğini bilmiyorum.
Tristan

1
düzenlenen cevaba bakınız, örnek bir betik ekledim. mükemmel olmayabilir ama en azından hızlı bir test çalışıyor gibi görünüyor
Gryphius


4

Geliştiriciler gitolitin gitlab-shell ile değiştirilmesinden dolayı Gitlab'ın alım sonrası kancası yok .

Bu nedenle şunları yapabilirsiniz:

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 kullanıcısının bu dosyadaki komutları çalıştırmak için gereken tüm izinlere sahip olduğundan emin olun


hookklasörü zaten var:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
MariuszS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.