示例#1
0
function setStatus(\NamelessCoder\Gizzle\Payload $payload, \Milo\Github\Api $api, $state, $buildNumber)
{
    $token = $api->getToken();
    $head = $payload->getHead();
    if (TRUE === empty($token) || TRUE === empty($head)) {
        return;
    }
    $url = sprintf('/repos/%s/%s/statuses/%s', $payload->getRepository()->getOwner()->getName(), $payload->getRepository()->getName(), $head->getId());
    switch ($state) {
        case 'pending':
            $description = 'Waiting to hear from Gizzle...';
            break;
        case 'success':
            $description = 'Gizzle build was successful!';
            break;
        case 'error':
            $description = 'Gizzle reported an error!';
            break;
        case 'failure':
            $description = 'Gizzle was unable to run the build!';
            break;
        default:
    }
    $data = array('state' => $state, 'target_url' => 'http://github.com/NamelessCoder/gizzle', 'context' => $payload->getRepository()->getFullName() . '-gizzle-build-' . $buildNumber, 'description' => $description);
    $api->post($url, $data);
}
 /**
  * Analyse $payload and return TRUE if this plugin should
  * be triggered in processing the payload.
  *
  * @param Payload $payload
  * @return boolean
  */
 public function trigger(Payload $payload)
 {
     $monitoredRepositoryNames = (array) $this->getSettingValue(self::OPTION_MONITORED, array());
     $defaultBranch = $payload->getRepository()->getMasterBranch();
     $isMonitored = TRUE === in_array($payload->getRepository()->getName(), $monitoredRepositoryNames);
     $matchesHead = 'refs/heads/' . $this->getSettingValue(self::OPTION_BRANCH, $defaultBranch) === $payload->getRef();
     $hasHead = NULL !== $payload->getHead();
     return $matchesHead && $isMonitored && $hasHead;
 }
 /**
  * Upload the extension contained in repository to
  * the official TYPO3 extension repository using
  * credentials stored in the .typo3credentials file
  * as a "username:password" value.
  *
  * @param Payload $payload
  * @return void
  * @throws \RuntimeException
  */
 public function process(Payload $payload)
 {
     $sha1 = $payload->getHead()->getId();
     $tag = substr($payload->getRef(), strlen(self::PATTERN_TAG_HEAD));
     $this->validateVersionNumber($tag);
     // additional settings not requiring validation.
     $url = $this->getSettingValue(self::OPTION_URL, $payload->getRepository()->resolveApiUrl(Repository::API_URL_CLONE));
     // look for an upload comment in settings; if not found there, use Payload HEAD's message body
     $comment = $this->getSettingValue(self::OPTION_COMMENT, $payload->getHead()->getMessage());
     // validation: credentials file and local directory path.
     $directory = $this->getSettingValue(self::OPTION_DIRECTORY);
     $directory = rtrim($directory, '/') . '/';
     $directory .= $sha1 . '/' . $this->getWorkingDirectoryName($payload);
     $credentialsFile = $this->getSettingValue(self::OPTION_CREDENTIALSFILE, GIZZLE_HOME . self::CREDENTIALS_FILE);
     $this->validateCredentialsFile($credentialsFile);
     list($username, $password) = $this->readUploadCredentials($credentialsFile);
     // initializing build directory and cloning source
     $clone = $this->getGitClonePlugin();
     $clonePluginSettings = $this->getSubPluginSettings('\\NamelessCoder\\GizzleGitPlugins\\GizzlePlugins\\ClonePlugin', array(ClonePlugin::OPTION_GITCOMMAND => $this->getSettingValue(self::OPTION_GITCOMMAND, ClonePlugin::DEFAULT_GITCOMMAND), ClonePlugin::OPTION_DIRECTORY => $directory, ClonePlugin::OPTION_SINGLE => TRUE, ClonePlugin::OPTION_BRANCH => $tag, ClonePlugin::OPTION_DEPTH => 1));
     $clone->initialize($clonePluginSettings);
     $this->createWorkingDirectory($directory);
     $this->validateDirectory($directory);
     $clone->process($payload);
     // a large, properly formatted data file.
     $comment = sprintf($comment, $url);
     try {
         $output = $this->getUploader()->upload($directory, $username, $password, $comment);
     } catch (\SoapFault $error) {
         throw new \RuntimeException($error->getMessage(), $error->getCode());
     }
     // cleanup and messages
     if (TRUE === (bool) $this->getSettingValue(self::OPTION_REMOVEBUILD, FALSE)) {
         $this->removeWorkingDirectory($this->getSettingValue(self::OPTION_DIRECTORY), $sha1);
     }
     $payload->getResponse()->addOutputFromPlugin($this, $output);
 }
示例#4
0
 /**
  * Place a comment using the configured comment plus
  * a dump of payload data from the Payload. Set the
  * comment for a pull request or commit as determined
  * by the OPTION_PULL_REQUEST and OPTION_COMMIT flags
  * (both of which are booleans).
  *
  * Both options can be set to TRUE, but if pull request
  * commenting is enabled, it takes priority. To comment
  * on the HEAD commit of a pull request, run this plugin
  * with only the OPTION_COMMIT flag.
  *
  * @param Payload $payload
  * @return void
  */
 public function process(Payload $payload)
 {
     $commentSetting = $this->getSetting(self::OPTION_COMMENT);
     if (FALSE === empty($commentSetting)) {
         $commentSetting .= PHP_EOL;
     }
     $errors = $payload->getResponse()->getErrors();
     $output = $payload->getResponse()->getOutput();
     $commentString = $commentSetting . $this->renderErrorsAsMarkupList($errors) . $this->renderPayloadDataAsMarkupList($output);
     $commentString = trim($commentString);
     if (TRUE === (bool) $this->getSettingValue(self::OPTION_PULL_REQUEST, FALSE)) {
         $payload->storePullRequestComment($payload->getPullRequest(), $commentString);
     } elseif (TRUE === (bool) $this->getSettingValue(self::OPTION_COMMIT, FALSE)) {
         $payload->storeCommitComment($payload->getHead(), $commentString);
     }
 }