Visual Studio 和发布经理

Visual Studio and Release Manager

我一直在研究 Visual Studio 和 Microsoft Release Manager。我发现了一些我没有预料到的行为,我希望有人能够证实这些(以防我弄错了方向)。

我的目标是:

  1. 在 Visual Studio 在线托管我的代码。
  2. 使用部署代理将所述代码部署到本地或 Azure 托管的 VM。

我的第一次尝试;使用作为 Visual Studio Online 的一部分提供的 Release Manager 服务。但是我发现我无法使用部署在本地(或 Azure VM 中)的代理连接到 Release Manager Online。

我后来在 https://www.visualstudio.com/en-us/get-started/release/manage-your-release-vs

找到了这篇文章

You have the following options for managing your releases:

Using Release Management as a service on Visual Studio Online: You need a Visual Studio Online account. You cannot use Chef and you can deploy only to vNext environments based on Azure IaaS services

Using an on-premises server: You need to install Release Management Server; do that here.

这似乎表明 Visual Studio Online Release Manager 不能使用代理 - 这是否正确?

假设这是正确的,我的第二次尝试是在本地安装 Release Manager(可以说,它实际上是在 Azure VM 中)。

我从 https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#d-release-management 安装了最新的 RM 版本(服务器、客户端、代理)。具体来说,Visual Studio 2013 年更新 4 (12.0.31101.0) 的发布管理。

但是我发现我无法将本地发布管理器连接到 Visual Studio 在线。错误消息指出我必须以 'domain\username' 格式提供用户名 - 这与在线 'username@domain.com' 格式不匹配。

这似乎表明 Release Manager 的本地安装无法连接到 Visual Studio 在线 - 这是否正确?

谢谢,

好的,这里有几块拼图:

  1. Release Management 客户端必须在 Update 4 上(或更高版本,当 RM 2015 在今年晚些时候发布时)。
  2. 如果您使用 Visual Studio 在线,本地发布管理 无法 与之对话。这是一个奇怪的限制,但确实如此。您可以将 RM 客户端连接到 VSO 中的 RM 服务,仅此而已。
  3. VSO 中的 RM 服务支持部署代理。它仅支持 "vNext" 发布模板,这些模板通过 PowerShell 或 DSC 脚本运行以执行部署。

遗憾的是,代理很快就会被弃用,取而代之的是所谓的 "agentless" 或 "vNext" 部署。微软目前正在彻底改造发布管理部分,下一个版本(将在 TFS 2015 Update 1 中发布)将完全不支持代理。

如果您想将本地 RM 服务器与 VSO 一起使用,则必须在没有 TFS 集成的情况下使用 RM。仍然可以获得大部分的持续交付功能,只是需要多跳几圈。

  1. 您必须将组件设置为 "builds externally" 并使用本地构建服务器
  2. 您在 Azure 中的 RM 部署代理(显然)必须能够与您的 RM 服务器通信。这可能需要各种防火墙技巧,但这是与您的网络人员进行的对话。
  3. 如果您想进行持续交付(构建触发发布),您必须查看 ReleaseManagementBuild.exe 文件(它是 RM 客户端的一部分)。该工具负责作为构建的一部分启动发布。 "Release" 构建过程模板假定 TFS 集成,但 ReleaseManagementBuild.exe 应用程序具有 "package" 模式,您可以在其中指定要发布的 UNC 路径。这可以让您避免没有直接的 TFS 集成。可以对构建过程模板进行一些修改以利用这一点。