public function publish(Xinc_Build_Interface $build) { /** * We only process on success. * Failed builds are not processed by this publisher */ if ($build->getStatus() != Xinc_Build_Interface::PASSED) { return; } /** * Only if we recovered from a previous failed build cycle */ $build->info('Last Build status: ' . $build->getLastBuild()->getStatus()); if ($build->getLastBuild()->getStatus() !== 0) { return; } $published = false; $build->info('Publishing with OnRecovery Publishers'); foreach ($this->arSubtasks as $task) { $published = true; $build->info('Publishing with OnRecovery Publisher: ' . get_class($task)); $task->publish($build); if ($build->getStatus() != Xinc_Build_Interface::PASSED) { $build->error('Error while publishing on Recovery. OnRecovery-Publish-Process stopped'); break; } } if (!$published) { $build->info('No Publishers registered for OnRecovery'); } }
/** * Calculates the next build timestamp * this is a build once scheduler * * @return integer */ public function getNextBuildTime(Xinc_Build_Interface $build) { if ($build->getLastBuild()->getBuildTime() == null && $build->getStatus() !== Xinc_Build_Interface::STOPPED) { if (!isset($this->nextBuildTime)) { $this->nextBuildTime = time(); } return $this->nextBuildTime; } else { return null; } }
public function publish(Xinc_Build_Interface $build) { /** * We only process on failure. * Successful builds are not processed by this publisher */ if ($build->getStatus() != Xinc_Build_Interface::FAILED) { return; } $published = false; $build->info('Publishing with OnFailure Publishers'); foreach ($this->arSubtasks as $task) { $published = true; $build->info('Publishing with OnFailure Publisher: ' . get_class($task)); $task->publish($build); } if (!$published) { $build->info('No Publishers registered OnFailure'); } }
public function getContent(Xinc_Build_Interface $build) { switch ($build->getStatus()) { case 1: $image = './images/passed.png'; break; case -1: $image = './images/stopped.png'; break; case 0: $image = './images/failed.png'; break; default: $image = './images/stopped.png'; break; } $overviewTemplateFile = Xinc_Data_Repository::getInstance()->getWeb('templates' . DIRECTORY_SEPARATOR . 'dashboard' . DIRECTORY_SEPARATOR . 'detail' . DIRECTORY_SEPARATOR . 'extension' . DIRECTORY_SEPARATOR . 'overview.phtml'); $overviewTemplate = file_get_contents($overviewTemplateFile); $content = call_user_func_array('sprintf', array($overviewTemplate, $image, date('Y-m-d H:i:s', $build->getBuildTime()) . '-' . Xinc_Timezone::get(), $build->getLabel(), $this->_generateAllExtensions($build))); return $content; }
public function publish(Xinc_Build_Interface $build) { /** * We only process on success. * Failed builds are not processed by this publisher */ if ($build->getStatus() != Xinc_Build_Interface::PASSED) { return; } $published = false; $build->info('Publishing with OnSuccess Publishers'); foreach ($this->arSubtasks as $task) { $published = true; $build->info('Publishing with OnSuccess Publisher: ' . get_class($task)); $task->publish($build); if ($build->getStatus() != Xinc_Build_Interface::PASSED) { $build->error('Error while publishing on Success. OnSuccess-Publish-Process stopped'); break; } } if (!$published) { $build->info('No Publishers registered OnSuccess'); } }
public function publish(Xinc_Build_Interface $build) { $statusBefore = $build->getStatus(); $res = $this->plugin->email($build->getProject(), $this->_to, $this->_subject, $this->_message, $this->_from); }
/** * Adds a build to the history file * * @param Xinc_Build_Interface $build * @param string $serialFileName * @throws Xinc_Build_History_Exception_General */ public static function addBuild(Xinc_Build_Interface &$build, $serialFileName) { $buildSuccess = $build->getStatus() == Xinc_Build_Interface::PASSED; $project = $build->getProject(); $metaFileArr = self::_loadMetaData($project->getName()); if (!isset($metaFileArr['meta'])) { self::_migrate($project->getName(), $metaFileArr); $metaFileArr = self::_loadMetaData($project->getName()); } if (count($metaFileArr['parts']) > 0) { $lastNo = count($metaFileArr['parts']) - 1; $lastPart = $metaFileArr['parts'][$lastNo]; $count = $lastPart['count']; if ($count >= self::PART_MAX) { $arr = array(); $arr[$build->getBuildTime()] = $serialFileName; try { $partFile = self::_writePartFile($project->getName(), $lastNo + 1, $arr); } catch (Xinc_Build_History_Exception_Storage $e1) { Xinc_Logger::getInstance()->error('Cannot write build history file for ' . $project->getName()); } $metaFileArr['parts'][] = array('no' => $lastNo + 1, 'count' => 1, 'filename' => $partFile, 'from' => $build->getBuildTime(), 'to' => $build->getBuildTime()); } else { $arr = self::_readPartFile($project->getName(), $lastNo); $arr[$build->getBuildTime()] = $serialFileName; $metaFileArr['parts'][$lastNo]['count']++; $metaFileArr['parts'][$lastNo]['to'] = $build->getBuildTime(); try { self::_writePartFile($project->getName(), $lastNo, $arr); } catch (Xinc_Build_History_Exception_Storage $e1) { Xinc_Logger::getInstance()->error('Cannot write build history file for ' . $project->getName()); } } } else { $arr = array(); $arr[$build->getBuildTime()] = $serialFileName; try { $partFile = self::_writePartFile($project->getName(), 0, $arr); } catch (Xinc_Build_History_Exception_Storage $e1) { Xinc_Logger::getInstance()->error('Cannot write build history file for ' . $project->getName()); $partFile = null; } $metaFileArr['parts'][] = array('no' => 0, 'count' => 1, 'filename' => $partFile, 'from' => $build->getBuildTime(), 'to' => $build->getBuildTime()); } try { $metaFileArr['lastSuccessfulBuild'] = array('filename' => $serialFileName, 'buildtime' => $build->getBuildTime()); self::_writeMetaData($project->getName(), $metaFileArr); } catch (Exception $e) { Xinc_Logger::getInstance()->error($e->getMessage() . '; Project: ' . $project->getName()); } }