我试图从VSTS发布到运行IIS的VM(在AWS上运行)。为此,我使用了三个任务。
在发布之前,我正在运行一个构建管道,它为我提供了一个包含Web应用程序的工件(webapp.zip)。 当我手动将它放在服务器上时,我可以运行我的发布的第2步和第3步,应用程序正常工作。我遇到的问题是我没有让Windows机器文件复制工作。它总是抛出异常,给出“系统错误53:未找到网络路径'”。当然这些机器没有加入域,因为我在VSTS上运行我的版本并且需要AWS VM上的文件。我尝试打开端口445(用于文件共享)并确保用户拥有目标计算机上目标路径的权限。 所以我的问题是:如果两台机器没有连接,我怎样才能真正将文件从VSTS移动到AWS VM。
答案 0 :(得分:1)
改为使用FTP Upload或cURL upload步骤/任务。
关于如何创建FTP站点,您可以参考这篇文章:Creating a New FTP Site in IIS 7。
答案 1 :(得分:-1)
免责声明:此答案仅说明如何满足使用Windows机器文件复制和管理/部署IIS任务的任务的要求。 请始终关注目标主机的安全性,其强化和安全评估是绝对必要的。
如评论中所述,您需要保护部署渠道免受外界影响,这是一个高级示例:
<强>答案:强> 为了使用您需要的Windows Machine File Copy task:
启用文件和打印机共享,从管理命令提示符运行以下命令:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
确保在目标计算机上安装PowerShell 4或更新版本;从PS命令提示符执行以下操作将打印本地计算机上安装的版本:
PS> $PSVersionTable.PSVersion
要获取PowerShell 5,您可以安装WMF 5
对于其他两个任务(管理/部署IIS任务),两者都要求您在目标计算机上启用WinRM HTTPS侦听器。对于开发部署方案,您可以按照以下步骤操作:
从官方VSTS任务GitHub存储库下载ConfigureWinRM.ps1 PowerShell脚本;
从Administrative PowerShel命令提示符启用RemoteSigned PowerShell执行策略:
PS> Set-ExecutionPolicy RemoteSigned
使用以下参数运行脚本:
PS> ConfigureWinRM.ps1 FQDN https
请注意,FQDN是您的计算机的完整域名,因为VSTS任务可以访问该域名,例如: myhostname.domain.example。 另请注意,此脚本从Internet下载两个可执行文件( makecert.exe 和 winrmconf.cmd ),因此该计算机必须具有Internet连接。否则只需下载这两个文件,将它们放在脚本中,从脚本中注释掉下载文件调用。
现在,您已使用自签名证书启用了WinRM HTTPS侦听器。请记住使用“测试证书”选项(具有讽刺意味的是,不测试证书,更好的名称应该是“跳过CA检查”)这两项任务。
在生产部署方案中,您可能希望使用已正确签名的证书。
答案 2 :(得分:-2)
Windows文件复制旨在在同一网络上运行,并在互联网上启用它会打开您的服务器进行黑客攻击。它是为内部网络设计的。除非妥善管理,否则FTP也会带来严重的安全风险。
向前推进的最简单方法是在AWS中的VM上运行要发布的代理。然后,代理将下载工件到AWS VM并运行您需要安装的任何任务。
这使您可以在本地计算机上运行任务,而不会将其置于安全风险之中。
如果您需要在AWS中管理多台计算机,则可以轻松创建一个本地网络,允许您的单个代理使用Windows文件复制将文件推送到多个VM而无风险。