diff --git a/module/compile/control.php b/module/compile/control.php index 6c77d2c51a..42eaf48b4f 100644 --- a/module/compile/control.php +++ b/module/compile/control.php @@ -22,7 +22,7 @@ class compile extends control public function __construct($moduleName = '', $methodName = '') { parent::__construct($moduleName, $methodName); - if($this->app->rawMethod != 'browse') $this->loadModel('ci')->setMenu(); + if(!in_array($this->app->rawMethod, array('browse', 'logs'))) $this->loadModel('ci')->setMenu(); } /** @@ -51,7 +51,14 @@ class compile extends control if($repoID || $jobID) $this->compile->syncCompile($repoID, $jobID); $this->app->loadLang('job'); - if($repoID) $this->ci->setMenu($repoID); + if($repoID) + { + $this->ci->setMenu($repoID); + } + else + { + $this->session->set('repoID', 0); + } $this->app->loadClass('pager', true); $pager = new pager($recTotal, $recPerPage, $pageID); @@ -78,6 +85,12 @@ class compile extends control */ public function logs($buildID) { + if($this->session->repoID) + { + $this->loadModel('ci')->setMenu(); + $this->view->repoID = $this->session->repoID; + } + $build = $this->compile->getByID($buildID); $job = $this->loadModel('job')->getByID($build->job); diff --git a/module/compile/model.php b/module/compile/model.php index afa46ecfa0..1944e45716 100644 --- a/module/compile/model.php +++ b/module/compile/model.php @@ -166,7 +166,10 @@ class compileModel extends model $userPWD = "$jenkinsUser:$jenkinsPassword"; $infoUrl = sprintf('%s/job/%s/api/xml?tree=builds[id,number,queueId]&xpath=//build[queueId=%s]', $jenkins->url, $job->pipeline, $compile->queue); - $response = common::http($infoUrl, '', array(CURLOPT_USERPWD => $userPWD)); + $result = common::http($infoUrl, '', array(CURLOPT_USERPWD => $userPWD), array(), 'data', 'POST', 30, true); + $response = $result['body']; + $httpCode = $result[1]; + if($httpCode == 404) return ''; if($response) { $buildInfo = simplexml_load_string($response); @@ -188,7 +191,9 @@ class compileModel extends model $this->loadModel('ci'); foreach($jobs as $gitlabJob) { - if(empty($gitlabJob->duration) or $gitlabJob->duration == '') $gitlabJob->duration = '-'; + if(!is_object($gitlabJob)) continue; + + if(empty($gitlabJob->duration)) $gitlabJob->duration = '-'; $logs .= ">>> Job: $gitlabJob->name, Stage: $gitlabJob->stage, Status: $gitlabJob->status, Duration: $gitlabJob->duration Sec\r\n "; $logs .= "Job URL: web_url\" target='_blank'>$gitlabJob->web_url \r\n"; $logs .= $this->ci->transformAnsiToHtml($this->gitlab->apiGetJobLog($job->server, $projectID, $gitlabJob->id));