Updates to the daemon / run commands

This commit is contained in:
Dan Cryer 2014-12-03 13:28:40 +00:00
parent b91dafab41
commit 4511ba9d60
2 changed files with 19 additions and 3 deletions

View file

@ -76,6 +76,7 @@ class DaemoniseCommand extends Command
$this->sleep = 0;
$runner = new RunCommand($this->logger);
$runner->setMaxBuilds(1);
$runner->setIsDaemon(true);
$emptyInput = new ArgvInput(array());

View file

@ -48,6 +48,11 @@ class RunCommand extends Command
*/
protected $maxBuilds = null;
/**
* @var bool
*/
protected $isFromDaemon = false;
/**
* @param \Monolog\Logger $logger
* @param string $name
@ -90,13 +95,17 @@ class RunCommand extends Command
$builds = 0;
foreach ($result['items'] as $build) {
while (count($result['items'])) {
$build = array_shift($result['items']);
$build = BuildFactory::getBuild($build);
// Skip build (for now) if there's already a build running in that project:
if (in_array($build->getProjectId(), $running)) {
if (!$this->isFromDaemon && in_array($build->getProjectId(), $running)) {
$this->logger->addInfo('Skipping Build #'.$build->getId() . ' - Project build already in progress.');
$result['items'][] = $build;
// Re-run build validator:
$running = $this->validateRunningBuilds();
continue;
}
@ -133,6 +142,11 @@ class RunCommand extends Command
$this->maxBuilds = (int)$numBuilds;
}
public function setIsDaemon($fromDaemon)
{
$this->isFromDaemon = (bool)$fromDaemon;
}
protected function validateRunningBuilds()
{
/** @var \PHPCI\Store\BuildStore $store */
@ -152,6 +166,7 @@ class RunCommand extends Command
if (($now - $start) > $timeout) {
$this->logger->addInfo('Build #'.$build->getId().' marked as failed due to timeout.');
$build->setStatus(Build::STATUS_FAILED);
$build->setFinished(new \DateTime());
$store->save($build);
$this->removeBuildDirectory($build);
continue;