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'); } }
public function process(Xinc_Build_Interface $build) { $build->info('Processing publishers'); foreach ($this->arSubtasks as $task) { $task->publish($build); } $build->info('Processing publishers done'); //$project->setStatus(Xinc_Project_Build_Status_Interface::STOPPED); }
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 process(Xinc_Build_Interface $build) { $build->info('Processing builders'); foreach ($this->arSubtasks as $task) { $task->process($build); if ($build->getStatus() != Xinc_Build_Interface::PASSED) { $build->error('Build FAILED '); return; } } $build->info('Processing builders done'); //$project->setStatus(Xinc_Build_Interface::STOPPED); }
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 process(Xinc_Build_Interface $build) { if ($this->_if !== null) { /** * If we have a condition, we need to check */ $property = $build->getProperties()->get($this->_if); if ($property !== true) { $build->info('Property: ' . $this->_name . ' does not apply, ' . $this->_if . ' == false'); $build->setStatus(Xinc_Build_Interface::PASSED); return; } } if (isset($this->_file)) { if (file_exists($this->_file)) { $build->info('Reading property file: ' . $this->_file); $this->plugin->parsePropertyFile($build, $this->_file); } else { if (strstr($this->_file, '${')) { // not substituted yet, will not use it } else { $build->error('Cannot read property file: ' . $this->_file); } } } else { $build->debug('Setting property "${' . $this->_name . '}" to "' . $this->_value . '"'); $build->getProperties()->set($this->_name, $this->_value); $build->setStatus(Xinc_Build_Interface::PASSED); } }
public function checkModified(Xinc_Build_Interface $build, $dir, $prefix, $switch = false, $svnFolderProperty = null) { $modResult = new Xinc_Plugin_Repos_ModificationSet_Result(); if (!file_exists($dir)) { $build->error('Subversion checkout directory not present'); $modResult->setStatus(Xinc_Plugin_Repos_ModificationSet_AbstractTask::ERROR); return $modResult; } $cwd = getcwd(); chdir($dir); $output = ''; $result = 9; exec($this->_svnPath . ' info', $output, $result); $found = false; if ($result == 0) { $localSet = implode("\n", $output); $localRev = $this->getRevision($localSet); $remoteRev = 0; $url = $this->getRootURL(); $output = ''; $result = 9; exec($this->_svnPath . ' ls --xml ' . $url . '/' . $this->_getSvnSubDir(), $output, $result); $remoteSet = implode("\n", $output); if ($result != 0) { $build->setStatus(Xinc_Build_Interface::FAILED); $build->error('Problem with remote Subversion repository'); $modResult->setStatus(Xinc_Plugin_Repos_ModificationSet_AbstractTask::ERROR); return $modResult; } $xml = new SimplexmlElement($remoteSet); foreach ($xml->list as $i => $list) { foreach ($list->entry as $entry) { if (substr($entry->name, 0, strlen($prefix)) != $prefix && !preg_match('/' . $prefix . '/', $entry->name)) { continue; } $attributes = $entry->attributes(); if (strtolower((string) $attributes['kind']) != 'dir') { continue; } $attributes = $entry->commit->attributes(); $rev = (int) $attributes->revision; if ($rev > $localRev) { $tagName = (string) $entry->name; if ($svnFolderProperty != null) { $build->getProperties()->set($svnFolderProperty, $tagName); } // switch to the latest release if ($switch) { exec($this->_svnPath . ' switch ' . $url . '/' . $this->_getSvnSubDir() . '/' . $tagName, $switchOut, $switchRes); if ($switchRes != 0) { $build->error('Could not switch to tag :' . $tagName . ', result:' . implode("\n", $switchOut)); $build->setStatus(Xinc_Build_Interface::FAILED); $modResult->setStatus(Xinc_Plugin_Repos_ModificationSet_AbstractTask::FAILED); return $modResult; } } $remoteRev = $rev; $found = true; } } } if ($remoteRev <= 0) { $build->info('Subversion checkout dir is ' . $dir . ' ' . 'local revision @ ' . $localRev . ' ' . 'No remote revision with matching tag prefix (' . $prefix . ')'); } else { $build->info('Subversion checkout dir is ' . $dir . ' ' . 'local revision @ ' . $localRev . ' ' . 'Last remote revision with matching tag prefix @ ' . $remoteRev . ' (' . $prefix . ')'); } chdir($cwd); $modResult->setLocalRevision($localRev); $modResult->setRemoteRevision($remoteRev); if ($modResult->isChanged()) { $modResult->setStatus(Xinc_Plugin_Repos_ModificationSet_AbstractTask::CHANGED); } return $modResult; } else { chdir($cwd); throw new Xinc_Exception_ModificationSet('Subversion checkout directory ' . 'is not a working copy.'); } }
/** * The parent builder task will call this method * * @param Xinc_Build_Interface $build * * @return boolean */ public function build(Xinc_Build_Interface $build) { if ($this->_if !== null) { $build->info('Checking condidition property: ' . $this->_if); $ifProp = $build->getProperties()->get($this->_if); if ($ifProp === true) { $build->info('--' . $this->_if . ' == true --> building'); return $this->plugin->build($build, $this->_buildFile, $this->_target, $this->_params, $this->_workingDir); } else { $build->info('--' . $this->_if . ' == false --> not building'); return true; } } else { return $this->plugin->build($build, $this->_buildFile, $this->_target, $this->_params, $this->_workingDir); } }