私は従う傾向とadapt this Turotial
これは、ビットバケットを使用して動作しますが、
1に注意することは、物事のカップルをウェブフックこれを行うには、いくつかの方法があります)Gitのセキュリティを作成するユーザーばかですrepoはそれに影響を与えることができる唯一の人なので、Apacheのユーザまたはグループ(Ubuntu Server www-data:www-dataの場合)にgit repoを使用する能力があることを確認する必要があります/チェックアウト/コミットする必要があることを意味します)
2)あなたのWebサーバーがオンになっている必要がありますあなたのウェブフックの受信ファイルは、あなたのサイトを正し過ぎるでしょう。あなたが.htpasswd setupでこれを行うことができることを確かめてください。あなたがのBitbucketにで.htpasswdの設定を使用する場合は、セットアップあなたのウェブフックは、あなたは、URL内でそれらを使用することができたときにEG
http://<username>:<passwd>@yourdomain.com/path/to/deployment.php
しかし、のようなものになりますあなたのウェブフックのPHPファイル:
<?php
$repo_dir = '/home/<username>/<repo-name>.git';
$web_root_dir = '/home/<username>/www';
// Full path to git binary is required if git is not in your PHP user's path. Otherwise just use 'git'.
$git_bin_path = 'git';
$update = false;
// Parse data from Bitbucket hook payload
$payload = json_decode($_POST['payload']);
if (empty($payload->commits)){
// When merging and pushing to bitbucket, the commits array will be empty.
// In this case there is no way to know what branch was pushed to, so we will do an update.
$update = true;
} else {
foreach ($payload->commits as $commit) {
$branch = $commit->branch;
if ($branch === 'production' || isset($commit->branches) && in_array('production', $commit->branches)) {
$update = true;
break;
}
}
}
if ($update) {
// Do a git checkout to the web root
exec('cd ' . $repo_dir . ' && ' . $git_bin_path . ' fetch');
exec('cd ' . $repo_dir . ' && GIT_WORK_TREE=' . $web_root_dir . ' ' . $git_bin_path . ' checkout -f');
// Log the deployment
$commit_hash = shell_exec('cd ' . $repo_dir . ' && ' . $git_bin_path . ' rev-parse --short HEAD');
file_put_contents('deploy.log', date('m/d/Y h:i:s a') . " Deployed branch: " . $branch . " Commit: " . $commit_hash . "\n", FILE_APPEND);
}
?>
は、公共の場でそれを確認してくださいhtmlディレクトリにあり、Larvelによって読み込まれていないので、rawアクセスphpファイルでなければなりません。