/** * @param Project $project * @param string|null $commitId * @param string|null $branch * @param string|null $committerEmail * @param string|null $commitMessage * @param string|null $extra * @return \PHPCI\Model\Build */ public function createBuild(Project $project, $commitId = null, $branch = null, $committerEmail = null, $commitMessage = null, $extra = null) { $build = new Build(); $build->setCreated(new \DateTime()); $build->setProject($project); $build->setStatus(0); if (!is_null($commitId)) { $build->setCommitId($commitId); } else { $build->setCommitId('Manual'); $build->setCommitMessage(Lang::get('manual_build')); } if (!is_null($branch)) { $build->setBranch($branch); } else { $build->setBranch($project->getBranch()); } if (!is_null($committerEmail)) { $build->setCommitterEmail($committerEmail); } if (!is_null($commitMessage)) { $build->setCommitMessage($commitMessage); } if (!is_null($extra)) { $build->setExtra(json_encode($extra)); } return $this->buildStore->save($build); }
/** * @covers PHPUnit::execute */ public function testExecute_TestBuildExtra() { $info = array('item1' => 'Item One', 'item2' => 2); $build = new Build(); $build->setExtra(json_encode($info)); $this->assertEquals('Item One', $build->getExtra('item1')); $this->assertEquals(2, $build->getExtra('item2')); $this->assertNull($build->getExtra('item3')); $this->assertEquals($info, $build->getExtra()); }
/** * @covers PHPUnit::execute */ public function testExecute_CreateDuplicateBuild() { $build = new Build(); $build->setId(1); $build->setProject(101); $build->setCommitId('abcde'); $build->setStatus(Build::STATUS_FAILED); $build->setLog('Test'); $build->setBranch('example_branch'); $build->setStarted(new \DateTime()); $build->setFinished(new \DateTime()); $build->setCommitMessage('test'); $build->setCommitterEmail('*****@*****.**'); $build->setExtra(json_encode(array('item1' => 1001))); $returnValue = $this->testedService->createDuplicateBuild($build); $this->assertNotEquals($build->getId(), $returnValue->getId()); $this->assertEquals($build->getProjectId(), $returnValue->getProjectId()); $this->assertEquals($build->getCommitId(), $returnValue->getCommitId()); $this->assertNotEquals($build->getStatus(), $returnValue->getStatus()); $this->assertEquals(Build::STATUS_NEW, $returnValue->getStatus()); $this->assertNull($returnValue->getLog()); $this->assertEquals($build->getBranch(), $returnValue->getBranch()); $this->assertNotEquals($build->getCreated(), $returnValue->getCreated()); $this->assertNull($returnValue->getStarted()); $this->assertNull($returnValue->getFinished()); $this->assertEquals('test', $returnValue->getCommitMessage()); $this->assertEquals('*****@*****.**', $returnValue->getCommitterEmail()); $this->assertEquals($build->getExtra('item1'), $returnValue->getExtra('item1')); }
protected function createBuild($projectId, $commitId, $branch, $committer, $commitMessage, $extra = null) { // Check if a build already exists for this commit ID: $builds = $this->buildStore->getByProjectAndCommit($projectId, $commitId); if ($builds['count']) { return true; } // If not, create a new build job for it: $build = new Build(); $build->setProjectId($projectId); $build->setCommitId($commitId); $build->setStatus(Build::STATUS_NEW); $build->setLog(''); $build->setCreated(new \DateTime()); $build->setBranch($branch); $build->setCommitterEmail($committer); $build->setCommitMessage($commitMessage); if (!is_null($extra)) { $build->setExtra(json_encode($extra)); } $build = BuildFactory::getBuild($this->buildStore->save($build)); // Send a status postback if the build type provides one: $build->sendStatusPostback(); return true; }
/** * Create a build using an existing build as a template: */ public function rebuild($buildId) { $copy = BuildFactory::getBuildById($buildId); if (empty($copy)) { throw new NotFoundException('Build with ID: ' . $buildId . ' does not exist.'); } $build = new Build(); $build->setProjectId($copy->getProjectId()); $build->setCommitId($copy->getCommitId()); $build->setStatus(Build::STATUS_NEW); $build->setBranch($copy->getBranch()); $build->setCreated(new \DateTime()); $build->setCommitterEmail($copy->getCommitterEmail()); $build->setCommitMessage($copy->getCommitMessage()); $build->setExtra(json_encode($copy->getExtra())); $build = $this->buildStore->save($build); header('Location: ' . PHPCI_URL . 'build/view/' . $build->getId()); exit; }