Deployment 如何使用版本管理部署到远程数据中心

Deployment 如何使用版本管理部署到远程数据中心,deployment,release-management,continuous-deployment,ms-release-management,Deployment,Release Management,Continuous Deployment,Ms Release Management,我们正在本地运行TFS和发布管理,我想将我的应用程序部署到远程数据中心。 访问是通过internet进行的,因此没有可用的windows共享。 我使用的是vNext模板,afaik RM似乎只支持windows共享上的unc路径 如何使用版本管理将软件部署到此数据中心 我正在研究这个解决方案: 在数据中心内的IIS上使用WebDav。 RM server和Target可以使用内置在windows中的WebDav客户端,并通过unc路径进行访问 我还没有让它工作,因为RM不会使用正确的凭据登录到w

我们正在本地运行TFS和发布管理,我想将我的应用程序部署到远程数据中心。 访问是通过internet进行的,因此没有可用的windows共享。 我使用的是vNext模板,afaik RM似乎只支持windows共享上的unc路径

如何使用版本管理将软件部署到此数据中心

我正在研究这个解决方案: 在数据中心内的IIS上使用WebDav。 RM server和Target可以使用内置在windows中的WebDav客户端,并通过unc路径进行访问

我还没有让它工作,因为RM不会使用正确的凭据登录到webdav服务器

用我的解决方案更新 这只是概念证明,未经生产测试

  • 设置可从RM server和目标服务器访问的WebDav站点
  • 在两台服务器上安装“桌面体验”功能
  • 创建以下DLL

    using System;
    using System.ComponentModel.Composition;
    using System.Diagnostics;
    using System.IO;
    using Microsoft.TeamFoundation.Release.Common.Helpers;
    using Microsoft.TeamFoundation.Release.Composition.Definitions;
    using Microsoft.TeamFoundation.Release.Composition.Services;
    namespace DoTheNetUse
    {
      [PartCreationPolicy(CreationPolicy.Shared)]
      [Export(typeof(IThreadSafeService))]
      public class DoTheNetUse : BaseThreadSafeService
      {
        public DoTheNetUse() : base("DoTheNetUse")
        {}
    
        protected override void DoAction()
        {
      Logger.WriteInformation("DoAction: [DoTheNetUse]");
      try
      {
        Logger.WriteInformation("# DoTheNetUse.Start #");
    
        Logger.WriteInformation("{0}, {1}", Environment.UserDomainName, Environment.UserName);
        {
          Logger.WriteInformation("Net use std");
          var si = new ProcessStartInfo("cmd.exe", @"/c ""net use \\sharedwebdavserver.somewhere\DavWWWRoot\ /user:webdavuser webdavuserpassword""");
          si.UseShellExecute = false;
          si.RedirectStandardOutput = true;
          si.RedirectStandardError = true;
    
          var p = Process.Start(si);
    
          p.WaitForExit();
          Logger.WriteInformation("Net use output std:" + p.StandardOutput.ReadToEnd());
          Logger.WriteInformation("Net use output err:" + p.StandardError.ReadToEnd());
        }
        //##########################################################
            Logger.WriteInformation("# Done #");
          }
          catch (Exception e)
          {
            Logger.WriteError(e);
          }
        }
      }
    }
    
  • 将其命名为“ReleaseManagementMonitor2.dll”

  • 将其放入服务“ReleaseManagementMonitor”的a子文件夹中
  • 将共享路径配置为以下状态的解决方案
  • 不要对现有的“ReleaseManagementMonitor2.dll”进行过度加载

    这样做的原因是MEF。 ReleaseManagementMonitor服务尝试从所有子文件夹加载dll“ReleaseManagementMonitor2.dll”。 此dll实现RM识别的服务接口。 它运行“net use”将凭据应用于服务运行的会话,从而授予对无法访问的webdav服务器的访问权


    此解决方案经过认证

    尝试在本地服务器上使用获取内容,然后在远程服务器上设置内容,并将文件内容传递给其他服务器


    可以将所有内容打包到某种存档中。

    尝试使用在本地服务器上获取内容,然后在远程服务器上设置内容,并将文件内容传递给其他服务器


    可以将所有内容打包到某种存档中。

    版本管理人员正在将VisualStudioRemoteDeployer.exe复制到目标服务器上的C:\Windows\DtlDownloads\VisualStudioRemoteDeployer文件夹,然后使用robocopy将脚本从指定位置复制到目标服务器


    因此,您必须从目标服务器向脚本位置授予权限。

    发布管理层正在将VisualStudioRemoteDeployer.exe复制到目标服务器上的C:\Windows\DtlDownloads\VisualStudioRemoteDeployer文件夹,然后使用robocopy将脚本从指定位置复制到目标服务器


    因此,您必须从目标服务器向脚本位置授予权限。

    RM仅适用于UNC,您在这方面是正确的

    您可以利用这一点使您的方案发挥作用-
    理论上

    • 在RM域上创建一个边界计算机,可以在其中复制您的放置
    • 然后,在数据中心上运行的部署操作可以使用在该域上具有访问权限的凭据从此边界计算机复制位。(这些凭据由您在WPF控制台中提供)
    这是如何工作的

    1。在RM server域(如D1)上有一台专用计算机,该计算机将用作边界计算机。

    2。通过指定数据中心将使用的共享路径,将此计算机定义为RM中的边界计算机。转到WPF控制台中的设置选项卡,创建一个新变量-{Key=RMSharedUNCPath,Value=\\BoundaryMachine\DropsLocation}。RM现在知道您想将此计算机用作边界计算机。

    3.确保您拥有这些权限

    • RM Server应具有\\BoundaryMachine\DropsLocation共享的写入权限
    • 将域D1的凭据传递到数据中心(域D2)中可用于访问共享的目标计算机
    4。凭证可以在WPF控制台上传递,您必须在设置选项卡中再次定义以下两个配置变量

    • Key=RMSharedUNCPathUser;值=域D1用户名
    • Key=RMSharedUNCPathPwd;Value=上面定义的用户的密码

    PS-变量名区分大小写

    另外,要让RM知道您想要使用SharedUNC机制,请选中RM服务器的相应复选框,并通过IP而不是DNS名称连接到它,因为这些必须位于不同的域中,即


    RM只与UNC一起工作,你说得对

    您可以利用这一点使您的方案发挥作用-
    理论上

    • 在RM域上创建一个边界计算机,可以在其中复制您的放置
    • 然后,在数据中心上运行的部署操作可以使用在该域上具有访问权限的凭据从此边界计算机复制位。(这些凭据由您在WPF控制台中提供)
    这是如何工作的

    1。在RM server域(如D1)上有一台专用计算机,该计算机将用作边界计算机。

    2。通过指定数据中心将使用的共享路径,将此计算机定义为RM中的边界计算机。转到WPF控制台中的设置选项卡,创建一个新变量-{Key=RMSharedUNCPath,Value=\\BoundaryMachine\DropsLocation}。RM现在知道您想将此计算机用作边界计算机。

    3.确保您拥有这些权限

    • RM Server应具有\\BoundaryMachine\DropsLocation共享的写入权限
    • 将域D1的凭据传递到数据中心(域D2)中可用于访问共享的目标计算机
    4.凭证可以在WPF控制台上传递,您必须定义