app\components\Folder::_unpackageFilesByAnsible PHP Method

_unpackageFilesByAnsible() protected method

protected _unpackageFilesByAnsible ( Project $project, Task $task ) : boolean
$project app\models\Project
$task app\models\Task
return boolean
    protected function _unpackageFilesByAnsible(Project $project, TaskModel $task)
    {
        $version = $task->link_id;
        $releasePackage = Project::getReleaseVersionPackage($version);
        $webrootPath = Project::getTargetWorkspace();
        $releasePath = Project::getReleaseVersionDir($version);
        $cmd = [];
        if ($task->file_transmission_mode == TaskModel::FILE_TRANSMISSION_MODE_PART) {
            // 增量传输时, 在解压数据包之前, 需要把目标机当前版本复制一份到release目录
            $cmd[] = sprintf('cp -arf %s/. %s', $webrootPath, $releasePath);
        }
        $cmd[] = sprintf('cd %1$s && tar --no-same-owner -pm -C %1$s -xz -f %2$s', $releasePath, $releasePackage);
        $command = join(' && ', $cmd);
        $ret = $this->runRemoteCommandByAnsibleShell($command);
        if (!$ret) {
            throw new \Exception(yii::t('walle', 'unpackage error'));
        }
        return true;
    }