在tfs构建中获取构建代理文件夹路径

时间:2018-06-11 06:43:44

标签: batch-file tfs build tfsbuild tfs2013

如何使用批处理文件访问TFS构建代理文件夹路径?

enter image description here

我从构建工作流调用runcript工具(调用windows batchfile)。 我尝试使用环境变量BUILD_REPOSITORY_LOCALPATH($(BUILD_REPOSITORY_LOCALPATH),$ env:BUILD_REPOSITORY_LOCALPATH)但是他们提出任何结果。 需要一些帮助。

3 个答案:

答案 0 :(得分:1)

我使用了另一种解决方法,而不是通过工作区获取。从sourceDirectory文件夹我深入查找我的解决方案项目文件,包含我的解决方案项目的路径是我需要的本地目录路径

从批处理文件中我调用我的exe并传递%TF_BUILD_SOURCESDIRECTORY%作为参数。

string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory) //targetdirectory would be the input parameter from batch file

for (int i = 0; i < subdirectoryEntries.Length ; i++)
        {
            //My root folder always contains a specific folder with name MyFolder and a file Myfile.sln
            if (subdirectoryEntries[i].ToString().ToLower().Contains(@"MyFolder")) 
            {
                Console.Writeline("My source code path is " + targetDirectory);
            }   
            //Similarly I check for Myfile.sln and then get my path.             
        }

这可能是一种非常粗暴的方式,这对我有用。

答案 1 :(得分:0)

您要查找的变量是TF_BUILD_SOURCESDIRECTORY。请参阅XAML build documentation

答案 2 :(得分:0)

TF_BUILD_SOURCESDIRECTORY :构建代理工作目录的sources子目录。该目录包含您的源代码。例如:C:\Build\BuildBot3\CoolApp\CIBuild\src

如果您想获得C:\TFS_Build\src\V9,它只是本地路径:您已在服务器上映射服务器路径的路径。没有任何内置TF_BUILD environment variables可以达到您的要求。

您可以使用TFS API获取相关信息,首先获取构建服务器工作区的工作区信息,然后执行get选项,示例代码供您参考:

// Get the workspace information for the build server's workspace
var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(sourcesDirectory);

// Get the TFS Team Project Collection information from the workspace cache
// information then load the TFS workspace itself.
var server = new TfsTeamProjectCollection(workspaceInfo.serverUri);
var workspace = workspaceInfo.GetWorkspace(server);
     

拥有工作区后,您可以查询它以获取路径映射。它   将根据服务器从本地路径进行必要的转换   您的工作区映射。例如:

workspace.GetServerItemForLocalItem("C:\TFS_Build\src\V9");
     

workspace.GetLocalItemForServerItem("$/DEV/V9");
     

但是,如果您的构建定义,此机制将起作用   实际上设置工作区以包含这些文件。

更多详情请参阅此类似问题:How do I resolve the root and relative paths of TFS folders on the server?

来自OP的

更新:

  

从sourceDirectory文件夹我深入查找我的解决方案项目   文件,包含我的解决方案项目的路径是本地目录   我需要的路径