将代码从Bitbucket部署到EC2


Deploy code from Bitbucket to EC2

我使用BitBucket为我的Django项目和EC2云服务器。我的目标是,当我向分支推送提交时,BitBucket将对钩子进行调用,钩子将更新EC2中的代码。

到目前为止,当我提交时,钩子被调用,但代码没有在服务器上更新。在我的理解中,这与Linux/Ubuntu 14.04中的权限有关。

我试着跟随Brandon Summers的链接,并在这里进一步完善。但它仍然不起作用。

对于第一个链接,我在日志中得到这个:

fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
chmod: cannot access '.git': No such file or directory
[Thu Jul 30 18:21:05.106127 2015] [:error] [pid 9736] [client 131.103.20.165:42727] PHP Notice:  Undefined property: Deploy::$_data in /var/www/html/deploy_home.php on line 127

第二个链接在控制台给了我这个:

[Sat Aug 01 15:26:35.000824 2015] [:error] [pid 2447] [client 131.103.20.165:39102] PHP Warning:  file_put_contents(/var/log/deploy/deployments.log): failed to open stream: No such file or directory in /var/www/html/deploy_repo.php on line 144
[Sat Aug 01 15:26:35.000869 2015] [:error] [pid 2447] [client 131.103.20.165:39102] PHP Warning:  chmod(): No such file or directory in /var/www/html/deploy_repo.php on line 147
[Sat Aug 01 15:26:35.000924 2015] [:error] [pid 2447] [client 131.103.20.165:39102] PHP Warning:  file_put_contents(/var/log/deploy/deployments.log): failed to open stream: No such file or directory in /var/www/html/deploy_repo.php on line 152
[Sat Aug 01 15:26:35.001010 2015] [:error] [pid 2447] [client 131.103.20.165:39102] PHP Warning:  file_put_contents(/var/log/deploy/deployments.log): failed to open stream: No such file or directory in /var/www/html/deploy_repo.php on line 144
[Sat Aug 01 15:26:35.001034 2015] [:error] [pid 2447] [client 131.103.20.165:39102] PHP Warning:  chmod(): No such file or directory in /var/www/html/deploy_repo.php on line 147
[Sat Aug 01 15:26:35.001068 2015] [:error] [pid 2447] [client 131.103.20.165:39102] PHP Warning:  file_put_contents(/var/log/deploy/deployments.log): failed to open stream: No such file or directory in /var/www/html/deploy_repo.php on line 152
sh: 1: /usr/sbin/sendmail: not found

第二个链接的控制台输出与无法写入日志文件有关,但在EC2上repo文件夹仍然保持不变。

我在这里错过了什么?

首先,我猜您在var/log中缺少deploy目录。尝试手动创建它。通过这种方式,至少您将有一些日志文件可以分析。

第二,你没有在这里展示你的脚本,但值得一提的是,这个脚本使用的是旧的Bitbucket IP;如果您还没有更改,请尝试替换这一行中的IP,

 private $_repositoryIp = array ( '63.246.22.222');

,你可以在这里找到一个新的IP地址。

第三,当您可以使用像Jenkins这样的CI工具时,为什么要付出所有的努力?一些有用的帖子:1、2.