Compare commits

...

1 Commits

Author SHA1 Message Date
Thomas Boop
e0508abb77 fix composite annotations not appearing as expected 2022-09-09 09:46:07 -04:00
2 changed files with 45 additions and 13 deletions

View File

@@ -63,6 +63,8 @@ namespace GitHub.Runner.Worker
// Keep track of embedded steps states // Keep track of embedded steps states
Dictionary<Guid, Dictionary<string, string>> EmbeddedIntraActionState { get; } Dictionary<Guid, Dictionary<string, string>> EmbeddedIntraActionState { get; }
IList<Issue> EmbeddedIssues { get; }
bool EchoOnActionCommand { get; set; } bool EchoOnActionCommand { get; set; }
bool IsEmbedded { get; } bool IsEmbedded { get; }
@@ -91,6 +93,7 @@ namespace GitHub.Runner.Worker
void SetOutput(string name, string value, out string reference); void SetOutput(string name, string value, out string reference);
void SetTimeout(TimeSpan? timeout); void SetTimeout(TimeSpan? timeout);
void AddIssue(Issue issue, string message = null); void AddIssue(Issue issue, string message = null);
void AddIssueToTimelineRecord(Issue issue);
void Progress(int percentage, string currentOperation = null); void Progress(int percentage, string currentOperation = null);
void UpdateDetailTimelineRecord(TimelineRecord record); void UpdateDetailTimelineRecord(TimelineRecord record);
@@ -180,6 +183,8 @@ namespace GitHub.Runner.Worker
public Dictionary<Guid, Dictionary<string, string>> EmbeddedIntraActionState { get; private set; } public Dictionary<Guid, Dictionary<string, string>> EmbeddedIntraActionState { get; private set; }
public IList<Issue> EmbeddedIssues { get; } = new List<Issue>();
public bool EchoOnActionCommand { get; set; } public bool EchoOnActionCommand { get; set; }
// An embedded execution context shares the same record ID, record name, and logger // An embedded execution context shares the same record ID, record name, and logger
@@ -575,7 +580,31 @@ namespace GitHub.Runner.Worker
long logLineNumber = Write(WellKnownTags.Error, logMessage); long logLineNumber = Write(WellKnownTags.Error, logMessage);
issue.Data["logFileLineNumber"] = logLineNumber.ToString(); issue.Data["logFileLineNumber"] = logLineNumber.ToString();
} }
}
else if (issue.Type == IssueType.Warning)
{
if (!string.IsNullOrEmpty(logMessage))
{
long logLineNumber = Write(WellKnownTags.Warning, logMessage);
issue.Data["logFileLineNumber"] = logLineNumber.ToString();
}
}
else if (issue.Type == IssueType.Notice)
{
if (!string.IsNullOrEmpty(logMessage))
{
long logLineNumber = Write(WellKnownTags.Notice, logMessage);
issue.Data["logFileLineNumber"] = logLineNumber.ToString();
}
}
AddIssueToTimelineRecord(issue);
}
public void AddIssueToTimelineRecord(Issue issue)
{
ArgUtil.NotNull(issue, nameof(issue));
if (issue.Type == IssueType.Error)
{
if (_record.ErrorCount < _maxIssueCount) if (_record.ErrorCount < _maxIssueCount)
{ {
_record.Issues.Add(issue); _record.Issues.Add(issue);
@@ -585,12 +614,6 @@ namespace GitHub.Runner.Worker
} }
else if (issue.Type == IssueType.Warning) else if (issue.Type == IssueType.Warning)
{ {
if (!string.IsNullOrEmpty(logMessage))
{
long logLineNumber = Write(WellKnownTags.Warning, logMessage);
issue.Data["logFileLineNumber"] = logLineNumber.ToString();
}
if (_record.WarningCount < _maxIssueCount) if (_record.WarningCount < _maxIssueCount)
{ {
_record.Issues.Add(issue); _record.Issues.Add(issue);
@@ -600,12 +623,6 @@ namespace GitHub.Runner.Worker
} }
else if (issue.Type == IssueType.Notice) else if (issue.Type == IssueType.Notice)
{ {
if (!string.IsNullOrEmpty(logMessage))
{
long logLineNumber = Write(WellKnownTags.Notice, logMessage);
issue.Data["logFileLineNumber"] = logLineNumber.ToString();
}
if (_record.NoticeCount < _maxIssueCount) if (_record.NoticeCount < _maxIssueCount)
{ {
_record.Issues.Add(issue); _record.Issues.Add(issue);
@@ -613,8 +630,17 @@ namespace GitHub.Runner.Worker
_record.NoticeCount++; _record.NoticeCount++;
} }
// Composite actions should never upload a timeline record to the server
// We add these to a list and let composite action handler bubble it up recursively
if (this.IsEmbedded)
{
EmbeddedIssues.Add(issue);
}
else
{
_jobServerQueue.QueueTimelineRecordUpdate(_mainTimelineId, _record);
}
_jobServerQueue.QueueTimelineRecordUpdate(_mainTimelineId, _record);
} }
public void UpdateDetailTimelineRecord(TimelineRecord record) public void UpdateDetailTimelineRecord(TimelineRecord record)

View File

@@ -413,6 +413,12 @@ namespace GitHub.Runner.Worker.Handlers
// Update context // Update context
step.ExecutionContext.UpdateGlobalStepsContext(); step.ExecutionContext.UpdateGlobalStepsContext();
// Update annotations
foreach (var issue in step.ExecutionContext.EmbeddedIssues)
{
ExecutionContext.AddIssueToTimelineRecord(issue);
}
} }
} }