* @package instance * @link https://www.zentao.net */ class instanceZen extends instance { /** * 自动保存devops应用授权信息。 * Auto save auth info of devops. * * @param object $instance * @access protected * @return void */ protected function saveAuthInfo(object $instance): void { if(empty($this->config->instance->devopsApps[$instance->appID])) return; $url = 'https://' . $instance->domain; $pipeline = $this->loadModel('pipeline')->getByUrl($url); if(!empty($pipeline)) return; $tempMappings = $this->loadModel('cne')->getSettingsMapping($instance); if(empty($tempMappings)) return; $pipeline = new stdclass(); $instance->type = $this->config->instance->devopsApps[$instance->appID]; $pipeline->type = $instance->type; $pipeline->private = md5(strval(rand(10,113450))); $pipeline->createdBy = 'system'; $pipeline->createdDate = helper::now(); $pipeline->url = $url; $pipeline->name = $this->generatePipelineName($instance); $pipeline->token = zget($tempMappings, 'admin_token', ''); $pipeline->account = zget($tempMappings, 'admin_username', ''); $pipeline->password = zget($tempMappings, 'admin_password', ''); $pipeline->token = zget($tempMappings, 'admin_token', ''); $this->pipeline->create($pipeline); } /** * 自动保存devops应用授权信息。 * Auto save auth info of devops. * * @param object $instance * @access protected * @return string */ protected function generatePipelineName(object $instance): string { $name = $instance->name; $type = $instance->type; if(empty($this->loadModel('pipeline')->getByNameAndType($name, $type))) return $name; if(empty($this->loadModel('pipeline')->getByNameAndType($name . '-' . $instance->appVersion, $type))) return $name . '-' . $instance->appVersion; for($times = 1; $times < 5; $times ++) { if(empty($this->loadModel('pipeline')->getByNameAndType($name . '-' . $times, $name))) return $name . '-' . $times; } } }