我的代码托管在开源中国得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/
C'est peut-être un problème d'autorisations
Je n'utilise généralement pas de hooks. C'est difficile à maintenir. J'exécute ce script partout où il doit être déployé
Bien sûr, si votre programme doit également effectuer d'autres opérations pour les mises à jour du code, cela ne sera pas utile.
Publier un simple petit script que j'ai écrit, configurer certaines informations peut non seulement réaliser la fonction du sujet, mais peut également simplement enregistrer les informations dans le journal.