/** * Takes a generic build and returns a type-specific build model. * @param Build $base The build from which to get a more specific build type. * @return Build */ public static function getBuild(Build $base) { switch ($base->getProject()->getType()) { case 'remote': $type = 'RemoteGitBuild'; break; case 'local': $type = 'LocalBuild'; break; case 'github': $type = 'GithubBuild'; break; case 'bitbucket': $type = 'BitbucketBuild'; break; case 'gitlab': $type = 'GitlabBuild'; break; case 'hg': $type = 'MercurialBuild'; break; } $type = '\\PHPCI\\Model\\Build\\' . $type; return new $type($base->getDataArray()); }
/** * @param Build $copyFrom * @return \PHPCI\Model\Build */ public function createDuplicateBuild(Build $copyFrom) { $data = $copyFrom->getDataArray(); // Clean up unwanted properties from the original build: unset($data['id']); unset($data['status']); unset($data['log']); unset($data['started']); unset($data['finished']); $build = new Build(); $build->setValues($data); $build->setCreated(new \DateTime()); return $this->buildStore->save($build); }
/** * @param Build $copyFrom * @return \PHPCI\Model\Build */ public function createDuplicateBuild(Build $copyFrom) { $data = $copyFrom->getDataArray(); // Clean up unwanted properties from the original build: unset($data['id']); unset($data['status']); unset($data['log']); unset($data['started']); unset($data['finished']); $build = new Build(); $build->setValues($data); $build->setCreated(new \DateTime()); $build->setStatus(0); $build = $this->buildStore->save($build); $buildId = $build->getId(); if (!empty($buildId)) { $build = BuildFactory::getBuild($build); $build->sendStatusPostback(); $this->addBuildToQueue($build); } return $build; }