Я использую BitBucket для моего проекта Django и EC2 для облачных серверов. Моя цель состоит в том, что когда я нажимаю фиксацию на ветку, BitBucket будет звонить на крючок, и крючок обновит код в EC2.
Пока что, когда я совершаю транзакцию, вызывается hook, но код не обновляется на сервере. В моем понимании, это связано с разрешениями в Linux/Ubuntu 14.04.
Я попытался следовать ссылке Брэндона Саммерса и уточнить ее, перейдя сюда. Но это все еще не работает.
С первой ссылкой я получаю это в журнале:
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.
Что мне здесь не хватает?
Во-первых, я думаю, вам не хватает каталога deploy
в var/log
. Попробуйте создать его вручную. Таким образом, по крайней мере, у вас будет несколько файлов журналов для анализа.
Во-вторых, здесь вы не указали свой скрипт, но стоит упомянуть, что этот скрипт использует старый Bitbucket IP; если вы еще не изменили его, попробуйте заменить IP в этой строке,
private $_repositoryIp = array ( '63.246.22.222');
с одним из новых IP-адресов, которые вы можете найти здесь.
В-третьих, почему все усилия, когда вы можете использовать инструменты CI, такие как Дженкинс? Некоторые полезные посты: 1, 2.
deploy
и постоянно получал сообщение об ошибке «permission denied
доступе». Итак, для целей тестирования я установил значение777
и это то, что вошло в файл:exception 'Exception' with message 'Error 1 executing shell script' in /var/www/html/deploy_repo.php:173 Stack trace: #0 /var/www/html/deploy_repo.php(205): Deploy->execute() #1 {main}
exec("sudo -u {$this->_deployUser} {$this->_deployScript} 2>&1", $output, $return);
:exec("sudo -u {$this->_deployUser} {$this->_deployScript} 2>&1", $output, $return);
- Я думаю, что это из-за проблем с разрешениями; Вы уверены, что добавили пользователяdeploy
в свои sudoers? Если нет, пожалуйста, следуйте этим рекомендациям в верхней части скрипта и убедитесь, что вы все сделали правильно.