我的程式碼託管在開源中國得Git庫裡,想使用Git鉤子來實現程式的部署,寫了一個程式接受鉤子的post的數據,但是不能實現程式的部署。 。程式碼如下:
public function index(){
$logger = new KLogger(LOG_PATH.'KLogger');
$web_root_dir = APP_PATH; // /var/www/site
if(IS_POST){
$payload = $_POST;
$payload = json_decode($payload['hook']);
$logger->info('data from git post...', $payload);
// if (!empty($payload['password'])){
$command = "cd {$web_root_dir} && git pull";
$logger->info('enter if .....');
$result = exec($command);
$logger->info('command execute result...'.$result);
// }
}
}
在程式裡記錄了日誌,能接收到post數據,但指令執行不成功,以下是log的內容:
[2015-05-05 2:07:34.114928] [INFO] data from git post...
password: '123456'
push_data: stdClass::__set_state(array(
'before' => '7a563d4498371a8572a88ff22fb726ac7f8dd467',
'after' => 'f24b208ddb520b1349fca6a5a0295db516b3982b',
'ref' => 'refs/heads/master',
'user_id' => 120469,
'user_name' => '',
'repository' => stdClass::__set_state(array(
'name' => '',
'url' => '',
'description' => '',
'homepage' => '',
)),
'commits' => array(
0 => stdClass::__set_state(array(
'id' => 'f24b208ddb520b1349fca6a5a0295db516b3982b',
'message' => 'a',
'timestamp' => '2015-05-05T02:07:35+08:00',
'url' => 'http://git.oschina.net/commit/f24b208ddb520b1349fca6a5a0295db516b3982b',
'author' => stdClass::__set_state(array(
'name' => '',
'email' => '',
)),
)),
),
'total_commits_count' => 1,
))
[2015-05-05 2:07:34.115142] [INFO] enter if .....
[2015-05-05 2:07:35.482580] [INFO] command execute result...
http://blog.skyx.in/archives/158/
可能是權限問題
我一般不用鉤子,麻煩還維護,需要部署的地方執行這個腳本
當然,如果你的程式還需要針對程式碼更新做一些其他操作,這個就不好用了.
貼自己寫的一個簡單的小腳本,配置一些資訊既可以實現題主功能,能夠簡單的記錄資訊到log。