示例#1
0
 /**
  * @param Dispatcher $bus
  * @throws \Exception
  */
 public function handle(Dispatcher $bus)
 {
     try {
         if ($this->release->isCancelled()) {
             return;
         }
         $this->release->update(['status' => Release::PREPARING]);
         $this->release->logger()->comment("Preparing release...");
         $this->prepareReleaseDir();
         $this->createArchive();
         $this->extractArchive();
         $this->writePlaybooks();
         if ($this->release->isCancelled()) {
             return;
         }
         if ($this->sync) {
             $bus->dispatchNow(new PlaybookJob($this->release));
             $bus->dispatchNow(new CleanupReleasesJob($this->release->repo));
         } else {
             $bus->dispatch(new PlaybookJob($this->release));
             $bus->dispatch(new CleanupReleasesJob($this->release->repo));
         }
     } catch (\Exception $e) {
         $this->release->update(['status' => Release::ERROR, 'raw_logs' => $e->getMessage()]);
         $this->release->logger()->push();
         throw $e;
     }
 }
示例#2
0
 /**
  * @param Process $process
  * @return callable
  */
 public function updateRelease(Process $process)
 {
     $out = $process->getIncrementalOutput() . $process->getIncrementalErrorOutput();
     $this->release->update(['raw_log' => $process->getOutput() . PHP_EOL . $process->getErrorOutput()]);
     if (!empty($out)) {
         $this->release->logger()->info($out);
     }
 }
示例#3
0
 public function update(Release $release, Request $request)
 {
     switch ($request->get('status')) {
         case Release::QUEUED:
             if (!$release->status == Release::ERROR) {
                 return response()->json(['error' => 'Cannot retry!'], 422);
             }
             $release->update(['status' => Release::QUEUED]);
             $this->dispatch(new PrepareReleaseJob($release));
             break;
         case Release::CANCELLED:
             if (!$release->isCancellable()) {
                 return response()->json(['error' => 'Cannot cancel!'], 422);
             }
             $release->update(['status' => Release::CANCELLED]);
             break;
     }
     return $release;
 }
示例#4
0
 /**
  * @param Pusher $pusher
  * @throws \Exception
  */
 public function handle(Pusher $pusher)
 {
     try {
         if ($this->release->isCancelled()) {
             return;
         }
         $this->release->update(['status' => Release::PREPARING]);
         $pusher->trigger(['releases'], "release-" . $this->release->id, $this->release->toArray());
         $this->prepareReleaseDir();
         $this->createArchive();
         $this->extractArchive();
         $this->writePlaybooks();
         if ($this->release->isCancelled()) {
             return;
         }
         $this->dispatch(new PlaybookJob($this->release));
         $this->dispatch(new CleanupReleasesJob($this->release->repo));
     } catch (\Exception $e) {
         $this->release->update(['status' => Release::ERROR, 'raw_logs' => $e->getMessage()]);
         $pusher->trigger(['releases'], "release-" . $this->release->id, $this->release->toArray());
         throw $e;
     }
 }
示例#5
0
 /**
  * @param Process $process
  * @return callable
  */
 public function updateRelease(Process $process)
 {
     $this->release->update(['raw_log' => $process->getOutput() . PHP_EOL . $process->getErrorOutput()]);
 }