This is an automated email from the ASF dual-hosted git repository.

zhangliang2022 pushed a commit to branch release-v0.12
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.12 by this push:
     new 0db38674 fix: support multi type of story point field (#2760)
0db38674 is described below

commit 0db3867450b939e46f739b09d53617077f2e0e2d
Author: NaRro <[email protected]>
AuthorDate: Wed Aug 17 20:36:14 2022 +0800

    fix: support multi type of story point field (#2760)
    
    cherry-picked from https://github.com/apache/incubator-devlake/pull/2754
    
    #2753
---
 plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv   |  2 +-
 plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv |  2 +-
 plugins/jira/e2e/snapshot_tables/issues.csv            |  2 +-
 plugins/jira/tasks/issue_extractor.go                  | 14 +++++++++++---
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv 
b/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv
index 7387436f..f9d3ff03 100644
--- a/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv
@@ -1,6 +1,6 @@
 "id","params","data","url","input","created_at"
 12441,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10063"", ""key"": 
""EE-1"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10063"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-1/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
-12442,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10064"", ""key"": 
""EE-2"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10064"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-2/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
+12442,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10064"", ""key"": 
""EE-2"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10064"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-2/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
 12443,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10065"", ""key"": 
""EE-3"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10065"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-3/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
 12444,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10066"", ""key"": 
""EE-4"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10066"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-4/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
 12445,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10067"", ""key"": 
""EE-5"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10067"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-5/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv 
b/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
index 372403e2..e51ed25d 100644
--- a/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
@@ -1,6 +1,6 @@
 
connection_id,issue_id,project_id,self,issue_key,summary,type,epic_key,status_name,status_key,story_point,original_estimate_minutes,aggregate_estimate_minutes,remaining_estimate_minutes,creator_account_id,creator_account_type,creator_display_name,assignee_account_id,assignee_account_type,assignee_display_name,priority_id,priority_name,parent_id,parent_key,sprint_id,sprint_name,resolution_date,created,updated,spent_minutes,lead_time_minutes,std_story_point,std_type,std_status,_raw_data_pa
 [...]
 
2,10063,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10063,EE-1,​四个排序图:测试/注释覆盖度、复用度、模块性,Story,,已完成,done,-1,0,1260,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-19T06:31:18.495+00:00,2020-06-12T00:13:13.360+00:00,2021-03-28T08:06:08.713+00:00,0,10458,-1,STORY,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12441,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?siz
 [...]
-2,10064,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10064,EE-2,​问题堆叠分布排序图,Story,,已完成,done,0,0,840,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,0,16445,0,STORY,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12442,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10064,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10064,EE-2,​问题堆叠分布排序图,Story,,已完成,done,2,0,840,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,0,16445,2,STORY,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12442,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
 
2,10065,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10065,EE-3,​问题积压图率,Story,,已完成,done,0,0,600,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:21:11.996+00:00,2020-06-12T00:15:41.600+00:00,2021-03-28T08:05:55.061+00:00,0,16445,0,STORY,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12443,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
 
2,10066,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10066,EE-4,​问题分布的帕累托图,Story,,已完成,done,0,0,480,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:21:23.562+00:00,2020-06-12T00:15:46.144+00:00,2021-03-28T08:06:09.535+00:00,0,16445,0,STORY,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12444,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
 
2,10067,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10067,EE-5,​通用技术任务,Task,,已完成,done,0,0,360,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-18T04:06:00.747+00:00,2020-06-12T00:16:44.157+00:00,2021-03-28T08:05:54.622+00:00,0,8869,0,TASK,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12445,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
diff --git a/plugins/jira/e2e/snapshot_tables/issues.csv 
b/plugins/jira/e2e/snapshot_tables/issues.csv
index c0029e9e..f1702621 100644
--- a/plugins/jira/e2e/snapshot_tables/issues.csv
+++ b/plugins/jira/e2e/snapshot_tables/issues.csv
@@ -1,6 +1,6 @@
 
id,url,icon_url,issue_key,title,description,epic_key,type,status,original_status,story_point,resolution_date,created_date,updated_date,lead_time_minutes,parent_issue_id,priority,original_estimate_minutes,time_spent_minutes,time_remaining_minutes,creator_id,creator_name,assignee_id,assignee_name,severity,component
 
jira:JiraIssue:2:10063,https://merico.atlassian.net/browse/EE-1,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-1,​四个排序图:测试/注释覆盖度、复用度、模块性,,,STORY,DONE,已完成,-1,2020-06-19T06:31:18.495+00:00,2020-06-12T00:13:13.360+00:00,2021-03-28T08:06:08.713+00:00,10458,,Medium,0,0,0,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
-jira:JiraIssue:2:10064,https://merico.atlassian.net/browse/EE-2,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-2,​问题堆叠分布排序图,,,STORY,DONE,已完成,0,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,16445,,Medium,0,0,0,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
+jira:JiraIssue:2:10064,https://merico.atlassian.net/browse/EE-2,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-2,​问题堆叠分布排序图,,,STORY,DONE,已完成,2,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,16445,,Medium,0,0,0,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
 
jira:JiraIssue:2:10065,https://merico.atlassian.net/browse/EE-3,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-3,​问题积压图率,,,STORY,DONE,已完成,0,2020-06-23T10:21:11.996+00:00,2020-06-12T00:15:41.600+00:00,2021-03-28T08:05:55.061+00:00,16445,,Medium,0,0,0,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
 
jira:JiraIssue:2:10066,https://merico.atlassian.net/browse/EE-4,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-4,​问题分布的帕累托图,,,STORY,DONE,已完成,0,2020-06-23T10:21:23.562+00:00,2020-06-12T00:15:46.144+00:00,2021-03-28T08:06:09.535+00:00,16445,,Medium,0,0,0,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
 
jira:JiraIssue:2:10067,https://merico.atlassian.net/browse/EE-5,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,EE-5,​通用技术任务,,,TASK,DONE,已完成,0,2020-06-18T04:06:00.747+00:00,2020-06-12T00:16:44.157+00:00,2021-03-28T08:05:54.622+00:00,8869,,Medium,0,0,0,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
diff --git a/plugins/jira/tasks/issue_extractor.go 
b/plugins/jira/tasks/issue_extractor.go
index 6fc28bbe..19097a88 100644
--- a/plugins/jira/tasks/issue_extractor.go
+++ b/plugins/jira/tasks/issue_extractor.go
@@ -19,11 +19,12 @@ package tasks
 
 import (
        "encoding/json"
-       "github.com/apache/incubator-devlake/plugins/core/dal"
        "strconv"
        "strings"
        "time"
 
+       "github.com/apache/incubator-devlake/plugins/core/dal"
+
        "github.com/apache/incubator-devlake/plugins/core"
        "github.com/apache/incubator-devlake/plugins/helper"
        "github.com/apache/incubator-devlake/plugins/jira/models"
@@ -107,9 +108,16 @@ func ExtractIssues(taskCtx core.SubTaskContext) error {
                                issue.LeadTimeMinutes = 
uint(issue.ResolutionDate.Unix()-issue.Created.Unix()) / 60
                        }
                        if data.Options.TransformationRules.StoryPointField != 
"" {
-                               strStoryPoint, _ := 
apiIssue.Fields.AllFields[data.Options.TransformationRules.StoryPointField].(string)
-                               if strStoryPoint != "" {
+                               unknownStoryPoint := 
apiIssue.Fields.AllFields[data.Options.TransformationRules.StoryPointField]
+                               switch unknownStoryPoint.(type) {
+                               case string:
+                                       // string, try to parse
+                                       strStoryPoint, _ := 
unknownStoryPoint.(string)
                                        issue.StoryPoint, _ = 
strconv.ParseFloat(strStoryPoint, 32)
+                               case nil:
+                               default:
+                                       // not string, convert to float64, 
ignore it if failed
+                                       issue.StoryPoint, _ = 
unknownStoryPoint.(float64)
                                }
                        }
                        issue.Type = typeIdMapping[issue.Type]

Reply via email to