/** * 项目配置检测,提前发现配置不当之处。 * * @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); }