Skip to content
Merged
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
58 changes: 30 additions & 28 deletions backend/plugins/github_graphql/tasks/job_collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,38 +55,40 @@ type GraphqlQueryCheckSuite struct {
EndCursor string `graphql:"endCursor"`
HasNextPage bool `graphql:"hasNextPage"`
}
Nodes []struct {
Id string
Name string
DetailsUrl string
DatabaseId int
Status string
StartedAt *time.Time
Conclusion string
CompletedAt *time.Time
//ExternalId string
//Url string
//Title interface{}
//Text interface{}
//Summary interface{}

Steps struct {
TotalCount int
Nodes []struct {
CompletedAt *time.Time `json:"completed_at"`
Conclusion string `json:"conclusion"`
Name string `json:"name"`
Number int `json:"number"`
SecondsToCompletion int `json:"seconds_to_completion"`
StartedAt *time.Time `json:"started_at"`
Status string `json:"status"`
}
} `graphql:"steps(first: 50)"`
}
Nodes []GraphqlQueryCheckRun
} `graphql:"checkRuns(first: $pageSize, after: $skipCursor)"`
} `graphql:"... on CheckSuite"`
}

type GraphqlQueryCheckRun struct {
Id string
Name string
DetailsUrl string
DatabaseId int
Status string
StartedAt *time.Time
Conclusion string
CompletedAt *time.Time
//ExternalId string
//Url string
//Title interface{}
//Text interface{}
//Summary interface{}

Steps struct {
TotalCount int
Nodes []struct {
CompletedAt *time.Time `json:"completed_at"`
Conclusion string `json:"conclusion"`
Name string `json:"name"`
Number int `json:"number"`
SecondsToCompletion int `json:"seconds_to_completion"`
StartedAt *time.Time `json:"started_at"`
Status string `json:"status"`
}
} `graphql:"steps(first: 50)"`
}

type SimpleWorkflowRun struct {
CheckSuiteNodeID string
}
Expand Down
60 changes: 26 additions & 34 deletions backend/plugins/github_graphql/tasks/job_extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,50 +51,42 @@ func ExtractJobs(taskCtx plugin.SubTaskContext) errors.Error {
Table: RAW_GRAPHQL_JOBS_TABLE,
},
Extract: func(row *api.RawData) ([]interface{}, errors.Error) {
checkSuite := &GraphqlQueryCheckSuite{}
err := errors.Convert(json.Unmarshal(row.Data, checkSuite))
checkRun := &GraphqlQueryCheckRun{}
err := errors.Convert(json.Unmarshal(row.Data, checkRun))
if err != nil {
return nil, err
}
results := make([]interface{}, 0, 1)
for _, checkRun := range checkSuite.CheckSuite.CheckRuns.Nodes {
paramsBytes, err := json.Marshal(checkRun.Steps.Nodes)
if err != nil {
taskCtx.GetLogger().Error(err, `Marshal checkRun.Steps.Nodes fail and ignore`)
}
githubJob := &models.GithubJob{
ConnectionId: data.Options.ConnectionId,
RunID: checkSuite.CheckSuite.WorkflowRun.DatabaseId,
RepoId: data.Options.GithubId,
ID: checkRun.DatabaseId,
NodeID: checkRun.Id,
HTMLURL: checkRun.DetailsUrl,
Status: strings.ToUpper(checkRun.Status),
Conclusion: strings.ToUpper(checkRun.Conclusion),
StartedAt: checkRun.StartedAt,
CompletedAt: checkRun.CompletedAt,
Name: checkRun.Name,
Steps: paramsBytes,
Type: data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, checkRun.Name),
Environment: data.RegexEnricher.ReturnNameIfOmittedOrMatched(devops.PRODUCTION, checkRun.Name),
// these columns can not fill by graphql
//HeadSha: ``, // use _tool_github_runs
//RunURL: ``,
//CheckRunURL: ``,
//Labels: ``, // not in use
//RunnerID: ``, // not in use
//RunnerName: ``, // not in use
//RunnerGroupID: ``, // not in use
}
results = append(results, githubJob)

paramsBytes, marshalError := json.Marshal(checkRun.Steps.Nodes)
err = errors.Convert(marshalError)
if err != nil {
taskCtx.GetLogger().Error(err, `Marshal checkRun.Steps.Nodes failed`)
}
return results, nil
githubJob := &models.GithubJob{
ConnectionId: data.Options.ConnectionId,
RunID: checkRun.DatabaseId,
RepoId: data.Options.GithubId,
ID: checkRun.DatabaseId,
NodeID: checkRun.Id,
HTMLURL: checkRun.DetailsUrl,
Status: strings.ToUpper(checkRun.Status),
Conclusion: strings.ToUpper(checkRun.Conclusion),
StartedAt: checkRun.StartedAt,
CompletedAt: checkRun.CompletedAt,
Name: checkRun.Name,
Steps: paramsBytes,
Type: data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, checkRun.Name),
Environment: data.RegexEnricher.ReturnNameIfOmittedOrMatched(devops.PRODUCTION, checkRun.Name),
}
results = append(results, githubJob)

return results, nil
},
})

if err != nil {
return err
return errors.Convert(err)
}

return extractor.Execute()
Expand Down
Loading