Skip to content

Check logs for cancelled #122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion BuildMonitor/BuildProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,5 +96,5 @@ internal void Tick()
internal abstract Task UpdateRepositoriesAsync(Owner owner);
internal abstract Task UpdateBuildsAsync(Repository repository);
internal abstract Task UpdateBuildAsync(Build build);
internal abstract Task UpdateRunAsync(Run run);
internal abstract Task UpdateRunAsync(Build build, Run run);
}
51 changes: 32 additions & 19 deletions BuildMonitor/Providers/GitHub.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,41 +81,54 @@ await MakeGitHubRequestAsync($"{Name}/{build.Owner.Name}/{build.Repository.Name}
var runId = (RunId)gitHubRun.Id.ToString(CultureInfo.InvariantCulture);
var runName = (RunName)gitHubRun.Name;
var run = build.Runs.GetOrCreate(runId, build.CreateRun(runName, runId));
UpdateRunFromWorkflow(run, gitHubRun);
UpdateRunFromWorkflow(build, run, gitHubRun);
}
});
}

internal override async Task UpdateRunAsync(Run run)
internal override async Task UpdateRunAsync(Build build, Run run)
{
UpdateGitHubClientCredentials();
await MakeGitHubRequestAsync($"{Name}/{run.Owner.Name}/{run.Repository.Name}/{run.Build.Name}/{run.Name}", async () =>
{
var gitHubRun = await GitHubRuns.Get(run.Owner.Name, run.Repository.Name, long.Parse(run.Id, CultureInfo.InvariantCulture));
UpdateRunFromWorkflow(run, gitHubRun);
UpdateRunFromWorkflow(build, run, gitHubRun);
});
}

private static void UpdateRunFromWorkflow(Run run, WorkflowRun gitHubRun)
private void UpdateRunFromWorkflow(Build build, Run run, WorkflowRun gitHubRun)
{
run.Started = gitHubRun.RunStartedAt;
run.LastUpdated = gitHubRun.UpdatedAt;
run.Status = gitHubRun.Conclusion switch

if (gitHubRun.Conclusion == WorkflowRunConclusion.Failure)
{
string log = System.Text.Encoding.Default.GetString(GitHubRuns.GetAttemptLogs(build.Owner.Name, build.Name, gitHubRun.Id, gitHubRun.RunAttempt).Result);

if (log.Contains("Cancelled the workflow run"))
{
run.Status = RunStatus.Canceled;
}
}
else
{
_ when gitHubRun.Status == WorkflowRunStatus.Requested => RunStatus.Pending,
_ when gitHubRun.Status == WorkflowRunStatus.Queued => RunStatus.Pending,
_ when gitHubRun.Status == WorkflowRunStatus.InProgress => RunStatus.Running,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Neutral => RunStatus.Success,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Success => RunStatus.Success,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Failure => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Cancelled => RunStatus.Canceled,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Skipped => RunStatus.Canceled,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.StartupFailure => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.TimedOut => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.ActionRequired => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Stale => RunStatus.Failure,
_ => throw new InvalidOperationException(),
};
run.Status = gitHubRun.Conclusion switch
{
_ when gitHubRun.Status == WorkflowRunStatus.Requested => RunStatus.Pending,
_ when gitHubRun.Status == WorkflowRunStatus.Queued => RunStatus.Pending,
_ when gitHubRun.Status == WorkflowRunStatus.InProgress => RunStatus.Running,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Neutral => RunStatus.Success,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Success => RunStatus.Success,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Failure => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Cancelled => RunStatus.Canceled,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Skipped => RunStatus.Canceled,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.StartupFailure => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.TimedOut => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.ActionRequired => RunStatus.Failure,
_ when gitHubRun.Status == WorkflowRunStatus.Completed && gitHubRun.Conclusion == WorkflowRunConclusion.Stale => RunStatus.Failure,
_ => throw new InvalidOperationException(),
};
}

run.Build.UpdateFromRun(run);
BuildMonitor.QueueSaveAppData();
Expand Down
2 changes: 1 addition & 1 deletion BuildMonitor/RunSync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal class RunSync

internal async Task UpdateAsync()
{
await Run.Owner.BuildProvider.UpdateRunAsync(Run);
await Run.Owner.BuildProvider.UpdateRunAsync(Run.Build, Run);

if (Run.IsOngoing)
{
Expand Down
1 change: 1 addition & 0 deletions RELEASES
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
1_0_0_alpha_1_win_x64
1_0_0_alpha_1_check_logs_for_cancelled_win_x64