diff --git a/.phpci.yml b/.phpci.yml index d6ea0921..b4fd52ec 100644 --- a/.phpci.yml +++ b/.phpci.yml @@ -13,6 +13,7 @@ build_settings: setup: composer: action: "install" + prefer_dist: false test: php_parallel_lint: diff --git a/PHPCI/Builder.php b/PHPCI/Builder.php index 1aed3d3f..0edc44d8 100644 --- a/PHPCI/Builder.php +++ b/PHPCI/Builder.php @@ -213,6 +213,8 @@ class Builder implements LoggerAwareInterface $this->build->setStatus(Build::STATUS_FAILED); } + // Complete stage plugins are always run + $this->pluginExecutor->executePlugins($this->config, 'complete'); if ($success) { $this->pluginExecutor->executePlugins($this->config, 'success'); @@ -234,9 +236,6 @@ class Builder implements LoggerAwareInterface } catch (\Exception $ex) { $this->build->setStatus(Build::STATUS_FAILED); $this->buildLogger->logFailure(Lang::get('exception') . $ex->getMessage()); - }finally{ - // Complete stage plugins are always run - $this->pluginExecutor->executePlugins($this->config, 'complete'); } diff --git a/PHPCI/Command/InstallCommand.php b/PHPCI/Command/InstallCommand.php index 5f5cbd67..318871a5 100644 --- a/PHPCI/Command/InstallCommand.php +++ b/PHPCI/Command/InstallCommand.php @@ -21,7 +21,6 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use PHPCI\Service\UserService; -use Symfony\Component\Console\Question\ConfirmationQuestion; /** * Install console command - Installs PHPCI. @@ -254,14 +253,6 @@ class InstallCommand extends Command $rtn = []; - $helper = $this->getHelper('question'); - $question = new ConfirmationQuestion('Use beanstalkd to manage build queue? ', true); - - if (!$helper->ask($input, $output, $question)) { - $output->writeln('Skipping beanstalkd configuration.'); - return null; - } - if (!$rtn['host'] = $input->getOption('queue-server')) { $rtn['host'] = $dialog->ask($output, 'Enter your beanstalkd hostname [localhost]: ', 'localhost'); } diff --git a/PHPCI/Command/WorkerCommand.php b/PHPCI/Command/WorkerCommand.php index 5ceb6a84..49685656 100644 --- a/PHPCI/Command/WorkerCommand.php +++ b/PHPCI/Command/WorkerCommand.php @@ -50,8 +50,7 @@ class WorkerCommand extends Command { $this ->setName('phpci:worker') - ->setDescription('Runs the PHPCI build worker.') - ->addOption('debug', null, null, 'Run PHPCI in Debug Mode'); + ->setDescription('Runs the PHPCI build worker.'); } protected function execute(InputInterface $input, OutputInterface $output) @@ -66,12 +65,6 @@ class WorkerCommand extends Command ); } - // Allow PHPCI to run in "debug mode" - if ($input->hasOption('debug') && $input->getOption('debug')) { - $output->writeln('Debug mode enabled.'); - define('PHPCI_DEBUG_MODE', true); - } - $config = Config::getInstance()->get('phpci.worker', []); if (empty($config['host']) || empty($config['queue'])) { diff --git a/PHPCI/Controller/BuildController.php b/PHPCI/Controller/BuildController.php index 55ccbb37..f68a739c 100644 --- a/PHPCI/Controller/BuildController.php +++ b/PHPCI/Controller/BuildController.php @@ -180,7 +180,7 @@ class BuildController extends \PHPCI\Controller $errorView->build = $build; $errorView->errors = $errors; - $data['errors'] = $errorStore->getErrorTotalForBuild($build->getId()); + $data['errors'] = count($errors); $data['error_html'] = $errorView->render(); $data['since'] = (new \DateTime())->format('Y-m-d H:i:s'); @@ -200,10 +200,6 @@ class BuildController extends \PHPCI\Controller $build = $this->buildService->createDuplicateBuild($copy); - if ($this->buildService->queueError) { - $_SESSION['global_error'] = Lang::get('add_to_queue_failed'); - } - $response = new b8\Http\Response\RedirectResponse(); $response->setHeader('Location', PHPCI_URL.'build/view/' . $build->getId()); return $response; diff --git a/PHPCI/Controller/ProjectController.php b/PHPCI/Controller/ProjectController.php index 72be46e5..be5dee19 100644 --- a/PHPCI/Controller/ProjectController.php +++ b/PHPCI/Controller/ProjectController.php @@ -116,10 +116,6 @@ class ProjectController extends PHPCI\Controller $email = $_SESSION['phpci_user']->getEmail(); $build = $this->buildService->createBuild($project, null, urldecode($branch), $email); - if ($this->buildService->queueError) { - $_SESSION['global_error'] = Lang::get('add_to_queue_failed'); - } - $response = new b8\Http\Response\RedirectResponse(); $response->setHeader('Location', PHPCI_URL.'build/view/' . $build->getId()); return $response; diff --git a/PHPCI/Controller/WebhookController.php b/PHPCI/Controller/WebhookController.php index 4b444d03..b43bd1cd 100644 --- a/PHPCI/Controller/WebhookController.php +++ b/PHPCI/Controller/WebhookController.php @@ -27,8 +27,6 @@ use PHPCI\Store\ProjectStore; * @author Guillaume Perréal * @package PHPCI * @subpackage Web - * - * @SuppressWarnings(PHPMD.ExcessiveClassComplexity) */ class WebhookController extends \b8\Controller { diff --git a/PHPCI/Helper/BaseCommandExecutor.php b/PHPCI/Helper/BaseCommandExecutor.php index b3b47f7b..bd948834 100644 --- a/PHPCI/Helper/BaseCommandExecutor.php +++ b/PHPCI/Helper/BaseCommandExecutor.php @@ -76,7 +76,6 @@ abstract class BaseCommandExecutor implements CommandExecutor $this->lastOutput = array(); $command = call_user_func_array('sprintf', $args); - $this->logger->logDebug($command); if ($this->quiet) { $this->logger->log('Executing: ' . $command); @@ -90,6 +89,7 @@ abstract class BaseCommandExecutor implements CommandExecutor ); $pipes = array(); + $process = proc_open($command, $descriptorSpec, $pipes, $this->buildPath, null); if (is_resource($process)) { diff --git a/PHPCI/Languages/lang.en.php b/PHPCI/Languages/lang.en.php index 63df75d2..eec2ee07 100644 --- a/PHPCI/Languages/lang.en.php +++ b/PHPCI/Languages/lang.en.php @@ -372,9 +372,6 @@ PHPCI', 'project_id_argument' => 'A project ID', 'commit_id_option' => 'Commit ID to build', 'branch_name_option' => 'Branch to build', - 'add_to_queue_failed' => 'Build created successfully, but failed to add to build queue. This usually happens - when PHPCI is set to use a beanstalkd server that does not exist, - or your beanstalkd server has stopped.', // Run Command 'run_all_pending' => 'Run all pending PHPCI builds.', diff --git a/PHPCI/Logging/BuildLogger.php b/PHPCI/Logging/BuildLogger.php index a68e9e6d..73f3b464 100644 --- a/PHPCI/Logging/BuildLogger.php +++ b/PHPCI/Logging/BuildLogger.php @@ -67,7 +67,7 @@ class BuildLogger implements LoggerAwareInterface } } - /** + /** * Add a success-coloured message to the log. * @param string */ @@ -98,17 +98,6 @@ class BuildLogger implements LoggerAwareInterface ); } - /** - * Add a debug message to the log. - * @param string - */ - public function logDebug($message) - { - if (defined('PHPCI_DEBUG_MODE') && PHPCI_DEBUG_MODE) { - $this->log("\033[0;33m" . $message . "\033[0m"); - } - } - /** * Sets a logger instance on the object * diff --git a/PHPCI/Migrations/20160623100223_project_table_defaults.php b/PHPCI/Migrations/20160623100223_project_table_defaults.php deleted file mode 100644 index 079db327..00000000 --- a/PHPCI/Migrations/20160623100223_project_table_defaults.php +++ /dev/null @@ -1,18 +0,0 @@ -table('project') - ->changeColumn('build_config', MysqlAdapter::PHINX_TYPE_TEXT, array('null' => true)) - ->changeColumn('archived', MysqlAdapter::PHINX_TYPE_INTEGER, array( - 'length' => MysqlAdapter::INT_TINY, - 'default' => 0, - )) - ->save(); - } -} diff --git a/PHPCI/Model/Project.php b/PHPCI/Model/Project.php index 4b5268b2..717b0d9a 100644 --- a/PHPCI/Model/Project.php +++ b/PHPCI/Model/Project.php @@ -96,7 +96,7 @@ class Project extends ProjectBase $info = $this->data['access_information']; // Handle old-format (serialized) access information first: - if (!empty($info) && !in_array(substr($info, 0, 1), array('{', '['))) { + if (!empty($info) && substr($info, 0, 1) != '{') { $data = unserialize($info); } else { $data = json_decode($info, true); diff --git a/PHPCI/Plugin/Composer.php b/PHPCI/Plugin/Composer.php index 7bd86ac3..bd5f6658 100644 --- a/PHPCI/Plugin/Composer.php +++ b/PHPCI/Plugin/Composer.php @@ -61,7 +61,6 @@ class Composer implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin $this->directory = $path; $this->action = 'install'; $this->preferDist = false; - $this->preferSource = false; $this->nodev = false; if (array_key_exists('directory', $options)) { @@ -76,11 +75,6 @@ class Composer implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin $this->preferDist = (bool)$options['prefer_dist']; } - if (array_key_exists('prefer_source', $options)) { - $this->preferDist = false; - $this->preferSource = (bool)$options['prefer_source']; - } - if (array_key_exists('no_dev', $options)) { $this->nodev = (bool)$options['no_dev']; } @@ -103,12 +97,10 @@ class Composer implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin if ($this->preferDist) { $this->phpci->log('Using --prefer-dist flag'); - $cmd .= ' --prefer-dist'; - } - - if ($this->preferSource) { + $cmd .= '--prefer-dist'; + } else { $this->phpci->log('Using --prefer-source flag'); - $cmd .= ' --prefer-source'; + $cmd .= '--prefer-source'; } if ($this->nodev) { diff --git a/PHPCI/Plugin/PhpCpd.php b/PHPCI/Plugin/PhpCpd.php old mode 100755 new mode 100644 index aa076d2d..2424d41e --- a/PHPCI/Plugin/PhpCpd.php +++ b/PHPCI/Plugin/PhpCpd.php @@ -50,12 +50,17 @@ class PhpCpd implements \PHPCI\Plugin $this->build = $build; $this->path = $phpci->buildPath; + $this->standard = 'PSR1'; $this->ignore = $phpci->ignore; if (!empty($options['path'])) { $this->path = $phpci->buildPath . $options['path']; } + if (!empty($options['standard'])) { + $this->standard = $options['standard']; + } + if (!empty($options['ignore'])) { $this->ignore = $options['ignore']; } diff --git a/PHPCI/Plugin/Util/TestResultParsers/Codeception.php b/PHPCI/Plugin/Util/TestResultParsers/Codeception.php index 24af62e4..39f28666 100644 --- a/PHPCI/Plugin/Util/TestResultParsers/Codeception.php +++ b/PHPCI/Plugin/Util/TestResultParsers/Codeception.php @@ -30,6 +30,7 @@ class Codeception implements ParserInterface { $this->phpci = $phpci; $this->resultsXml = $resultsXml; + $this->totalTests = 0; } @@ -70,7 +71,7 @@ class Codeception implements ParserInterface if (isset($testcase->failure) || isset($testcase->error)) { $testresult['pass'] = false; - $testresult['message'] = (string)$testcase->failure . (string)$testcase->error; + $testresult['message'] = isset($testcase->failure) ? (string) $testcase->failure : (string) $testcase->error; } else { $testresult['pass'] = true; } diff --git a/PHPCI/Service/BuildService.php b/PHPCI/Service/BuildService.php index a120a64e..dca0fc0d 100644 --- a/PHPCI/Service/BuildService.php +++ b/PHPCI/Service/BuildService.php @@ -30,11 +30,6 @@ class BuildService */ protected $buildStore; - /** - * @var bool - */ - public $queueError = false; - /** * @param BuildStore $buildStore */ @@ -160,30 +155,27 @@ class BuildService } $config = Config::getInstance(); + $settings = $config->get('phpci.worker', []); if (!empty($settings['host']) && !empty($settings['queue'])) { - try { - $jobData = array( - 'type' => 'phpci.build', - 'build_id' => $build->getId(), - ); + $jobData = array( + 'type' => 'phpci.build', + 'build_id' => $build->getId(), + ); - if ($config->get('using_custom_file')) { - $jobData['config'] = $config->getArray(); - } - - $pheanstalk = new Pheanstalk($settings['host']); - $pheanstalk->useTube($settings['queue']); - $pheanstalk->put( - json_encode($jobData), - PheanstalkInterface::DEFAULT_PRIORITY, - PheanstalkInterface::DEFAULT_DELAY, - $config->get('phpci.worker.job_timeout', 600) - ); - } catch (\Exception $ex) { - $this->queueError = true; + if ($config->get('using_custom_file')) { + $jobData['config'] = $config->getArray(); } + + $pheanstalk = new Pheanstalk($settings['host']); + $pheanstalk->useTube($settings['queue']); + $pheanstalk->put( + json_encode($jobData), + PheanstalkInterface::DEFAULT_PRIORITY, + PheanstalkInterface::DEFAULT_DELAY, + $config->get('phpci.worker.job_timeout', 600) + ); } } } diff --git a/PHPCI/Store/BuildErrorStore.php b/PHPCI/Store/BuildErrorStore.php index c2d32468..815a4d18 100644 --- a/PHPCI/Store/BuildErrorStore.php +++ b/PHPCI/Store/BuildErrorStore.php @@ -54,27 +54,4 @@ class BuildErrorStore extends BuildErrorStoreBase return array(); } } - - /** - * Gets the total number of errors for a given build. - * @param $buildId - * @param string $since date string - * @return array - */ - public function getErrorTotalForBuild($buildId) - { - $query = 'SELECT COUNT(*) AS total FROM build_error - WHERE build_id = :build'; - - $stmt = Database::getConnection('read')->prepare($query); - - $stmt->bindValue(':build', $buildId, \PDO::PARAM_INT); - - if ($stmt->execute()) { - $res = $stmt->fetch(\PDO::FETCH_ASSOC); - return $res['total']; - } else { - return array(); - } - } } diff --git a/PHPCI/View/layout.phtml b/PHPCI/View/layout.phtml index 1960aff6..2e105c18 100644 --- a/PHPCI/View/layout.phtml +++ b/PHPCI/View/layout.phtml @@ -292,14 +292,6 @@
- ' . $message . ''; - } - ?> -
diff --git a/README.md b/README.md index 77683b91..910e15f7 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,6 @@ PHPCI is a free and open source (BSD License) continuous integration tool specif We have a chat room for discussing PHPCI, you can access it here: [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Block8/PHPCI?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge) -**Support the development of PHPCI** - -We [now accept donations](https://www.phptesting.org/support) to directly support the ongoing development of PHPCI. There is of course no obligation to donate, nor any commitment if you do. - -[Donate](https://www.phptesting.org/support) - ## What it does: * Clones your project from Github, Bitbucket or a local path * Allows you to set up and tear down test databases.