| File: Models\EvidencePaths.cs | Web Access |
| Project: src\tools\AnalyzeCiFailure\AnalyzeCiFailure.csproj (AnalyzeCiFailure) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace AnalyzeCiFailure; /// <summary>Names evidence-package files and identifies captured JSON used to build diagnosis context.</summary> internal sealed class EvidencePaths(string rootDirectory) { internal const string JobLogPattern = "job-*.log"; internal const string JobAnnotationsPattern = "annotations-*.json"; public string RootDirectory { get; } = rootDirectory; public string Bundle { get; } = Path.Combine(rootDirectory, "evidence.json"); public string Outcome { get; } = Path.Combine(rootDirectory, "collection-outcome.json"); public string Run { get; } = Path.Combine(rootDirectory, "diagnostics", "run.json"); public string AllJobs { get; } = Path.Combine(rootDirectory, "diagnostics", "all-jobs.json"); public string FailedJobs { get; } = Path.Combine(rootDirectory, "diagnostics", "failed-jobs.json"); public string RetryPatterns { get; } = Path.Combine(rootDirectory, "diagnostics", "retry-patterns.json"); public string TriggeringMerge { get; } = Path.Combine(rootDirectory, "diagnostics", "triggering-merge-pr.json"); public string LastSuccessfulMainRun { get; } = Path.Combine(rootDirectory, "diagnostics", "last-successful-main-run.json"); public string CandidateMerges { get; } = Path.Combine(rootDirectory, "diagnostics", "candidate-merges.json"); public string CandidateHistoryStatus { get; } = Path.Combine(rootDirectory, "diagnostics", "candidate-merge-history-status.json"); public string PullRequestFiles { get; } = Path.Combine(rootDirectory, "diagnostics", "pr-files.json"); public string PullRequestMetadata { get; } = Path.Combine(rootDirectory, "diagnostics", "pr-metadata.json"); public string Artifacts { get; } = Path.Combine(rootDirectory, "diagnostics", "artifacts.json"); public string SelectedTestArtifacts { get; } = Path.Combine(rootDirectory, "diagnostics", "selected-test-result-artifacts.json"); public string PriorCauseIndex { get; } = Path.Combine(rootDirectory, "history", "cause-index.json"); public string Summary { get; } = Path.Combine(rootDirectory, "analysis-summary.md"); public string PriorCausesDirectory { get; } = Path.Combine(rootDirectory, "history", "causes"); public string Manifest { get; } = Path.Combine(rootDirectory, "manifest.json"); public string JobLog(string jobId) => Path.Combine(RootDirectory, "diagnostics", $"job-{jobId}.log"); public string JobAnnotations(string jobId) => Path.Combine(RootDirectory, "diagnostics", $"annotations-{jobId}.json"); public string PriorCause(string fileName) => Path.Combine(PriorCausesDirectory, fileName); internal static bool IsDiagnosisContextJson(string name) => name is "diagnostics/run.json" or "diagnostics/failed-jobs.json" or "diagnostics/pr-files.json" or "diagnostics/retry-patterns.json" || name.StartsWith("diagnostics/annotations-", StringComparison.Ordinal) && name.EndsWith(".json", StringComparison.Ordinal); }