Refactoring builds out into separate model types (Github, Bitbucket, Local) and builder to use build->createWorkingCopy() to make build directory. Fixes #29
This commit is contained in:
parent
1a92d1c619
commit
be37a5e821
9 changed files with 304 additions and 150 deletions
76
PHPCI/Model/Build/GithubBuild.php
Normal file
76
PHPCI/Model/Build/GithubBuild.php
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Build model for table: build
|
||||
*/
|
||||
|
||||
namespace PHPCI\Model\Build;
|
||||
use PHPCI\Model\Build\RemoteGitBuild;
|
||||
|
||||
/**
|
||||
* Build Model
|
||||
* @uses PHPCI\Model\Build
|
||||
*/
|
||||
class GithubBuild extends RemoteGitBuild
|
||||
{
|
||||
public function getCommitLink()
|
||||
{
|
||||
return 'https://github.com/' . $this->getProject()->getReference() . '/commit/' . $this->getCommitId();
|
||||
}
|
||||
|
||||
public function getBranchLink()
|
||||
{
|
||||
return 'https://github.com/' . $this->getProject()->getReference() . '/tree/' . $this->getBranch();
|
||||
}
|
||||
|
||||
public function sendStatusPostback()
|
||||
{
|
||||
$project = $this->getProject();
|
||||
|
||||
// The postback will only work if we have an access token.
|
||||
if(!$project->getToken()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$url = 'https://api.github.com/repos/'.$project->getReference().'/statuses/'.$this->getCommitId();
|
||||
$http = new \b8\HttpClient();
|
||||
|
||||
switch($this->getStatus())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
$status = 'pending';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$status = 'success';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$status = 'failure';
|
||||
break;
|
||||
|
||||
default:
|
||||
$status = 'error';
|
||||
break;
|
||||
}
|
||||
|
||||
$params = array( 'state' => $status,
|
||||
'target_url' => \b8\Registry::getInstance()->get('install_url') . '/build/view/' . $this->getId());
|
||||
|
||||
$http->setHeaders(array('Authorization: token ' . $project->getToken()));
|
||||
$http->request('POST', $url, json_encode($params));
|
||||
}
|
||||
|
||||
protected function getCloneUrl()
|
||||
{
|
||||
$key = trim($this->getProject()->getGitKey());
|
||||
|
||||
if(!empty($key)) {
|
||||
return 'git@github.com:' . $this->getProject()->getReference() . '.git';
|
||||
}
|
||||
else {
|
||||
return 'https://github.com/' . $this->getProject()->getReference() . '.git';
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue