通过git@osc hook结合Yii2实现自动化部署

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上。

通过git@osc hook结合Yii2实现自动化部署》有1个想法

发表评论

邮箱地址不会被公开。