受信後フックでGitlabをセットアップする方法は?


19

1つのサーバーでGitlabを使用していますが、masterブランチのコミット時にgitリポジトリを別のWebサーバーにプッシュしたいと思います。そのため、Webサイトの新しいバージョンをプッシュすると、実稼働サーバーが更新されます。私はこれがgitlab内のフックで可能になるはずですが、どのくらい正確に見つけることができません。次のガイドhttp://danielmiessler.com/study/git/#websiteを試してみましたが、gitlabで使用するために書かれていないため、不足している部分があります。

運用Webサーバーで何をする必要があり、フックURLを何に設定しますか?


あなたはgitのサーバーへのrootアクセス権を持っている場合は、ここではフックをコミット後の参照、定期的にgitのフックを使用することができます。git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
DOKA

カスタムGitフックを試すことができます。
monsta 14

回答:


9

gitlabは既に内部でpost-receiveフックを使用しています。あなたはそのスクリプトをいじってフックを呼び出すこともできますが、ドキュメントからは「公式」の方法は「web-hooks」を使用するように見えます。リポジトリをプルします。私はこれを自分で試したことはありませんが、これまで誰も答えていないので、私はあなたをその方向に向けると思いました。

Webフックを有効にするには、プロジェクトのメインページに移動し、右上のメインメニューの下からフックを選択します。(http://yourgitlab.example.net/yourproject/hooks)。そのページからリンクされているサンプルとドキュメントがあります(http://yourgitlab.example.net/help/web_hooks)。

edit://

今朝やってみました。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

最近、カスタムフックが追加されました(Gryphiusが通常のフックは内部的に使用されると言ったため):https : //github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md

custom_hooksGitリポジトリを使用せずにディレクトリを作成し、そこにフックを置くだけで、GitLabはそれらが実行されることを確認します。


4

開発者がgitoliteをgitlab-shellに置き換えたため、Gitlabにはpost-receiveフックがありません。

したがって、次のことができます。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.