我使用VSTS在线构建和发布过程。我有两台服务器,它们之间有防火墙(不能只在Server1上运行脚本来完成在服务器之间移动文件)。我在两台服务器上都安装了VSTS Agent,并且每台服务器都分配给了VSTS中自己的Pool。我可以在任何问题上发布到任一服务器。
我无法弄清楚(或者甚至是否可能)我如何将文件从一个池中的代理复制到VSTS'发布工作目录/临时路径(甚至更好地从一个池,直接复制到另一个代理)池)?
例如,我在Pool1中有一个Server1,在Pool2中有一个Server2。对于我的发布步骤,我选择了“Run on agent”并选择了Pool1。然后我有一个任务,将文件复制到代理程序,它做了它的事情。我需要做的是将一个zip文件从Pool1服务器可访问的路径下拉到VSTS,并将该zip文件发送到Pool2服务器可用的路径。
是否可以从代理池下载文件?我假设如果我能够在发布临时路径/工作目录中的“运行在pool1步骤”存储该zip文件,我将能够执行Windows文件复制以将其从工作目录发送到“运行”在pool2步骤“。
答案 0 :(得分:1)
如果Windows Machine File Copy任务可以访问其他计算机。您可以使用Windows Machine File Copy task将文件从计算机复制到另一台计算机。任务设置如下:
来源:您要复制的文件的路径,例如$(System.DefaultWorkingDirectory)/build/drop
。
计算机:要复制到的其他计算机的IP。
管理员登录: ComputerName\AdminUserName
。
密码:管理员用户名的密码。
目标文件夹:您要将文件复制到的其他计算机的路径。
如果仍然无法根据防火墙设置访问其他计算机,则可以将文件上传到两台计算机都可以访问的位置(例如您自己的网站或github等),然后使用一个电源shell,用于从网站下载文件。
答案 1 :(得分:0)
不,没有将文件从代理下载到其他任务的任务,如果这些服务器无法连接到彼此上传/下载文件(例如FTP,HTTP),则还需要中间服务器
另一方面,文件不存储在代理池中,它们在代理中,代理池用于组织代理,不同的服务器/代理可以在同一个代理池中,服务器也可以在多个代理中池。 Agent pools and queues
答案 2 :(得分:0)
听起来你要做一个非常脆的意大利面条式的版本。这些所需的文件是否可以保存在源代码管理中或作为构建工件?这样您就可以克隆/拉回存储库,或者只使用现在预览中的下载工件任务。