Esempio n. 1
0
 /**
  * 项目配置检测,提前发现配置不当之处。
  *
  * @return string
  */
 public function actionDetection($projectId)
 {
     $project = Project::getConf($projectId);
     $log = [];
     $code = 0;
     // 本地git ssh-key是否加入deploy-keys列表
     $git = new Git();
     try {
         $ret = $git->setConfig($project)->updateRepo();
         if (!$ret) {
             $code = -1;
             $log[] = sprintf('宿主机代码检出检测出错,请确认php进程用户%s有代码存储仓库权限,
             并且把ssh-key加入git的deploy-keys列表。详细错误:%s', Get_Current_User(), $git->getExeLog());
         }
     } catch (\Exception $e) {
         $code = -1;
         $log[] = sprintf('宿主机检测时发生系统错误:%s', $e->getMessage());
     }
     // 权限与免密码登录检测
     $task = new WalleTask();
     try {
         $task->setConfig($project);
         $command = sprintf('mkdir -p %s', Project::getReleaseVersionDir('detection'));
         $ret = $task->runRemoteTaskCommandPackage([$command]);
         if (!$ret) {
             $code = -1;
             $log[] = sprintf('目标机器代码检出检测出错,请确认php进程用户%s用户加入目标机器的%s用户ssh-key信任列表,
                 且%s有目标机器发布版本库写入权限。详细错误:%s', Get_Current_User(), $project->release_user, $project->release_user, $task->getExeLog());
         }
         // 清除
         $command = sprintf('rm -rf %s', Project::getReleaseVersionDir('detection'));
         $task->runRemoteTaskCommandPackage([$command]);
     } catch (\Exception $e) {
         $code = -1;
         $log[] = sprintf('目标机检测时发生系统错误:%s', $e->getMessage());
     }
     // task 检测todo...
     if ($code === 0) {
         $log[] = '配置检测通过,恭喜:)';
     }
     $this->renderJson(join("<br>", $log), $code);
 }