git@osc 是开源中国社区团队基于开源项目 GitLab 开发的在线代码托管平台。
系统环境:
CentOS:7.0
web环境:阿里云一键安装包
开发框架:Yii2.0
$request = Yii::$app->request; $js = json_decode($request->post('hook'));//json转换 if ($js->password != "password") { Yii::$app->end(); } $lastcommit = $js->push_data->commits[count($js->push_data->commits) - 1];//获取最后的commit if (strstr($lastcommit->message, "release"))//这里意为:如果最后的commit包含"release"则进行自动发布。 { $shell = <<<EOF WEB_PATH='/wwwroot' WEB_USER='www' WEB_GROUP='www' cd \$WEB_PATH git pull origin master chown -R \$WEB_USER:\$WEB_GROUP \$WEB_PATH EOF; file_put_contents('deploy.sh', $shell); $result = shell_exec("bash deploy.sh"); }
以上是发布代码,如果仅仅按照这个是无法实现的。shell_exec无法执行。
请注意:
1、因为使用阿里云,默认安装完成后是 用户和用户组为 www。
2、$sudo visudo -f /etc/sudoers
然后在root 后面 添加 www ALL=(ALL) NOPASSWD: ALL
3、www用户需要有该文件夹的读写权限。
4、home目录内有www用户对应的文件夹。并且.ssh文件夹,文件夹内的公钥已添加到Git@OSC上。
我知道,但我不说(因为我不会说,不知道怎么说)