#feature: add Jenkins deploy monitor & log clean task

This commit is contained in:
2026-01-19 11:46:38 +08:00
parent 381d5e6e49
commit da3b05b7c0
22 changed files with 968 additions and 80 deletions

View File

@@ -11,8 +11,7 @@ class CodeContextService
private int $contextLines = 10;
public function __construct(
private readonly ConfigService $configService,
private readonly EnvService $envService
private readonly ConfigService $configService
) {}
/**
@@ -23,49 +22,16 @@ class CodeContextService
*/
public function getRepoPath(string $appName): ?string
{
// 优先从 Project 模型查找
// 从 Project 模型查找,直接使用项目路径
$project = Project::findByAppName($appName);
if ($project) {
$env = $project->log_env ?? 'production';
try {
$envContent = $this->envService->getEnvContent($project->slug, $env);
$repoPath = $this->parseEnvValue($envContent, 'LOG_ANALYSIS_CODE_REPO_PATH');
if ($repoPath && is_dir($repoPath)) {
return $repoPath;
}
} catch (\Exception $e) {
// 忽略错误,继续尝试旧配置
$projectsPath = $this->configService->get('workspace.projects_path', '');
if ($projectsPath && $project->isPathValid($projectsPath)) {
return $project->getFullPath($projectsPath);
}
}
// 回退到旧的配置方式(兼容迁移前的情况)
$appEnvMap = $this->configService->get('log_analysis.app_env_map', []);
if (!isset($appEnvMap[$appName])) {
return null;
}
$mapping = $appEnvMap[$appName];
$projectSlug = $mapping['project'] ?? null;
$env = $mapping['env'] ?? null;
if (!$projectSlug || !$env) {
return null;
}
try {
$envContent = $this->envService->getEnvContent($projectSlug, $env);
$repoPath = $this->parseEnvValue($envContent, 'LOG_ANALYSIS_CODE_REPO_PATH');
if ($repoPath && is_dir($repoPath)) {
return $repoPath;
}
} catch (\Exception $e) {
// 忽略错误,返回 null
}
return null;
}
@@ -246,36 +212,6 @@ class CodeContextService
return null;
}
/**
* .env 内容中解析指定键的值
*
* @param string $envContent
* @param string $key
* @return string|null
*/
private function parseEnvValue(string $envContent, string $key): ?string
{
$lines = explode("\n", $envContent);
foreach ($lines as $line) {
$line = trim($line);
// 跳过注释和空行
if (empty($line) || str_starts_with($line, '#')) {
continue;
}
if (str_starts_with($line, "{$key}=")) {
$value = substr($line, strlen($key) + 1);
// 移除引号
$value = trim($value, '"\'');
return $value ?: null;
}
}
return null;
}
/**
* 设置上下文行数
*/