app\components\Folder::initLocalWorkspace PHP Method

initLocalWorkspace() public method

初始化宿主机部署工作空间
public initLocalWorkspace ( Task $task ) : boolean | integer
$task app\models\Task
return boolean | integer
    public function initLocalWorkspace(TaskModel $task)
    {
        $version = $task->link_id;
        $branch = $task->branch;
        if ($this->config->repo_type == Project::REPO_SVN) {
            // svn cp 过来指定分支的目录, 然后 svn up 到指定版本
            $cmd[] = sprintf('cp -rf %s %s ', Project::getSvnDeployBranchFromDir($branch), Project::getDeployWorkspace($version));
        } else {
            // git cp 仓库, 然后 checkout 切换分支, up 到指定版本
            $cmd[] = sprintf('cp -rf %s %s ', Project::getDeployFromDir(), Project::getDeployWorkspace($version));
        }
        $command = join(' && ', $cmd);
        return $this->runLocalCommand($command);
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * 检查目录和权限,工作空间的准备
  * 每一个版本都单独开辟一个工作空间,防止代码污染
  *
  * @return bool
  * @throws \Exception
  */
 private function _initWorkspace()
 {
     $folder = new Folder();
     $sTime = Command::getMs();
     $folder->setConfig($this->conf);
     // 本地宿主机工作区初始化
     $folder->initLocalWorkspace($this->task->link_id);
     // 本地宿主机代码仓库检查
     // 远程目标目录检查,并且生成版本目录
     $ret = $folder->initRemoteVersion($this->task->link_id);
     // 记录执行时间
     $duration = Command::getMs() - $sTime;
     Record::saveRecord($folder, $this->task->id, Record::ACTION_PERMSSION, $duration);
     if (!$ret) {
         throw new \Exception('初始化部署隔离空间出错');
     }
     return true;
 }