Ejemplo n.º 1
0
 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');
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
     }
 }
Ejemplo n.º 3
0
 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');
     }
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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');
     }
 }
Ejemplo n.º 6
0
 public function publish(Xinc_Build_Interface $build)
 {
     $statusBefore = $build->getStatus();
     $res = $this->plugin->email($build->getProject(), $this->_to, $this->_subject, $this->_message, $this->_from);
 }
Ejemplo n.º 7
0
 /**
  * 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());
     }
 }