public function deployPush($opts = [
        'build-path' => null,
        'deploy-type' => 'git',
    ])
    {
        $this->executeCommandHook(__FUNCTION__, 'before');
        $build_path = $this->buildPath($opts);

        if (!file_exists($build_path)) {
            throw new DeploymentRuntimeException(
                'Build directory does not exist.'
            );
        }
        /** @var DeployBase $deploy */
        $deploy = $this->loadDeployTask(
            $opts['deploy-type'],
            $build_path
        );

        $this->executeDeploy(__FUNCTION__, $deploy);
        $this->executeCommandHook(__FUNCTION__, 'after');
    }