app\models\Project::getDeployWorkspace PHP Method

getDeployWorkspace() public static method

拼接宿主机的部署隔离工作空间 {deploy_from}/{env}/{project}-YYmmdd-HHiiss
public static getDeployWorkspace ( $version ) : string
return string
    public static function getDeployWorkspace($version)
    {
        $from = static::$CONF->deploy_from;
        $env = isset(static::$LEVEL[static::$CONF->level]) ? static::$LEVEL[static::$CONF->level] : 'unknow';
        $project = static::getGitProjectName(static::$CONF->repo_url);
        return sprintf("%s/%s/%s-%s", rtrim($from, '/'), rtrim($env, '/'), $project, $version);
    }

Usage Example

Exemplo n.º 1
0
 /**
  * 更新到指定commit版本
  *
  * @param string $commit
  * @return bool
  */
 public function updateToVersion($task)
 {
     $copy = GlobalHelper::str2arr($task->file_list);
     $fileAndVersion = [];
     foreach ($copy as $file) {
         $fileAndVersion[] = StringHelper::explode($file, " ", true, true);
     }
     $branch = $task->branch == 'trunk' ? $task->branch : ($this->getConfig()->repo_mode == Project::REPO_BRANCH ? 'branches/' : 'tags/') . $task->branch;
     // 先更新
     $versionSvnDir = sprintf('%s-svn', rtrim(Project::getDeployWorkspace($task->link_id), '/'));
     $cmd[] = sprintf('cd %s ', $versionSvnDir);
     $cmd[] = $this->_getSvnCmd(sprintf('svn checkout %s/%s .', $this->getConfig()->repo_url, $branch));
     // 更新指定文件到指定版本,并复制到同步目录
     foreach ($fileAndVersion as $assign) {
         if (in_array($assign[0], ['.', '..'])) {
             continue;
         }
         $cmd[] = $this->_getSvnCmd(sprintf('svn up %s %s', $assign[0], empty($assign[1]) ? '' : ' -r ' . $assign[1]));
         // 多层目录需要先新建父目录,否则复制失败
         if (strpos($assign[0], '/') !== false) {
             $cmd[] = sprintf('mkdir -p %s/%s', Project::getDeployWorkspace($task->link_id), dirname($assign[0]));
         }
         $cmd[] = sprintf('cp -rf %s %s/%s', rtrim($assign[0], '/'), Project::getDeployWorkspace($task->link_id), dirname($assign[0]));
     }
     $command = join(' && ', $cmd);
     return $this->runLocalCommand($command);
 }
All Usage Examples Of app\models\Project::getDeployWorkspace