/** * Create an instance of DeployStep and a ServerLog entry for each server which can have code deployed. * * @param int $stage * @return void */ private function createDeployStep($stage) { $step = DeployStep::create(['stage' => $stage, 'deployment_id' => $this->deployment->id]); foreach ($this->project->servers as $server) { // If command is null it is preparing one of the 4 default steps so // skip servers which shouldn't have the code deployed if (!$server->deploy_code) { continue; } ServerLog::create(['server_id' => $server->id, 'deploy_step_id' => $step->id]); } }
/** * Generates the list of tokens for the scripts. * * @param DeployStep $step * @param Server $server * * @return array */ private function getTokenList(DeployStep $step, Server $server) { $releases_dir = $server->clean_path . '/releases'; $latest_release_dir = $releases_dir . '/' . $this->deployment->release_id; $release_shared_dir = $server->clean_path . '/shared'; $remote_archive = $server->clean_path . '/' . $this->release_archive; // Set the deployer tags $deployer_email = ''; $deployer_name = 'webhook'; if ($this->deployment->user) { $deployer_name = $this->deployment->user->name; $deployer_email = $this->deployment->user->email; } elseif ($this->deployment->is_webhook && !empty($this->deployment->source)) { $deployer_name = $this->deployment->source; } $tokens = ['release' => $this->deployment->release_id, 'release_path' => $latest_release_dir, 'project_path' => $server->clean_path, 'branch' => $this->deployment->branch, 'sha' => $this->deployment->commit, 'short_sha' => $this->deployment->short_commit, 'deployer_email' => $deployer_email, 'deployer_name' => $deployer_name, 'committer_email' => $this->deployment->committer_email, 'committer_name' => $this->deployment->committer]; if (!$step->isCustom()) { $tokens = array_merge($tokens, ['remote_archive' => $remote_archive, 'include_dev' => $this->deployment->project->include_dev, 'builds_to_keep' => $this->deployment->project->builds_to_keep + 1, 'shared_path' => $release_shared_dir, 'releases_path' => $releases_dir]); } return $tokens; }