dosubot[bot] commented on issue #8309:
URL:
https://github.com/apache/incubator-devlake/issues/8309#issuecomment-2685700654
<!-- Greeting -->
Hey there, @magichair! I'm a bot here to help you with bugs, questions, and
becoming a contributor. Let's tackle this issue together while we wait for a
human maintainer.
<!-- Answer -->
To improve error handling in the `convertWorkflows` function when the
CircleCI API response is malformed, you can add a check for null values,
particularly for fields like `CreatedDate`. Here's an example of how you can
modify the `Convert` function to handle null `CreatedDate`:
```go
Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
userTool := inputRow.(*models.CircleciWorkflow)
// Check if CreatedDate is null
if userTool.CreatedDate == nil {
return nil, errors.New("CreatedDate is null in the CircleCI API
response")
}
createdAt := userTool.CreatedDate.ToTime()
pipeline := &devops.CICDPipeline{
DomainEntity: domainlayer.DomainEntity{
Id: getWorkflowIdGen().Generate(data.Options.ConnectionId,
userTool.Id),
},
Name: userTool.Name,
DurationSec: userTool.DurationSec,
TaskDatesInfo: devops.TaskDatesInfo{
CreatedDate: createdAt,
StartedDate: &createdAt,
FinishedDate: userTool.StoppedDate.ToNullableTime(),
},
CicdScopeId: getProjectIdGen().Generate(data.Options.ConnectionId,
userTool.ProjectSlug),
Status: devops.GetStatus(&devops.StatusRule{
Done: []string{"canceled", "failed", "failing", "success",
"not_run", "error"},
Default: devops.STATUS_OTHER,
}, userTool.Status),
OriginalStatus: userTool.Status,
Result: devops.GetResult(&devops.ResultRule{
Success: []string{"success"},
Failure: []string{"failed", "failing", "error"},
Default: devops.RESULT_DEFAULT,
}, userTool.Status),
DisplayTitle: fmt.Sprintf("%s#%d", userTool.Name,
userTool.PipelineNumber),
}
if data.Options.ScopeConfig.DeploymentPattern != nil ||
data.Options.ScopeConfig.ProductionPattern != nil {
pipeline.Type =
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, userTool.Name)
pipeline.Environment =
data.RegexEnricher.ReturnNameIfOmittedOrMatched(devops.PRODUCTION,
userTool.Name)
}
result := make([]interface{}, 0, 2)
result = append(result, pipeline)
if p, err := findPipelineById(db, userTool.PipelineId); err == nil {
if p.Vcs.Revision != "" {
result = append(result, &devops.CiCDPipelineCommit{
PipelineId: pipeline.Id,
CommitSha: p.Vcs.Revision,
Branch: p.Vcs.Branch,
RepoId: p.Vcs.OriginRepositoryUrl,
RepoUrl: p.Vcs.OriginRepositoryUrl,
DisplayTitle: pipeline.DisplayTitle,
})
}
}
return result, nil
},
```
This code snippet adds a check for `CreatedDate` being null and returns an
error if it is, ensuring that the function handles malformed API responses
gracefully
<sup>[[1]](https://github.com/apache/incubator-devlake/blob/main/backend/plugins/circleci/tasks/workflow_converter.go)</sup>.
<!-- Dosu Comment Footer -->
*To continue talking to [Dosu](https://dosu.dev), mention @dosu.*
---
<sup>Help Dosu learn! Give it feedback: [Great
Response](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=great_response)
| [Irrelevant
Answer](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=irrelevant_answer)
| [Incorrect
Sources](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=incorrect_sources)
| [Too
Verbose](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=too_verbose)
|
[Hallucination](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=hallucination)
| [Bug
Report](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=bug_report)
|
[Other](https://app.dosu.dev/response-feedback/43a76e79-ffe9-4fba-8db9-70721971a452?feedback_type=other)</sup>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]