none
利用VSTS实现Daily Build RRS feed

  • 常规讨论

  • 1、新建Team Build Type,“Project1Build”

    2、建立批处理,"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\TfsBuild.exe" start Server1  "Project1" "Project1Build"。利用Windows自带的任务计划,执行批处理。Server1是服务器,Project1是项目,Project1Build是构建类型。

    3、自己写一个邮件通知组件,通知团队成员编译结果,将通知命令放入到上面的批处理中。

    需要用到下面的两个WebService

    http://Server1:8080/Build/v1.0/BuildController.asmx

    http://Server1:8080/Build/v1.0/BuildStore.asmx

    下面的代码是获取BuildData信息。

     BuildStore bi = new BuildStore();
    bi.Credentials = System.Net.CredentialCache.DefaultCredentials;
    BuildData[] builds = null;
    try
    ...{
    builds = bi.GetListOfBuilds(_teamProject, _buildType);
    }
    catch (Exception e)
    ...{
    Log.LogError("Exception when calling Webservice: " + bi.Url, e.ToString());
    throw;
    }
    if (builds != null)
    ...{
    foreach (BuildData bd in builds)
    ...{
    if (bd.BuildQuality == "Unexamined")
    ...{
    ClientBuildData data = new ClientBuildData();
    data.BuildUri = bd.BuildUri;
    data.DropLocation = bd.DropLocation;
    data.BuildNumber = bd.BuildNumber;
    data.BuildStatus = bd.BuildStatus;
    data.StartTime = bd.StartTime;
    this.buildDatas.Add(data);
    }
    }
    }
    return true;

    发送邮件通知的代码我就不贴了,到处都是。

    4、做安装盘也可以写成批处理,无非是copy编译好的dll到安装目录。还有一点就是可能需要从VSS中获取Sql等。可以通过:tf get "\\Server1\Sql" /force /recursive ,上MSDN查找一下VSS的tf命令吧。

    做完这些事情之后,每天上班,就会看到半夜build的情况,如果有问题,马上就能发现。当需要做安装盘的时候,只是选择编译成功的build,执行一下批处理即可。如果写了UnitTest,作用更大。实现Daily build,目的就是让开发过程中的问题及时暴露、及时修复。另外一点就是提高做build的效率。

    2009年5月31日 6:14