• 在定制工作项时,把“团队项目”作为变量获取生成版本信息


    有用户最近提出这个需求:

    通过工作项定制,新增一个字段用以保存项目Bug的“影响版本”信息,但是需要从当前团队项目的服务器生成纪录中获取版本的选项,类似默认模板中的“发现版本”和“集成版本”。

    在使用TFS的工作项时,会看到两个这样的字段“发现版本”和“集成版本”,这两个字段自动获取当前团队的服务器生成历史纪录,如下图:

    image

    按照TFS的系统设计,服务器生成的历史纪录是保存在全局列表(Global List)设置中的,工作项自动读取全局列表中对应的信息。下面的代码是一个团队项目集合的全局列表数据示例:

    <?xml version="1.0" encoding="utf-8"?>
    <gl:GLOBALLISTS xmlns:gl="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists">
      <GLOBALLIST name="Builds - Scrum2015">
        <LISTITEM value="&lt;无&gt;" />
        <LISTITEM value="TosProject/V1.03" />

    </GLOBALLIST>
      <GLOBALLIST name="Builds - CMMI2015">
        <LISTITEM value="WebApplication1Main/WebApplication1Main_20150916.1" />
        <LISTITEM value="Solution1/Solution1_20150916.1" />
      </GLOBALLIST>
    </gl:GLOBALLISTS>

    我们再来分析下面的工作项字段定义,看看“集成版本”字段是如何以全局列表作为自己的选项的:

    <FIELD name="集成版本" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
            <SUGGESTEDVALUES expanditems="true">
              <LISTITEM value="&lt;无&gt;" />
            </SUGGESTEDVALUES>
    </FIELD>

    从上面的字段定义可以看到,集成版本并没有设置可选值,但是当团队项目运行了服务器生成以后,系统会自动在该字段中添加可选值,就像下面高亮部分的代码:
    <FIELD name="集成版本" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension"> 

            <SUGGESTEDVALUES expanditems="true" filteritems="excludegroups">
              <GLOBALLIST name="Builds - Scrum2015" />
            </SUGGESTEDVALUES>
            <SUGGESTEDVALUES expanditems="true">
              <LISTITEM value="&lt;无&gt;" />
            </SUGGESTEDVALUES>
    </FIELD>

    需要特别注意,这是系统自动添加的,并且根据团队项目名称的不同,在每个团队项目中所有包含了“集成版本”的的工作项,例如需求、Bug、问题等工作项中的“集成版本”字段。

    通过上面的分析,可以看出“集成版本”字段依据团队项目名称,自动抽取全局列表中的对应数据,作为自己的可选项。

    那么,是否可以在工作项定义中,使用团队项目名称作为变量呢?答案是不能!目前最新版本的TFS 2015并不支持在字段定义中使用变量。如果需要实现上述功能,可以使用字段定义中的规则“When”。下面介绍如何实现When实现动态读取全局变量中的数据:

    例如我们新增加了一个字段”影响版本“(MyCompany.Requirements.EffectedVersion),需要为这个字段设置选项,选项的来源为当前团队项目的持续集成版本。下面是字段定义的示例代码:

    <FIELD name="影响版本" refname="Microsoft.VSTS.Build.EffectedVersion" type="String" reportable="dimension">
            <WHEN field="System.TeamProject" value="CMMI2015">
              <SUGGESTEDVALUES expanditems="true">
                <GLOBALLIST name="Builds - CMMI2015" />
              </SUGGESTEDVALUES>
            </WHEN>
            <WHEN field="System.TeamProject" value="Scrum2015">
              <SUGGESTEDVALUES expanditems="true">
                <GLOBALLIST name="Builds - Scrum2015" />
              </SUGGESTEDVALUES>
            </WHEN>

            <!--需要按照上面的规律,将集合中的所有团队项目罗列出来-->
            <SUGGESTEDVALUES expanditems="true">
              <LISTITEM value="&lt;无&gt;" />
            </SUGGESTEDVALUES>
          </FIELD>

    然后,通过下面的命令,将全局列表上传的TFS团队项目集合中

    C:>witadmin importgloballist /collection:http://tfs2015cn:8080/tfs/defaultcollection /f:g.xml

    下面是成以后的截图示例:

    image

    http://www.cnblogs.com/danzhang/  ALM MVP 张洪君

  • 相关阅读:
    自顶向下的单元测试策略
    孤立的测试策略
    单元测试
    控制流与数据流,信息流
    白盒测试的特点
    白盒测试
    黑盒测试优缺点
    appium对博客园APP进行自动化测试
    招聘测试人员,我在面试什么?
    测试开发这一年
  • 原文地址:https://www.cnblogs.com/danzhang/p/4816063.html
Copyright © 2020-2023  润新知