在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[]; patchDocument[] = new { op = "add", path = "/fields/System.Title", value = "Authorization Errors" };
patchDocument[] = new { op = "add", path = "/fields/Microsoft.VSTS.TCM.ReproSteps", value = "ReproSteps" };
patchDocument[] = new { op = "add", path = "/fields/Microsoft.VSTS.Common.Priority", value = "" };
patchDocument[] = 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": ,
"rev": ,
"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": ,
"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方法,还是第一次用。
在TFS中通过程序动态创建Bug并感知Bug解决状态的更多相关文章
- .Net 中的反射(动态创建类型实例) - Part.4
动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...
- .Net 中的反射(动态创建类型实例)
动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...
- js中几种动态创建元素并设置文本内容的比较,及性能测试。
内容 1 appendChild (都兼容) 2.insertAdjacentHTML (都兼容) 3.innerHTML (都兼容) 4.createDocumentFragment (都兼容) 动 ...
- vue+el-element中根据文件名动态创建dialog的方法
背景 在项目中使用对话框的通常做法是把对话框封装成组件,在使用的地方引入,然后添加到template,使用visible.sync控制对话框的显示/隐藏,监听confirm事件处理用户点击确定.如下: ...
- [UE4]C++中SpawnActor用法(动态创建Actor)
转自:http://aigo.iteye.com/blog/2270177 C++中创建一个Level并添加的Runtime当中 C++中Spawn一个基于蓝图的Actor https://answe ...
- elk搜集日志,实现logstash根据message中结构不同动态创建索引并扩展功能,区分message中json和非json数据简单方式
搜集日志,但是框架本身也会打印很多日志是字符串的.我们自己希望的日志用json,但是又需要json字段可以扩展,logstash收集日志后都放在了message字段中,我们自定义打印的是json串,s ...
- macOS 中使用 phpize 动态添加 PHP 扩展的错误解决方法
使用 phpize 动态添加 PHP 扩展是开发中经常需要做的事情,但是在 macOS 中,首次使用该功能必然会碰到一些错误,本文列出了这些错误的解决方法. 问题一: 执行 phpize 报错如下: ...
- Ubuntu中wine程序安装windows软件中文乱码如何解决
1.安装wine sudo apt install wine 2.安装中文程序方法 下载exe文件 在命令行执行 wine 文件名.exe 3.中文乱码原因分析 查看/home/用户名/.wine/d ...
- photoshop cs6安装过程中安装程序遇到错误:请重启计算机,解决办法
1.关闭防火墙和杀毒软件 2.删除注册表 依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager目录,找到其中的 ...
随机推荐
- TCP/IP协议族(二) HTTP报文头解析
本篇博客我们就来详细的聊一下HTTP协议的常用头部字段,当然我们将其分为请求头和响应头进行阐述.下方是报文头每个字段的格式,首先是头部字段的名称,如Accept,冒号后方紧跟的是该字段名所对应的值,每 ...
- 解决IIE8不支持媒体查询的方法
最近在解决UI问题时碰到以下浏览器不兼容性问题(本人属于UI业余操作者,很多想法就很业余了): 问题:IE8及其以下低版本IE浏览器在缩小窗口时,UI没有按照相应的要求显示窗口缩小时对应的布局:其他浏 ...
- 将图片保存成png 或者jpg格式
-(void)saveImage:(UIImage*)image{ NSString *pngPath = [NSHomeDirectory() stringByAppendingPathCo ...
- 报表学习总结(一)——ASP.NET 水晶报表(Crystal Reports)的简单使用
一.水晶报表简介 Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表.水晶报表是业内最专业.功能最强的报表系统,它除了强大的报表功能外.最大的优势是实现了与绝 ...
- 初探Lambda表达式/Java多核编程【2】并行与组合行为
今天又翻了一下书的目录,第一章在这之后就结束了.也就是说,这本书所涉及到的新的知识已经全部点到了. 书的其余部分就是对这几个概念做一些基础知识的补充以及更深层次的实践. 最后两个小节的内容较少,所以合 ...
- 【中文分词】结构化感知器SP
结构化感知器(Structured Perceptron, SP)是由Collins [1]在EMNLP'02上提出来的,用于解决序列标注的问题:中文分词工具THULAC.LTP所采用的理论模型便是基 ...
- DataReader的用法程序简析
// 2015/07/05 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- GAME(A)性能测试过程模型
- Qt 地址薄 (一) 界面设计
实现一个简单的地址薄,功能包括:地址的添加.浏览.编辑.查找.输出文件等. 1 界面和元素 整个地址薄界面,可视为一个 AddressBook 类.其中的 Name.Address 以及两个编辑栏, ...
- ubuntu16.04下安装配置深度学习环境(一、cuda7.5的安装)
1.下载所需要的软件 cuda7.5下载(点击下载链接),cudnn4.0下载 2.安装NVIDIA驱动. 一般有两种方法:1)一种方法是利用"软件和更新"来安装,依次选择 系统设 ...