我们正在使用 Microsoft 托管代理为我们的应用程序的自动化测试场景运行构建管道。我们想要实现的是,通过自动化程序下载文件(从无头 Chrome 浏览器),然后导航到下载路径并打开它。
如何找到Agent内部下载文件的路径?
从官方文档链接快速编译与在 Linux 和 Windows 自托管代理上构建的路径相关的预定义变量列表。
您正在寻找的是
Agent.BuildDirectory
或 Pipeline.Workspace
。
变量类型 | 变量 | 描述 | 示例 |
---|---|---|---|
代理 | 代理.构建目录 | 代理上创建给定构建管道的所有文件夹的本地路径 | D:\..绅士\_工作 |
代理 | 代理.主目录 | 代理安装的目录 | C:绅士 |
代理 | 代理.Temp目录 | 每次管道作业后都会清理的临时文件夹 | D:\.. gent\_work\_temp |
代理 | 代理.工具目录 | 节点工具安装程序和使用Python版本在工具的多个版本之间切换等任务使用的目录 | D:\..gent\_work\_tool |
代理 | 代理.工作文件夹 | 代理的工作目录 | c:gent_work |
构建 | 构建.Sources目录 | 代理上下载源代码文件的本地路径。 | c: gent_work \s |
构建 | 构建.ArtifactStagingDirectory | 代理上的本地路径,任何工件在推送到目的地之前都将复制到该路径。使用此文件夹的典型方法是通过复制文件和发布构建工件任务来发布构建工件 | c:gent_work |
构建 | 构建.StagingDirectory | 代理上的本地路径,任何工件在推送到目的地之前都将复制到该路径。 | c:gent_work |
构建 | 构建.Binaries目录 | 代理上的本地路径,您可以用作已编译二进制文件的输出文件夹 | c:gent_work |
构建 | 构建.Repository.LocalPath | 代理上下载源代码文件的本地路径。 | c: gent_work \s |
构建 | Common.TestResults目录 | 代理上创建测试结果的本地路径。 | c: gent_work \TestResults |
管道 | 管道.工作区 | 特定管道的工作空间目录 | /家/vsts/工作/1 |
系统 | 系统.默认工作目录 | 代理上下载源代码文件的本地路径。 | c: gent_work \s |
安装代理时,您指定工作目录。在管道任务中,您可以使用 $(Agent.BuildDirectory) 等变量准确找出该目录中文件的暂存位置。这可能不是您需要的确切位置,但我认为它的方向是正确的。
有关预定义变量的完整列表,请参阅此处:https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
您可以查看此文档:
Linux 的默认位置
/home/<username>/Downloads
。
我在
Microsoft hosted agent-window2019
中使用测试 C# 代码(来自 Daniel 的提示!)进行测试,例如:
static void Main(string[] args)
{
string FILEURI = "https://www.nuget.org/api/v2/package/Cauldron.Newton/2.0.0";
System.Diagnostics.Process prozess = new System.Diagnostics.Process();
prozess.StartInfo.FileName = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
prozess.StartInfo.Arguments = "--download " + FILEURI;
prozess.Start();
Console.WriteLine("Test starts.");
}
然后我使用像
dir c:\users\VssAdministrator\cauldron.newton.2.0.0.nupkg /s /b
这样的命令来查找下载文件的位置:cauldron.newton.2.0.0.nupkg
。
然后我确认Chrome的默认下载位置仍然是
C:/Users/{user}/Downloads
,与使用自助代理或本地下载相同。 (VssAdministrator是运行Windows托管代理时的用户)
所以我认为Linux托管代理应该有类似的行为。您可以尝试从
/home/<username>/Downloads
文件夹中查找您的文件。希望有帮助。
我部分通过这个问题找到了答案,我问的一个问题问的是完全相同的事情,但对我来说,它是: C:\Users\VssAdministrator\Downloads