Example #1
0
 /**
  * @param Project $project
  * @return array|\Gitlab\Model\Project|null
  */
 public function createProject(Project $project)
 {
     // Fast Return in case of server stopped
     if (!$this->isServerAvailable()) {
         return null;
     }
     // Creating project
     $gitLabProject = \Gitlab\Model\Project::create($this->gitLabClient, $project->getName(), array('description' => $project->getDescription(), 'issue_enabled' => $project->isGitLabIssueEnabled(), 'wiki_enabled' => $project->isGitLabWikiEnabled(), 'snippets_enabled' => $project->isGitLabSnippetsEnabled(), 'builds_enabled' => false));
     // returning created object
     return $gitLabProject;
 }
Example #2
0
 /**
  * Process CI deletion
  * @param Project $project
  * @return mixed
  */
 protected function processCIProjectDeletion(Project $project)
 {
     $returnValues['slot_name'] = 'CI';
     // Delete Jobs
     // Get all CI pipelines for a project
     $pipelines = $this->em->getRepository('SpiritDevDBoxPortalBundle:ContinuousIntegration')->findBy(array('project' => $project->getId()));
     // For each pipeline
     $pipelinesDeletion = array();
     foreach ($pipelines as $pipeline) {
         // Delete job
         $jenkins_job_deletion = $this->jenkinsApi->deleteJob($pipeline->getCiName());
         $pipelinesDeletion[] = array('key' => $pipeline->getCiName(), 'data' => $jenkins_job_deletion);
     }
     $returnValues['data'][] = $this->setRetVal('CI Job deletion', 'array_with_sub_key', $pipelinesDeletion);
     // Delete view
     try {
         $jenkins_view_deletion = $this->jenkinsApi->deleteView($project->getName());
         $returnValues['data'][] = $this->setRetVal('CI View deletion', 'bool', $jenkins_view_deletion);
     } catch (\Exception $e) {
         $returnValues['data'][] = $this->setRetVal('CI View deletion', 'bool', false);
     }
     return $returnValues;
 }
Example #3
0
 /**
  * Send mail to project memebers to apply a project deletion
  *  To project team
  * @param Project $project
  * @return mixed
  */
 public function processProjectDeletionSendMail(Project $project)
 {
     // Define necessary vars
     $template = "SpiritDevDBoxPortalBundle:Mailer/Project:projectDeletion.html.twig";
     // Template
     $subject = $this->getSubject('Project deletion - ' . $project->getName());
     // Subject
     $renderingDatas = array('project' => $project);
     // Template rendering datas
     // Send mail(s) effectively
     foreach ($project->getTeamMembers() as $user) {
         $renderingDatas['firstname'] = $user->getFirstname();
         $renderingDatas['lastname'] = $user->getLastname();
         $rendered = $this->templating->render($template, $renderingDatas);
         // Template rendering
         $this->sendEmailMessage($rendered, $subject, $user->getEmail());
     }
 }
Example #4
0
 /**
  * Update project
  * @param Project $project
  * @return mixed
  */
 public function updateProject(Project $project)
 {
     // Fast Return in case of server stopped
     if (!$this->serverAvailable) {
         return null;
     }
     $xml = new \SimpleXMLElement('<?xml version="1.0"?><project></project>');
     $xml->addChild('name', $project->getName());
     $xml->addChild('identifier', $this->defineIdentifier($project->getName()));
     $xml->addChild('description', $project->getDescription());
     $xml->addChild('homepage', $this->defineHomepage($project->getName()));
     $xml->addChild('is_public', 'false');
     // Adding modules
     foreach ($this->pmModules as $pmModule) {
         $xml->addChild('enabled_module_names', $pmModule);
     }
     return $this->sendRequest("/projects/" . $project->getRedmineProjectId() . ".xml", $xml->asXML(), 'PUT', array('Content-Type: text/xml'), true, array(CURLOPT_VERBOSE => 0, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1));
 }
Example #5
0
 /**
  * Create project
  * @param Project $project
  * @return mixed
  */
 public function createProject(Project $project)
 {
     // Fast Return in case of server stopped
     if (!$this->serverAvailable) {
         return null;
     }
     try {
         return $this->sonarClient->api('projects')->create(array("key" => $project->getCanonicalName(), "name" => $project->getName(), "branch" => 'dev'));
     } catch (\Exception $e) {
         return null;
     }
 }
 /**
  * Setting demand content
  * @param Project $project
  * @return array
  */
 private function setContentData(Project $project)
 {
     $owner = $project->getOwner()->getCommonName();
     $teamMembersArray = "";
     $teamMembers = $project->getTeamMembers();
     $tml = count($teamMembers);
     $tmc = 1;
     foreach ($teamMembers as $member) {
         $teamMembersArray .= $member->getCommonName();
         if ($tmc < $tml) {
             $teamMembersArray .= ", ";
         }
         $tmc++;
     }
     return ["name" => $project->getName(), "description" => $project->getDescription(), "owner" => $owner, "team_members" => $teamMembersArray, "git_issues" => $project->isGitLabIssueEnabled(), "git_wiki" => $project->isGitLabWikiEnabled(), "git_snippets" => $project->isGitLabSnippetsEnabled(), "id" => $project->getId()];
 }