我的代码托管在开源中国得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/
Maybe it’s a permissions issue
I generally don’t use hooks. It’s troublesome to maintain. I execute this script wherever it needs to be deployed
Of course, if your program also needs to do some other operations for code updates, this will not be useful.
Post a simple little script I wrote. Configuring some information can not only realize the subject function, but also record the information to the log simply.