Deployment 如何使用版本管理部署到远程数据中心
我们正在本地运行TFS和发布管理,我想将我的应用程序部署到远程数据中心。 访问是通过internet进行的,因此没有可用的windows共享。 我使用的是vNext模板,afaik RM似乎只支持windows共享上的unc路径 如何使用版本管理将软件部署到此数据中心 我正在研究这个解决方案: 在数据中心内的IIS上使用WebDav。 RM server和Target可以使用内置在windows中的WebDav客户端,并通过unc路径进行访问 我还没有让它工作,因为RM不会使用正确的凭据登录到webdav服务器 用我的解决方案更新 这只是概念证明,未经生产测试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
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);
}
}
}
}
此解决方案经过认证尝试在本地服务器上使用获取内容,然后在远程服务器上设置内容,并将文件内容传递给其他服务器
可以将所有内容打包到某种存档中。尝试使用在本地服务器上获取内容,然后在远程服务器上设置内容,并将文件内容传递给其他服务器
可以将所有内容打包到某种存档中。版本管理人员正在将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)中可用于访问共享的目标计算机
- Key=RMSharedUNCPathUser;值=域D1用户名
- Key=RMSharedUNCPathPwd;Value=上面定义的用户的密码
RM只与UNC一起工作,你说得对 您可以利用这一点使您的方案发挥作用-
理论上
- 在RM域上创建一个边界计算机,可以在其中复制您的放置
- 然后,在数据中心上运行的部署操作可以使用在该域上具有访问权限的凭据从此边界计算机复制位。(这些凭据由您在WPF控制台中提供)
1。在RM server域(如D1)上有一台专用计算机,该计算机将用作边界计算机。
2。通过指定数据中心将使用的共享路径,将此计算机定义为RM中的边界计算机。转到WPF控制台中的设置选项卡,创建一个新变量-{Key=RMSharedUNCPath,Value=\\BoundaryMachine\DropsLocation}。RM现在知道您想将此计算机用作边界计算机。
3.确保您拥有这些权限
- RM Server应具有\\BoundaryMachine\DropsLocation共享的写入权限
- 将域D1的凭据传递到数据中心(域D2)中可用于访问共享的目标计算机