Removed PollCommand.

This commit is contained in:
Dmitry Khomutov 2017-05-23 23:01:31 +07:00
parent d6821e84d5
commit 3a59b66d78
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9
2 changed files with 0 additions and 97 deletions

View file

@ -1,95 +0,0 @@
<?php
namespace PHPCensor\Command;
use b8\Store\Factory;
use b8\HttpClient;
use Monolog\Logger;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Yaml\Parser;
use PHPCensor\Model\Build;
/**
* Run console command - Poll github for latest commit id
*
* @author Jimmy Cleuren <jimmy.cleuren@gmail.com>
*/
class PollCommand extends Command
{
/**
* @var \Monolog\Logger
*/
protected $logger;
public function __construct(Logger $logger, $name = null)
{
parent::__construct($name);
$this->logger = $logger;
}
protected function configure()
{
$this
->setName('php-censor:poll-github')
->setDescription('Poll GitHub to check if we need to start a build.');
}
/**
* Pulls all pending builds from the database and runs them.
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$parser = new Parser();
$yaml = file_get_contents(APP_DIR . 'config.yml');
$this->settings = $parser->parse($yaml);
$token = $this->settings['php-censor']['github']['token'];
if (!$token) {
$this->logger->error('No GitHub token found');
return;
}
$buildStore = Factory::getStore('Build');
$this->logger->addInfo('Finding projects to poll');
$projectStore = Factory::getStore('Project');
$result = $projectStore->getWhere();
$this->logger->addInfo(sprintf('Found %d projects', count($result['items'])));
foreach ($result['items'] as $project) {
$http = new HttpClient('https://api.github.com');
$commits = $http->get('/repos/' . $project->getReference() . '/commits', ['access_token' => $token]);
$last_commit = $commits['body'][0]['sha'];
$last_committer = $commits['body'][0]['commit']['committer']['email'];
$message = $commits['body'][0]['commit']['message'];
$this->logger->info(sprintf('Last commit to GitHub for %s is %s', $project->getTitle(), $last_commit));
if (!$project->getArchived() && ($project->getLastCommit() != $last_commit && $last_commit != "")) {
$this->logger->info('Last commit is different to database, adding new build.');
$build = new Build();
$build->setProjectId($project->getId());
$build->setCommitId($last_commit);
$build->setStatus(Build::STATUS_PENDING);
$build->setBranch($project->getBranch());
$build->setCreated(new \DateTime());
$build->setCommitMessage($message);
if (!empty($last_committer)) {
$build->setCommitterEmail($last_committer);
}
$buildStore->save($build);
$project->setLastCommit($last_commit);
$projectStore->save($project);
}
}
$this->logger->addInfo('Finished processing builds.');
}
}

View file

@ -7,7 +7,6 @@ use b8\Store\Factory;
use PHPCensor\Command\CreateAdminCommand;
use PHPCensor\Command\CreateBuildCommand;
use PHPCensor\Command\InstallCommand;
use PHPCensor\Command\PollCommand;
use PHPCensor\Command\RebuildCommand;
use PHPCensor\Command\RebuildQueueCommand;
use PHPCensor\Command\RunCommand;
@ -105,7 +104,6 @@ class Application extends BaseApplication
$this->add(new RunCommand($loggerConfig->getFor('RunCommand')));
$this->add(new RebuildCommand($loggerConfig->getFor('RunCommand')));
$this->add(new InstallCommand());
$this->add(new PollCommand($loggerConfig->getFor('PollCommand')));
$this->add(new CreateAdminCommand($userStore));
$this->add(new CreateBuildCommand($projectStore, new BuildService($buildStore)));
$this->add(new WorkerCommand($loggerConfig->getFor('WorkerCommand')));