• 在TFS中通过程序动态创建Bug并感知Bug解决状态


      为便于跟踪问题解决情况,预警引擎产生的比较严重的预警日志,需要在TFS中登记Bug,通过TFS的状态流转,利用TFS Bug的Web挂钩功能,动态感知Bug解决状态,从而跟踪预警问题的解决状态,

      整体解决方案如下:

    微软提供了很好的文档支持:

    https://www.visualstudio.com/en-us/docs/integrate/api/wit/work-items#create-bug

    创建Bug示例代码如下:

    public void CreateBug()
    {
       string _userName = "userName";
       string _userPwd = "userPwd";
       string _credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", _userName , _userPwd)));
    
       Object[] patchDocument = new Object[4];
    
       patchDocument[0] = new { op = "add", path = "/fields/System.Title", value = "Authorization Errors" };
       patchDocument[1] = new { op = "add", path = "/fields/Microsoft.VSTS.TCM.ReproSteps", value = "ReproSteps" };
       patchDocument[2] = new { op = "add", path = "/fields/Microsoft.VSTS.Common.Priority", value = "1" };
       patchDocument[3] = new { op = "add", path = "/fields/Microsoft.VSTS.Common.Severity", value = "2 - High" };
    
       //use the httpclient
       using (var client = new HttpClient())
       {
           //set our headers
           client.DefaultRequestHeaders.Accept.Clear();
           client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
           client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _credentials);
    
           //serialize the fields array into a json string
           var patchValue = new StringContent(JsonConvert.SerializeObject(patchDocument), Encoding.UTF8, "application/json-patch+json"); 
    
           var method = new HttpMethod("PATCH");
           var request = new HttpRequestMessage(method, "TFS Bug URL") { Content = patchValue };
           var response = client.SendAsync(request).Result;
    
           //if the response is successfull, set the result to the workitem object
           if (response.IsSuccessStatusCode)
           {
               var result = response.Content.ReadAsStringAsync().Result;
           }
       }
    }

    返回的result是一个Json串,形如:

    {
        "id": 58141,
        "rev": 1,
        "fields": {
            "System.AreaPath": "Bugs",
            "System.TeamProject": "Bugs",
            "System.IterationPath": "Bugs",
            "System.WorkItemType": "Bug",
            "System.State": "新建",
            "System.Reason": "新建",
            "System.AssignedTo": "用户 <TELD\\user>",
            "System.CreatedDate": "",
            "System.CreatedBy": "用户 <TELD\\user>",
            "System.ChangedDate": "",
            "System.ChangedBy": "用户 <TELD\\user>",
            "System.Title": "测试新增",
            "System.BoardColumn": "新建",
            "System.BoardColumnDone": false,
            "Microsoft.VSTS.Common.StateChangeDate": "",
            "Microsoft.VSTS.Common.Priority": 2,
            "Microsoft.VSTS.Common.Severity": "3 - 中",
            "Microsoft.VSTS.Common.ValueArea": "业务",
            "Teld.Bug.Source": "预警引入",
            "Teld.Bug.DetectionMode": "集成测试",
            "Teld.Bug.ifCausedByModification": "",
            "Teld.Bug.Type": "程序错误",
            "Teld.Bug.IfAgreeResultState": "初始",
            "Teld.Bug.Client": "WebPC",
            "Teld.Bug.FunctionMenu": "预警中心--预警日志",
            "WEF_794F3BA7F8DF460D97A964BF78CEC582_Kanban.Column": "新建",
            "WEF_794F3BA7F8DF460D97A964BF78CEC582_Kanban.Column.Done": false,
            "Microsoft.VSTS.TCM.ReproSteps": "重现步骤"
        },
        "_links": {
            "self": {
                "href": ""
            },
            "workItemUpdates": {
                "href": ""
            },
            "workItemRevisions": {
                "href": ""
            },
            "workItemHistory": {
                "href": ""
            },
            "html": {
                "href": ""
            },
            "workItemType": {
                "href": ""
            },
            "fields": {
                "href": ""
            }
        },
        "url": ""
    }

     以前只用过Http协议中的Get、Post、Put等,这个Patch方法,还是第一次用。

  • 相关阅读:
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS博客作业01--线性表
    C博客作业05--指针
    C语言博客作业04--数组
    C博客作业03--函数
    博客作业——循环结构
    C博客作业05-指针
    C博客作业04--数组
  • 原文地址:https://www.cnblogs.com/liugh/p/6550005.html
Copyright © 2020-2023  润新知