diff --git a/config.go b/config.go index c5999c5..7e79cbd 100644 --- a/config.go +++ b/config.go @@ -50,13 +50,16 @@ func getConfig() (configType, error) { return configType{}, fmt.Errorf("invalid env: GITHUB_REPOSITORY") } - headersSplit := strings.Split(headers, ":") - if len(headersSplit) != 2 { - return configType{}, fmt.Errorf("invalid env: OTEL_EXPORTER_HEADERS") - } + headersMap := map[string]string{} + + headersSplit := strings.Split(headers, ",") + for i := 0; i < len(headersSplit); i++ { + splitHeaders := strings.Split(headersSplit[i], ":") + if len(splitHeaders) != 2 { + return configType{}, fmt.Errorf("invalid env: OTEL_EXPORTER_HEADERS") + } + headersMap[splitHeaders[0]] = splitHeaders[1] - headersMap := map[string]string{ - headersSplit[0]: headersSplit[1], } return configType{ diff --git a/gh.go b/gh.go index 32f9f44..332525a 100644 --- a/gh.go +++ b/gh.go @@ -36,6 +36,7 @@ func createTraces(ctx context.Context, conf configType) error { return err } + var lastJobFinishesAt time.Time ctx, workflowSpan := tracer.Start(ctx, *workflowData.Name, trace.WithTimestamp(workflowData.GetCreatedAt().Time)) for _, job := range jobs.Jobs { ctx, jobSpan := tracer.Start(ctx, *job.Name, trace.WithTimestamp(job.GetStartedAt().Time)) @@ -45,6 +46,9 @@ func createTraces(ctx context.Context, conf configType) error { if step.CompletedAt != nil { stepSpan.End(trace.WithTimestamp(step.GetCompletedAt().Time)) + if step.GetCompletedAt().Time.After(lastJobFinishesAt) { + lastJobFinishesAt = step.GetCompletedAt().Time + } } else { stepSpan.End() } @@ -56,7 +60,7 @@ func createTraces(ctx context.Context, conf configType) error { jobSpan.End() } } - workflowSpan.End(trace.WithTimestamp(time.Now())) + workflowSpan.End(trace.WithTimestamp(lastJobFinishesAt)) return nil }