actions-metrics: Do our best not to fail the whole event processing on no API creds (#2459)

This commit is contained in:
Yusuke Kuoka 2023-03-31 20:42:25 +09:00 committed by GitHub
parent 02d9add322
commit a608abd124
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 9 deletions

View File

@ -136,12 +136,27 @@ func (reader *EventReader) ProcessWorkflowJobEvent(ctx context.Context, event in
// job_conclusion -> (neutral, success, skipped, cancelled, timed_out, action_required, failure) // job_conclusion -> (neutral, success, skipped, cancelled, timed_out, action_required, failure)
githubWorkflowJobConclusionsTotal.With(extraLabel("job_conclusion", *e.WorkflowJob.Conclusion, labels)).Inc() githubWorkflowJobConclusionsTotal.With(extraLabel("job_conclusion", *e.WorkflowJob.Conclusion, labels)).Inc()
var (
exitCode = "na"
runTimeSeconds *float64
)
// We need to do our best not to fail the whole event processing
// when the user provided no GitHub API credentials.
// See https://github.com/actions/actions-runner-controller/issues/2424
if reader.GitHubClient != nil {
parseResult, err := reader.fetchAndParseWorkflowJobLogs(ctx, e) parseResult, err := reader.fetchAndParseWorkflowJobLogs(ctx, e)
if err != nil { if err != nil {
log.Error(err, "reading workflow job log") log.Error(err, "reading workflow job log")
return return
} else { }
log.Info("reading workflow_job logs", keysAndValues...)
exitCode = parseResult.ExitCode
s := parseResult.RunTime.Seconds()
runTimeSeconds = &s
log.WithValues(keysAndValues...).Info("reading workflow_job logs", "exit_code", exitCode)
} }
if *e.WorkflowJob.Conclusion == "failure" { if *e.WorkflowJob.Conclusion == "failure" {
@ -167,18 +182,20 @@ func (reader *EventReader) ProcessWorkflowJobEvent(ctx context.Context, event in
} }
if *conclusion == "timed_out" { if *conclusion == "timed_out" {
failedStep = fmt.Sprint(i) failedStep = fmt.Sprint(i)
parseResult.ExitCode = "timed_out" exitCode = "timed_out"
break break
} }
} }
githubWorkflowJobFailuresTotal.With( githubWorkflowJobFailuresTotal.With(
extraLabel("failed_step", failedStep, extraLabel("failed_step", failedStep,
extraLabel("exit_code", parseResult.ExitCode, labels), extraLabel("exit_code", exitCode, labels),
), ),
).Inc() ).Inc()
} }
githubWorkflowJobRunDurationSeconds.With(extraLabel("job_conclusion", *e.WorkflowJob.Conclusion, labels)).Observe(parseResult.RunTime.Seconds()) if runTimeSeconds != nil {
githubWorkflowJobRunDurationSeconds.With(extraLabel("job_conclusion", *e.WorkflowJob.Conclusion, labels)).Observe(*runTimeSeconds)
}
} }
} }