Updating PHPCI to support new b8framework release
This commit is contained in:
parent
a584f29316
commit
1ddce31488
|
@ -10,6 +10,7 @@
|
||||||
namespace PHPCI;
|
namespace PHPCI;
|
||||||
|
|
||||||
use b8;
|
use b8;
|
||||||
|
use b8\Http\Response;
|
||||||
use b8\Http\Response\RedirectResponse;
|
use b8\Http\Response\RedirectResponse;
|
||||||
use b8\View;
|
use b8\View;
|
||||||
|
|
||||||
|
@ -19,52 +20,38 @@ use b8\View;
|
||||||
*/
|
*/
|
||||||
class Application extends b8\Application
|
class Application extends b8\Application
|
||||||
{
|
{
|
||||||
|
public function init()
|
||||||
|
{
|
||||||
|
$request =& $this->request;
|
||||||
|
$route = '/:controller/:action';
|
||||||
|
$opts = ['controller' => 'Home', 'action' => 'index'];
|
||||||
|
|
||||||
|
$this->router->clearRoutes();
|
||||||
|
$this->router->register($route, $opts, function (&$route, Response &$response) use (&$request)
|
||||||
|
{
|
||||||
|
$skipValidation = in_array($route['controller'], array('session', 'webhook', 'build-status'));
|
||||||
|
|
||||||
|
if (!$skipValidation && !$this->validateSession()) {
|
||||||
|
if ($request->isAjax()) {
|
||||||
|
$response->setResponseCode(401);
|
||||||
|
$response->setContent('');
|
||||||
|
} else {
|
||||||
|
$response = new RedirectResponse($response);
|
||||||
|
$response->setHeader('Location', PHPCI_URL.'session/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Handle an incoming web request.
|
* Handle an incoming web request.
|
||||||
*/
|
*/
|
||||||
public function handleRequest()
|
public function handleRequest()
|
||||||
{
|
{
|
||||||
try {
|
$this->response = parent::handleRequest();
|
||||||
$this->initRequest();
|
|
||||||
|
|
||||||
// Validate the user's session unless it is a login/logout action or a web hook:
|
|
||||||
$sessionAction = ($this->controllerName == 'Session' && in_array($this->action, array('login', 'logout')));
|
|
||||||
$externalAction = in_array($this->controllerName, array('Bitbucket', 'Github', 'Gitlab', 'BuildStatus', 'Git'));
|
|
||||||
$skipValidation = ($externalAction || $sessionAction);
|
|
||||||
|
|
||||||
if ($skipValidation || $this->validateSession()) {
|
|
||||||
parent::handleRequest();
|
|
||||||
}
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
$content = '<h1>There was a problem with this request</h1>
|
|
||||||
<p>Please paste the details below into a
|
|
||||||
<a href="https://github.com/Block8/PHPCI/issues/new">new bug report</a>
|
|
||||||
so that we can investigate and fix it.</p>';
|
|
||||||
|
|
||||||
ob_start();
|
|
||||||
var_dump(array(
|
|
||||||
'message' => $ex->getMessage(),
|
|
||||||
'file' => $ex->getFile(),
|
|
||||||
'line' => $ex->getLine(),
|
|
||||||
'trace' => $ex->getTraceAsString()
|
|
||||||
));
|
|
||||||
var_dump(array(
|
|
||||||
'PATH_INFO' => $_SERVER['PATH_INFO'],
|
|
||||||
'REDIRECT_PATH_INFO' => $_SERVER['REDIRECT_PATH_INFO'],
|
|
||||||
'REQUEST_URI' => $_SERVER['REQUEST_URI'],
|
|
||||||
'PHP_SELF' => $_SERVER['PHP_SELF'],
|
|
||||||
'SCRIPT_NAME' => $_SERVER['SCRIPT_NAME'],
|
|
||||||
'DOCUMENT_ROOT' => $_SERVER['DOCUMENT_ROOT'],
|
|
||||||
'SCRIPT_FILENAME' => $_SERVER['SCRIPT_FILENAME'],
|
|
||||||
'SERVER_SOFTWARE' => $_SERVER['SERVER_SOFTWARE'],
|
|
||||||
));
|
|
||||||
$content .= ob_get_contents();
|
|
||||||
ob_end_clean();
|
|
||||||
|
|
||||||
$this->response->setContent($content);
|
|
||||||
$this->response->disableLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (View::exists('layout') && $this->response->hasLayout()) {
|
if (View::exists('layout') && $this->response->hasLayout()) {
|
||||||
$view = new View('layout');
|
$view = new View('layout');
|
||||||
|
@ -91,14 +78,6 @@ class Application extends b8\Application
|
||||||
unset($_SESSION['user_id']);
|
unset($_SESSION['user_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->request->isAjax()) {
|
|
||||||
$this->response->setResponseCode(401);
|
|
||||||
$this->response->setContent('');
|
|
||||||
} else {
|
|
||||||
$this->response = new RedirectResponse($this->response);
|
|
||||||
$this->response->setHeader('Location', PHPCI_URL.'session/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ class Controller extends \b8\Controller
|
||||||
if (View::exists($this->className)) {
|
if (View::exists($this->className)) {
|
||||||
$this->controllerView = new View($this->className);
|
$this->controllerView = new View($this->className);
|
||||||
} else {
|
} else {
|
||||||
$this->controllerView = new View\UserView('{@content}');
|
$this->controllerView = new View\Template('{@content}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* PHPCI - Continuous Integration for PHP
|
|
||||||
*
|
|
||||||
* @copyright Copyright 2013, Block 8 Limited.
|
|
||||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
|
||||||
* @link http://www.phptesting.org/
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PHPCI\Controller;
|
|
||||||
|
|
||||||
use b8;
|
|
||||||
use b8\Store;
|
|
||||||
use PHPCI\Model\Build;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BitBucket Controller - Processes webhook pings from BitBucket.
|
|
||||||
* @author Dan Cryer <dan@block8.co.uk>
|
|
||||||
* @package PHPCI
|
|
||||||
* @subpackage Web
|
|
||||||
*/
|
|
||||||
class BitbucketController extends \PHPCI\Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var \PHPCI\Store\BuildStore
|
|
||||||
*/
|
|
||||||
protected $buildStore;
|
|
||||||
|
|
||||||
public function init()
|
|
||||||
{
|
|
||||||
$this->buildStore = Store\Factory::getStore('Build');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called by Bitbucket POST service.
|
|
||||||
*/
|
|
||||||
public function webhook($project)
|
|
||||||
{
|
|
||||||
$payload = json_decode($this->getParam('payload'), true);
|
|
||||||
$branches = array();
|
|
||||||
$commits = array();
|
|
||||||
|
|
||||||
foreach ($payload['commits'] as $commit) {
|
|
||||||
if (!in_array($commit['branch'], $branches)) {
|
|
||||||
$branches[] = $commit['branch'];
|
|
||||||
$commits[$commit['branch']] = $commit['raw_node'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($branches as $branch) {
|
|
||||||
try {
|
|
||||||
|
|
||||||
$build = new Build();
|
|
||||||
$build->setProjectId($project);
|
|
||||||
$build->setCommitId($commits[$branch]);
|
|
||||||
$build->setStatus(Build::STATUS_NEW);
|
|
||||||
$build->setLog('');
|
|
||||||
$build->setCreated(new \DateTime());
|
|
||||||
$build->setBranch($branch);
|
|
||||||
$this->buildStore->save($build);
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
die('OK');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* PHPCI - Continuous Integration for PHP
|
|
||||||
*
|
|
||||||
* @copyright Copyright 2013, Block 8 Limited.
|
|
||||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
|
||||||
* @link http://www.phptesting.org/
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PHPCI\Controller;
|
|
||||||
|
|
||||||
use b8;
|
|
||||||
use b8\Store;
|
|
||||||
use PHPCI\Model\Build;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sami Tikka <stikka@iki.fi>
|
|
||||||
*/
|
|
||||||
class GitController extends \PHPCI\Controller
|
|
||||||
{
|
|
||||||
public function init()
|
|
||||||
{
|
|
||||||
$this->_buildStore = Store\Factory::getStore('Build');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called by POSTing to /git/webhook/<project_id>?branch=<branch>&commit=<commit>
|
|
||||||
*
|
|
||||||
* @param string $project
|
|
||||||
*/
|
|
||||||
public function webhook($project)
|
|
||||||
{
|
|
||||||
$branch = $this->getParam('branch');
|
|
||||||
$commit = $this->getParam('commit');
|
|
||||||
|
|
||||||
try {
|
|
||||||
$build = new Build();
|
|
||||||
$build->setProjectId($project);
|
|
||||||
|
|
||||||
if ($branch !== null && trim($branch) !== '') {
|
|
||||||
$build->setBranch($branch);
|
|
||||||
} else {
|
|
||||||
$build->setBranch('master');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($commit !== null && trim($commit) !== '') {
|
|
||||||
$build->setCommitId($commit);
|
|
||||||
}
|
|
||||||
|
|
||||||
$build->setStatus(Build::STATUS_NEW);
|
|
||||||
$build->setLog('');
|
|
||||||
$build->setCreated(new \DateTime());
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
header('HTTP/1.1 400 Bad Request');
|
|
||||||
header('Ex: ' . $ex->getMessage());
|
|
||||||
die('FAIL');
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->_buildStore->save($build);
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
header('HTTP/1.1 500 Internal Server Error');
|
|
||||||
header('Ex: ' . $ex->getMessage());
|
|
||||||
die('FAIL');
|
|
||||||
}
|
|
||||||
|
|
||||||
die('OK');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* PHPCI - Continuous Integration for PHP
|
|
||||||
*
|
|
||||||
* @copyright Copyright 2013, Block 8 Limited.
|
|
||||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
|
||||||
* @link http://www.phptesting.org/
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PHPCI\Controller;
|
|
||||||
|
|
||||||
use b8;
|
|
||||||
use b8\Store;
|
|
||||||
use PHPCI\Model\Build;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Github Controller - Processes webhook pings from Github.
|
|
||||||
* @author Dan Cryer <dan@block8.co.uk>
|
|
||||||
* @package PHPCI
|
|
||||||
* @subpackage Web
|
|
||||||
*/
|
|
||||||
class GithubController extends \PHPCI\Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var \PHPCI\Store\BuildStore
|
|
||||||
*/
|
|
||||||
protected $buildStore;
|
|
||||||
|
|
||||||
public function init()
|
|
||||||
{
|
|
||||||
$this->buildStore = Store\Factory::getStore('Build');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called by Github Webhooks:
|
|
||||||
*/
|
|
||||||
public function webhook($project)
|
|
||||||
{
|
|
||||||
$payload = json_decode($this->getParam('payload'), true);
|
|
||||||
|
|
||||||
// Github sends a payload when you close a pull request with a
|
|
||||||
// non-existant commit. We don't want this.
|
|
||||||
if ($payload['after'] === '0000000000000000000000000000000000000000') {
|
|
||||||
die('OK');
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$build = new Build();
|
|
||||||
$build->setProjectId($project);
|
|
||||||
$build->setCommitId($payload['after']);
|
|
||||||
$build->setStatus(Build::STATUS_NEW);
|
|
||||||
$build->setLog('');
|
|
||||||
$build->setCreated(new \DateTime());
|
|
||||||
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
|
||||||
|
|
||||||
if (!empty($payload['pusher']['email'])) {
|
|
||||||
$build->setCommitterEmail($payload['pusher']['email']);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
header('HTTP/1.1 400 Bad Request');
|
|
||||||
header('Ex: ' . $ex->getMessage());
|
|
||||||
die('FAIL');
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$build = $this->buildStore->save($build);
|
|
||||||
$build->sendStatusPostback();
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
header('HTTP/1.1 500 Internal Server Error');
|
|
||||||
header('Ex: ' . $ex->getMessage());
|
|
||||||
die('FAIL');
|
|
||||||
}
|
|
||||||
|
|
||||||
die('OK');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* PHPCI - Continuous Integration for PHP
|
|
||||||
*
|
|
||||||
* @copyright Copyright 2013, Block 8 Limited.
|
|
||||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
|
||||||
* @link http://www.phptesting.org/
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PHPCI\Controller;
|
|
||||||
|
|
||||||
use b8;
|
|
||||||
use b8\Store;
|
|
||||||
use PHPCI\Model\Build;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gitlab Controller - Processes webhook pings from Gitlab.
|
|
||||||
* @author Alex Russell <alex@clevercherry.com>, Dan Cryer <dan@block8.co.uk>
|
|
||||||
* @package PHPCI
|
|
||||||
* @subpackage Web
|
|
||||||
*/
|
|
||||||
class GitlabController extends \PHPCI\Controller
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var \PHPCI\Store\BuildStore
|
|
||||||
*/
|
|
||||||
protected $buildStore;
|
|
||||||
|
|
||||||
public function init()
|
|
||||||
{
|
|
||||||
$this->buildStore = Store\Factory::getStore('Build');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called by Gitlab Webhooks:
|
|
||||||
*/
|
|
||||||
public function webhook($project)
|
|
||||||
{
|
|
||||||
$payload = json_decode(file_get_contents("php://input"), true);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$build = new Build();
|
|
||||||
$build->setProjectId($project);
|
|
||||||
$build->setCommitId($payload['after']);
|
|
||||||
$build->setStatus(Build::STATUS_NEW);
|
|
||||||
$build->setLog('');
|
|
||||||
$build->setCreated(new \DateTime());
|
|
||||||
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
header('HTTP/1.1 400 Bad Request');
|
|
||||||
header('Ex: ' . $ex->getMessage());
|
|
||||||
die('FAIL');
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$build = $this->buildStore->save($build);
|
|
||||||
$build->sendStatusPostback();
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
header('HTTP/1.1 500 Internal Server Error');
|
|
||||||
header('Ex: ' . $ex->getMessage());
|
|
||||||
die('FAIL');
|
|
||||||
}
|
|
||||||
|
|
||||||
die('OK');
|
|
||||||
}
|
|
||||||
}
|
|
190
PHPCI/Controller/WebhookController.php
Normal file
190
PHPCI/Controller/WebhookController.php
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHPCI - Continuous Integration for PHP
|
||||||
|
*
|
||||||
|
* @copyright Copyright 2013, Block 8 Limited.
|
||||||
|
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
||||||
|
* @link http://www.phptesting.org/
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace PHPCI\Controller;
|
||||||
|
|
||||||
|
use b8;
|
||||||
|
use b8\Store;
|
||||||
|
use PHPCI\Model\Build;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Webhook Controller - Processes webhook pings from BitBucket, Github, Gitlab, etc.
|
||||||
|
* @author Dan Cryer <dan@block8.co.uk>
|
||||||
|
* @author Sami Tikka <stikka@iki.fi>
|
||||||
|
* @author Alex Russell <alex@clevercherry.com>
|
||||||
|
* @package PHPCI
|
||||||
|
* @subpackage Web
|
||||||
|
*/
|
||||||
|
class WebhookController extends \PHPCI\Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \PHPCI\Store\BuildStore
|
||||||
|
*/
|
||||||
|
protected $buildStore;
|
||||||
|
|
||||||
|
public function init()
|
||||||
|
{
|
||||||
|
$this->buildStore = Store\Factory::getStore('Build');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by Bitbucket POST service.
|
||||||
|
*/
|
||||||
|
public function bitbucket($project)
|
||||||
|
{
|
||||||
|
$payload = json_decode($this->getParam('payload'), true);
|
||||||
|
$branches = array();
|
||||||
|
$commits = array();
|
||||||
|
|
||||||
|
foreach ($payload['commits'] as $commit) {
|
||||||
|
if (!in_array($commit['branch'], $branches)) {
|
||||||
|
$branches[] = $commit['branch'];
|
||||||
|
$commits[$commit['branch']] = $commit['raw_node'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($branches as $branch) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
$build = new Build();
|
||||||
|
$build->setProjectId($project);
|
||||||
|
$build->setCommitId($commits[$branch]);
|
||||||
|
$build->setStatus(Build::STATUS_NEW);
|
||||||
|
$build->setLog('');
|
||||||
|
$build->setCreated(new \DateTime());
|
||||||
|
$build->setBranch($branch);
|
||||||
|
$this->buildStore->save($build);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
die('OK');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by POSTing to /git/webhook/<project_id>?branch=<branch>&commit=<commit>
|
||||||
|
*
|
||||||
|
* @param string $project
|
||||||
|
*/
|
||||||
|
public function git($project)
|
||||||
|
{
|
||||||
|
$branch = $this->getParam('branch');
|
||||||
|
$commit = $this->getParam('commit');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$build = new Build();
|
||||||
|
$build->setProjectId($project);
|
||||||
|
|
||||||
|
if ($branch !== null && trim($branch) !== '') {
|
||||||
|
$build->setBranch($branch);
|
||||||
|
} else {
|
||||||
|
$build->setBranch('master');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($commit !== null && trim($commit) !== '') {
|
||||||
|
$build->setCommitId($commit);
|
||||||
|
}
|
||||||
|
|
||||||
|
$build->setStatus(Build::STATUS_NEW);
|
||||||
|
$build->setLog('');
|
||||||
|
$build->setCreated(new \DateTime());
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
header('HTTP/1.1 400 Bad Request');
|
||||||
|
header('Ex: ' . $ex->getMessage());
|
||||||
|
die('FAIL');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->_buildStore->save($build);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
header('Ex: ' . $ex->getMessage());
|
||||||
|
die('FAIL');
|
||||||
|
}
|
||||||
|
|
||||||
|
die('OK');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by Github Webhooks:
|
||||||
|
*/
|
||||||
|
public function github($project)
|
||||||
|
{
|
||||||
|
$payload = json_decode($this->getParam('payload'), true);
|
||||||
|
|
||||||
|
// Github sends a payload when you close a pull request with a
|
||||||
|
// non-existant commit. We don't want this.
|
||||||
|
if ($payload['after'] === '0000000000000000000000000000000000000000') {
|
||||||
|
die('OK');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$build = new Build();
|
||||||
|
$build->setProjectId($project);
|
||||||
|
$build->setCommitId($payload['after']);
|
||||||
|
$build->setStatus(Build::STATUS_NEW);
|
||||||
|
$build->setLog('');
|
||||||
|
$build->setCreated(new \DateTime());
|
||||||
|
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
||||||
|
|
||||||
|
if (!empty($payload['pusher']['email'])) {
|
||||||
|
$build->setCommitterEmail($payload['pusher']['email']);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
header('HTTP/1.1 400 Bad Request');
|
||||||
|
header('Ex: ' . $ex->getMessage());
|
||||||
|
die('FAIL');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$build = $this->buildStore->save($build);
|
||||||
|
$build->sendStatusPostback();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
header('Ex: ' . $ex->getMessage());
|
||||||
|
die('FAIL');
|
||||||
|
}
|
||||||
|
|
||||||
|
die('OK');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by Gitlab Webhooks:
|
||||||
|
*/
|
||||||
|
public function gitlab($project)
|
||||||
|
{
|
||||||
|
$payload = json_decode(file_get_contents("php://input"), true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$build = new Build();
|
||||||
|
$build->setProjectId($project);
|
||||||
|
$build->setCommitId($payload['after']);
|
||||||
|
$build->setStatus(Build::STATUS_NEW);
|
||||||
|
$build->setLog('');
|
||||||
|
$build->setCreated(new \DateTime());
|
||||||
|
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
header('HTTP/1.1 400 Bad Request');
|
||||||
|
header('Ex: ' . $ex->getMessage());
|
||||||
|
die('FAIL');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$build = $this->buildStore->save($build);
|
||||||
|
$build->sendStatusPostback();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
header('Ex: ' . $ex->getMessage());
|
||||||
|
die('FAIL');
|
||||||
|
}
|
||||||
|
|
||||||
|
die('OK');
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,17 +27,17 @@
|
||||||
switch($project->getType())
|
switch($project->getType())
|
||||||
{
|
{
|
||||||
case 'github':
|
case 'github':
|
||||||
$url = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . '://' . $_SERVER['HTTP_HOST'] . '/github/webhook/' . $project->getId();
|
$url = PHPCI_URL . 'webhook/github/' . $project->getId();
|
||||||
print ' as a "WebHook URL" in the <a href="https://github.com/' . $project->getReference() . '/settings/hooks">Service Hooks</a> section of your Github repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
print ' as a "WebHook URL" in the <a href="https://github.com/' . $project->getReference() . '/settings/hooks">Service Hooks</a> section of your Github repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'gitlab':
|
case 'gitlab':
|
||||||
$url = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . '://' . $_SERVER['HTTP_HOST'] . '/gitlab/webhook/' . $project->getId();
|
$url = PHPCI_URL. 'webhook/gitlab/' . $project->getId();
|
||||||
print ' as a "WebHook URL" in the Web Hooks section of your Gitlab repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
print ' as a "WebHook URL" in the Web Hooks section of your Gitlab repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'bitbucket':
|
case 'bitbucket':
|
||||||
$url = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . '://' . $_SERVER['HTTP_HOST'] . '/bitbucket/webhook/' . $project->getId();
|
$url = PHPCI_URL . 'webhook/bitbucket/' . $project->getId();
|
||||||
print ' as a "POST" service in the <a href="https://bitbucket.org/' . $project->getReference() . '/admin/services">Services</a> section of your Bitbucket repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
print ' as a "POST" service in the <a href="https://bitbucket.org/' . $project->getReference() . '/admin/services">Services</a> section of your Bitbucket repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
64
composer.lock
generated
64
composer.lock
generated
|
@ -7,16 +7,16 @@
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "block8/b8framework",
|
"name": "block8/b8framework",
|
||||||
"version": "1.0.1",
|
"version": "1.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Block8/b8framework.git",
|
"url": "https://github.com/Block8/b8framework.git",
|
||||||
"reference": "0497ae34ba7ef828db23b35a1f75d4debfa7eed5"
|
"reference": "f643e0d3497599016cb62611ceb9288710423121"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Block8/b8framework/zipball/0497ae34ba7ef828db23b35a1f75d4debfa7eed5",
|
"url": "https://api.github.com/repos/Block8/b8framework/zipball/f643e0d3497599016cb62611ceb9288710423121",
|
||||||
"reference": "0497ae34ba7ef828db23b35a1f75d4debfa7eed5",
|
"reference": "f643e0d3497599016cb62611ceb9288710423121",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
"mvc",
|
"mvc",
|
||||||
"php"
|
"php"
|
||||||
],
|
],
|
||||||
"time": "2013-10-09 14:06:12"
|
"time": "2014-02-24 11:25:23"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ircmaxell/password-compat",
|
"name": "ircmaxell/password-compat",
|
||||||
|
@ -155,16 +155,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pimple/pimple",
|
"name": "pimple/pimple",
|
||||||
"version": "v1.1.0",
|
"version": "v1.1.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/fabpot/Pimple.git",
|
"url": "https://github.com/fabpot/Pimple.git",
|
||||||
"reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83"
|
"reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/fabpot/Pimple/zipball/471c7d7c52ad6594e17b8ec33efdd1be592b5d83",
|
"url": "https://api.github.com/repos/fabpot/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
|
||||||
"reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83",
|
"reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -188,7 +188,9 @@
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Fabien Potencier",
|
"name": "Fabien Potencier",
|
||||||
"email": "fabien@symfony.com"
|
"email": "fabien@symfony.com",
|
||||||
|
"homepage": "http://fabien.potencier.org",
|
||||||
|
"role": "Lead Developer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
|
"description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
|
||||||
|
@ -197,7 +199,7 @@
|
||||||
"container",
|
"container",
|
||||||
"dependency injection"
|
"dependency injection"
|
||||||
],
|
],
|
||||||
"time": "2013-09-19 04:53:08"
|
"time": "2013-11-22 08:30:29"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/log",
|
"name": "psr/log",
|
||||||
|
@ -288,17 +290,17 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v2.4.0",
|
"version": "v2.4.2",
|
||||||
"target-dir": "Symfony/Component/Console",
|
"target-dir": "Symfony/Component/Console",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/Console.git",
|
"url": "https://github.com/symfony/Console.git",
|
||||||
"reference": "3c1496ae96d24ccc6c340fcc25f71d7a1ab4c12c"
|
"reference": "940f217cbc3c8a33e5403e7c595495c4884400fe"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/Console/zipball/3c1496ae96d24ccc6c340fcc25f71d7a1ab4c12c",
|
"url": "https://api.github.com/repos/symfony/Console/zipball/940f217cbc3c8a33e5403e7c595495c4884400fe",
|
||||||
"reference": "3c1496ae96d24ccc6c340fcc25f71d7a1ab4c12c",
|
"reference": "940f217cbc3c8a33e5403e7c595495c4884400fe",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -328,7 +330,9 @@
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Fabien Potencier",
|
"name": "Fabien Potencier",
|
||||||
"email": "fabien@symfony.com"
|
"email": "fabien@symfony.com",
|
||||||
|
"homepage": "http://fabien.potencier.org",
|
||||||
|
"role": "Lead Developer"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Symfony Community",
|
"name": "Symfony Community",
|
||||||
|
@ -337,21 +341,21 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Console Component",
|
"description": "Symfony Console Component",
|
||||||
"homepage": "http://symfony.com",
|
"homepage": "http://symfony.com",
|
||||||
"time": "2013-11-27 09:10:40"
|
"time": "2014-02-11 13:52:09"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/yaml",
|
"name": "symfony/yaml",
|
||||||
"version": "v2.4.0",
|
"version": "v2.4.2",
|
||||||
"target-dir": "Symfony/Component/Yaml",
|
"target-dir": "Symfony/Component/Yaml",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/Yaml.git",
|
"url": "https://github.com/symfony/Yaml.git",
|
||||||
"reference": "1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5"
|
"reference": "bb6ddaf8956139d1b8c360b4b713ed0138e876b3"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5",
|
"url": "https://api.github.com/repos/symfony/Yaml/zipball/bb6ddaf8956139d1b8c360b4b713ed0138e876b3",
|
||||||
"reference": "1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5",
|
"reference": "bb6ddaf8956139d1b8c360b4b713ed0138e876b3",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -375,7 +379,9 @@
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Fabien Potencier",
|
"name": "Fabien Potencier",
|
||||||
"email": "fabien@symfony.com"
|
"email": "fabien@symfony.com",
|
||||||
|
"homepage": "http://fabien.potencier.org",
|
||||||
|
"role": "Lead Developer"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Symfony Community",
|
"name": "Symfony Community",
|
||||||
|
@ -384,22 +390,22 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Yaml Component",
|
"description": "Symfony Yaml Component",
|
||||||
"homepage": "http://symfony.com",
|
"homepage": "http://symfony.com",
|
||||||
"time": "2013-11-26 16:40:27"
|
"time": "2014-01-07 13:28:54"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "phpspec/prophecy",
|
"name": "phpspec/prophecy",
|
||||||
"version": "v1.0.4",
|
"version": "1.1.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpspec/prophecy.git",
|
"url": "https://github.com/phpspec/prophecy.git",
|
||||||
"reference": "79d9c8bd94801bffbf9b56964f6438762da6d8cd"
|
"reference": "976a65af02a2a0e17ce6c949f7b43437205628bb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/79d9c8bd94801bffbf9b56964f6438762da6d8cd",
|
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/976a65af02a2a0e17ce6c949f7b43437205628bb",
|
||||||
"reference": "79d9c8bd94801bffbf9b56964f6438762da6d8cd",
|
"reference": "976a65af02a2a0e17ce6c949f7b43437205628bb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
@ -408,7 +414,7 @@
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.0.x-dev"
|
"dev-master": "1.1.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -441,7 +447,7 @@
|
||||||
"spy",
|
"spy",
|
||||||
"stub"
|
"stub"
|
||||||
],
|
],
|
||||||
"time": "2013-08-10 11:11:45"
|
"time": "2014-01-24 11:03:43"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpspec/prophecy-phpunit",
|
"name": "phpspec/prophecy-phpunit",
|
||||||
|
|
Loading…
Reference in a new issue