Git Webhook自動導入プロジェクト
なぜWebhookを使うのですか?テスト服にコードを自動的に引き出したいだけで、構築、テストを必要とせず、簡単でいいです.
ネット上のWebhookコードを探してみると、phpもshellも使っていて、複雑すぎて、自分で勉強が浅くて分からないので、自分で簡単なことを書いて、使えばいいと思っています.
コード#コード#
ダイレクトコード
使用方法
Webhookを単独で1つのプロジェクトとして、パラメータによって異なるプロジェクト、ブランチ、ラベルを引くことができます. webhook-devプロジェクト他のプロジェクトと同級ディレクトリ 引き抜き項目とブランチを指定します.queryパラメータは次のとおりです. プロジェクト名 branchブランチまたはラベル、デフォルトdev
nginxによって単独でwebhook-devにドメイン名またはipポートを配置し、eg:webhook.vm.com.プロジェクト(ディレクトリ名)がhello、ブランチがdevの場合、リンクは
特に権限の問題に注意する、webアクセスのユーザとユーザグループがwwwであるため、必ずwwwユーザが引き寄せる項目を持っていることを確保しなければならない.gitディレクトリの権限.
postmanアクセスリンクにより、Headersには
次にgitlabプロジェクトの下
コードをローカルにコミットしてみると、Webhookを通じて自動的にテスト服が引き出されていることがわかります.
PS
gitアドレスHttpsを使用するとパスワードの入力が要求され、以下のコードが実行されます.その後、手動でテスト服を引き出し、パスワードを入力すると記録されます.あとは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つのプロジェクトとして、パラメータによって異なるプロジェクト、ブランチ、ラベルを引くことができます.
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