public static BuildPipelineCodes Build(BuildSettings settings, BuildCompression compression, string outputFolder, BuildDependencyInfo buildInfo, BuildWriteInfo writeInfo, out BuildResultInfo result, bool useCache = false, BuildProgressTracker progressTracker = null) { result = new BuildResultInfo(); // Write out resource files var commandSetWriter = new BuildWriteWriter(useCache, progressTracker); var exitCode = commandSetWriter.Convert(writeInfo, settings, buildInfo.buildGlobalUsage, out result); if (exitCode < BuildPipelineCodes.Success) { return(exitCode); } // Archive and compress resource files var resourceArchiver = new ResourceFileArchiver(useCache, progressTracker); exitCode = resourceArchiver.Convert(result, compression, outputFolder, out result.bundleCRCs); if (exitCode < BuildPipelineCodes.Success) { return(exitCode); } // Generate Unity5 compatible manifest files //string[] manifestfiles; //var manifestWriter = new Unity5ManifestWriter(useCache, true); //if (!manifestWriter.Convert(commandSet, output, crc, outputFolder, out manifestfiles)) // return false; return(exitCode); }
public SearchBuildLogsResult(BuildResultInfo buildInfo, string jobName, TimelineRecord record, BuildLogReference buildLogReference, string line) { BuildInfo = buildInfo; JobName = jobName; Record = record; BuildLogReference = buildLogReference; Line = line; }
public SearchTimelineResult( TimelineRecordItem record, BuildResultInfo buildInfo, string line) { Record = record; BuildResultInfo = buildInfo; Line = line; }
public IEnumerable <SearchTimelineResult> SearchTimeline( BuildResultInfo buildInfo, Timeline timeline, string text, string?name = null, string?task = null, int?attempt = null) { var textRegex = CreateSearchRegex(text); var nameRegex = CreateSearchRegex(name); var taskRegex = CreateSearchRegex(task); return(SearchTimeline(buildInfo, timeline, textRegex, nameRegex, taskRegex)); }
public async Task <ModelBuild> EnsureBuildAsync(BuildResultInfo buildInfo) { var modelBuildId = GetModelBuildId(buildInfo.BuildKey); var modelBuild = Context.ModelBuilds .Where(x => x.Id == modelBuildId) .FirstOrDefault(); if (modelBuild is object) { // This code accounts for the fact that we will see multiple attempts of a build and that will // change the result. When those happens we should update all of the following values. It may // seem strange to update start and finish time here but that is how the AzDO APIs work and it's // best to model them in that way. if (modelBuild.BuildResult != buildInfo.BuildResult) { modelBuild.StartTime = buildInfo.StartTime; modelBuild.FinishTime = buildInfo.FinishTime; modelBuild.BuildResult = buildInfo.BuildResult; await Context.SaveChangesAsync().ConfigureAwait(false); } return(modelBuild); } var prKey = buildInfo.PullRequestKey; var modelBuildDefinition = await EnsureBuildDefinitionAsync(buildInfo.DefinitionInfo).ConfigureAwait(false); modelBuild = new ModelBuild() { Id = modelBuildId, ModelBuildDefinitionId = modelBuildDefinition.Id, AzureOrganization = modelBuildDefinition.AzureOrganization, AzureProject = modelBuildDefinition.AzureProject, GitHubOrganization = buildInfo.GitHubBuildInfo?.Organization, GitHubRepository = buildInfo.GitHubBuildInfo?.Repository, GitHubTargetBranch = buildInfo.GitHubBuildInfo?.TargetBranch, PullRequestNumber = prKey?.Number, StartTime = buildInfo.StartTime, FinishTime = buildInfo.FinishTime, QueueTime = buildInfo.QueueTime, BuildNumber = buildInfo.Number, BuildResult = buildInfo.BuildResult, DefinitionName = buildInfo.DefinitionName, DefinitionId = buildInfo.DefinitionInfo.Id, }; Context.ModelBuilds.Add(modelBuild); Context.SaveChanges(); return(modelBuild); }
public IEnumerable <SearchTimelineResult> SearchTimeline( BuildResultInfo buildInfo, Timeline timeline, Regex text, Regex?name = null, Regex?task = null, int?attempt = null) { var timelineTree = TimelineTree.Create(timeline); var records = timeline.Records .Where(r => name is null || name.IsMatch(r.Name)) .Where(r => r.Task is null || task is null || task.IsMatch(r.Task.Name)); foreach (var record in records) { if (record.Issues is null) { continue; } string?line = null; foreach (var issue in record.Issues) { if (text.IsMatch(issue.Message)) { line = issue.Message; break; } } if (line is object) { yield return(new SearchTimelineResult( new TimelineRecordItem(record, timelineTree), buildInfo, line)); } } }
public static BuildKey GetBuildKey(BuildResultInfo buildInfo) => new BuildKey(buildInfo.Organization, buildInfo.Project, buildInfo.Number);
public async Task <ModelBuildAttempt> EnsureBuildAttemptAsync(BuildResultInfo buildInfo, Timeline timeline) { var modelBuild = await EnsureBuildAsync(buildInfo).ConfigureAwait(false); return(await EnsureBuildAttemptAsync(modelBuild, buildInfo.BuildResult, timeline).ConfigureAwait(false)); }