Git Webhook自動導入プロジェクト


なぜWebhookを使うのですか?テスト服にコードを自動的に引き出したいだけで、構築、テストを必要とせず、簡単でいいです.
ネット上のWebhookコードを探してみると、phpもshellも使っていて、複雑すぎて、自分で勉強が浅くて分からないので、自分で簡単なことを書いて、使えばいいと思っています.
コード#コード#
ダイレクトコード
// webhook-dev/index.php

$token = 'XXX'; //   

if (isset($_SERVER['HTTP_X_GITLAB_TOKEN']) && $_SERVER['HTTP_X_GITLAB_TOKEN'] != $token){
    die('token    ');
}

parse_str($_SERVER['QUERY_STRING'], $query);
if (!isset($query['project'])){
    die('     ');
}

$branch = isset($query['branch']) ? $query['branch'] : 'dev';
$command = "cd ../{$query['project']} && git pull origin {$branch}";

echo shell_exec($command);

使用方法
Webhookを単独で1つのプロジェクトとして、パラメータによって異なるプロジェクト、ブランチ、ラベルを引くことができます.
  • webhook-devプロジェクト他のプロジェクトと同級ディレクトリ
  • 引き抜き項目とブランチを指定します.queryパラメータは次のとおりです.
  • プロジェクト名
  • branchブランチまたはラベル、デフォルトdev

  • nginxによって単独でwebhook-devにドメイン名またはipポートを配置し、eg:webhook.vm.com.プロジェクト(ディレクトリ名)がhello、ブランチがdevの場合、リンクは
    http(s)://webhook.vm.com?project=project1&branch=dev

    特に権限の問題に注意する、webアクセスのユーザとユーザグループがwwwであるため、必ずwwwユーザが引き寄せる項目を持っていることを確保しなければならない.gitディレクトリの権限.
    postmanアクセスリンクにより、HeadersにはX-Gitlab-Tokenが独自の鍵として設定され、コードと一致している.次のようなgit情報が表示されると、デプロイに成功したとみなされます.
    Updating abc123..abc123
    Fast-forward
     README.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)

    次にgitlabプロジェクトの下Settings->Integrationsページに入り、さっき得たリンクをURLボックスに記入し、Secret Tokenを自分の鍵に記入します.
    コードをローカルにコミットしてみると、Webhookを通じて自動的にテスト服が引き出されていることがわかります.
    PS
    gitアドレスHttpsを使用するとパスワードの入力が要求され、以下のコードが実行されます.その後、手動でテスト服を引き出し、パスワードを入力すると記録されます.あとはWebhookで自動的に引くことができます.
    git config --global credential.helper store