2017-06-22 11 views
0

私はbitbucketを使用してプロジェクトを保存しています。今問題は、プロジェクトが非常に大きく、more then 20k filesが入っていることです。私のサーバーはFTP connectionなので、サーバーに完全なプロジェクトコードをコピー&ペーストすることはできません。だから私は私のコードを私のプロダクションサーバにbitbucketから直接配備したいと思う。生産サーバにビットバケットコードを直接デプロイ

私はbitbucketサーバーに接続してgit pullを作ることができますが、私は実際にautomateに何かを見つけたいと思っています。このプロセスを自動化するためにそのための

...私は簡単かつ迅速に解決策を探していますが、私はビットバケットのために何かを見つけることができませんでした、すべてのソリューションはgithubのために設計されているように見える

どれserviceまたはtool

答えて

1

私は従う傾向と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ファイルでなければなりません。

1

Laravel forgeはgitからproductionにコードをデプロイするのに最適です。また、サーバーの構成とサーバーの設定を提供します。

関連する問題