/** * @return string */ protected function getLogPath() { if (!isset($this->options[EventJournalConstants::OPTION_LOG_PATH])) { return DataDirectory::getLocalCommonPath('event_journal'); } return $this->options[EventJournalConstants::OPTION_LOG_PATH]; }
/** * @throws \ErrorException * * @return void */ public function generateAction() { require implode(DIRECTORY_SEPARATOR, [APPLICATION_ROOT_DIR, 'config', 'Zed', 'cronjobs', 'jobs.php']); $jobs_dir = DataDirectory::getLocalCommonPath('/jenkins/jobs/'); $roles = $this->getRoles(); if ($roles === false) { $roles = [self::DEFAULT_ROLE]; } foreach ($roles as $role) { if (!in_array($role, $this->allowedRoles)) { throw new \ErrorException($role . ' is not in the list of allowed roles! Cannot continue configuration of jenkins!'); } } $job_by_name = []; foreach ($jobs as $v) { if (array_key_exists('role', $v) && in_array($v['role'], $this->allowedRoles)) { $jobRole = $v['role']; } else { $jobRole = self::DEFAULT_ROLE; } // Enable jobs only for roles matching those specified via command line argument if (array_search($jobRole, $roles) === false) { continue; } foreach ($v['stores'] as $store) { $name = $store . '__' . $v['name']; $job_by_name[$name] = $v; $job_by_name[$name]['name'] = $name; $job_by_name[$name]['store'] = $store; $job_by_name[$name]['role'] = $jobRole; unset($job_by_name[$name]['stores']); } } // Loop thru existing jobs - either update them or delete them. $existing_jobs = glob($jobs_dir . '*/config.xml'); if (!empty($existing_jobs)) { foreach ($existing_jobs as $v) { $name = basename(dirname($v)); if (array_search($name, array_keys($job_by_name)) === false) { // Job does not exist anymore - we have to delete it. $url = 'job/' . $name . '/doDelete'; $code = $this->callJenkins($url); echo "Delete job: {$url} returned code {$code}\n"; } else { // Job exists - let's update config.xml and remove it from array of jobs $xml = $this->prepareJobXml($job_by_name[$name]); $url = 'job/' . $name . '/config.xml'; $code = $this->callJenkins($url, $xml); unset($job_by_name[$name]); if ($code !== '200') { echo "Update: {$url} returned code {$code}\n"; } } } } // Create new job definitions foreach ($job_by_name as $k => $v) { $xml = $this->prepareJobXml($v); $url = 'createItem?name=' . $v['name']; $code = $this->callJenkins($url, $xml); echo "Jenkins API {$url} returned response: {$code}\n"; } }