前面我们介绍了与Jira系统是如何交互的,我们可能还会碰到一种场景,会定会拉取工作项的数据,进行数据汇总,上传至云存储中,那么接下来以腾讯云存储为例,介绍如何实现这一操作。
腾讯云存储
这里默认相关操作者都已经具备腾讯云存储的相关知识,并能够熟练进行操作
代码实例
废话不多说,直接上代码,代码实现的是从飞书项目中拉取缺陷工作项,并将缺陷工作项的缺陷名称采集,并上传至云存储中。
获取飞书项目SDK Client
func getCli() *sdkv3.Client {
tr := &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
client := &http.Client{Transport: tr}
cli := sdkv3.NewClient("MII_xxxxx", "xxxxx",
sdkv3.WithOpenBaseUrl("https://project.feishu.cn"),
sdkv3.WithAccessTokenType(corev3.AccessTokenTypePlugin),
sdkv3.WithHttpClient(client))
return cli
}
实际操作时需要将上述代码中的appkey和secret替换为实际的appkey和secret。
获取指定空间的缺陷数据
func queryWorkItemDetail(ctx context.Context, projectKey string, workItemTypeKey string,
workItemIDs []int64, filterFields []string, expand *workitem.Expand, userKey string) (Data []*workitem.WorkItemInfo, err error) {
log.Println("start to query work item detail")
cli := getCli()
if expand == nil {
expand = &workitem.Expand{}
}
req := workitem.NewQueryWorkItemDetailReqBuilder().ProjectKey(projectKey).WorkItemTypeKey(workItemTypeKey).WorkItemIDs(workItemIDs).Fields(filterFields).
Expand(expand).Build()
resp, err := cli.WorkItem.QueryWorkItemDetail(ctx, req, core.WithUserKey(userKey))
if err != nil {
log.Println("QueryWorkItem detail failed, err: ", err.Error())
return nil, err
}
if !resp.Success() {
msg := fmt.Sprintf("QueryWorkItemDetail failed,api err=%s,resp.Error())
log.Printf("QueryWorkItemDetail failed,api err=%s", resp.Error())
return nil, errors.New(msg)
}
log.Printf("QueryWorkItemDetail success,len=%d", len(resp.Data))
return resp.Data, nil
}
我们实际的缺陷数据如下
上传数据
func main() {
u, _ := url.Parse("https://xxxxxxx.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: os.Getenv("xxxxx"),
SecretKey: os.Getenv("xxxxx"),
},
})
name := "issue_detail.txt"
var issueNames string
// 1. 获取缺陷列表
issues, _ := queryWorkItemDetail(context.Background(), "67283830b49caa303bfcb58e", "issue",
[]int64{4982464530}, nil, nil, "user_key")
for _, issue := range issues {
issueNames += issue.Name + "\n"
}
f := strings.NewReader(issueNames)
_, err := c.Object.Put(context.Background(), name, f, nil)
if err != nil {
panic(err)
}
}
需要将腾讯云存储的信息更新为实际的信息,调用queryWorkItemDetail时需要传入实际的用户user_key信息
经过上述的操作可以去云存储上查看实际上传的文件
issue_detail.txt的详细信息
至此,我们已经可以将缺陷信息上传至腾讯云存储了~