使用Azure VM上的TFS Build连续Dilvery作为Windows服务和Web Api

时间:2017-11-24 13:19:40

标签: azure tfs automation build-automation continuous-deployment

我有TFS 2015,我能够从分支机构自动化构建过程,并从drop文件夹中获取文件,如下所示: enter image description here

它已发布多个项目,如Web API和Windows服务

我想要Azure VM,我希望自动化部署过程 - 持续交付。

  1. 在Azure VM上的IIS上部署Web API
  2. 在Azure VM上部署Windows服务。
  3. 运行脚本SQL。
  4. 我拥有Azure VM的凭据。我如何执行上述三个步骤。

2 个答案:

答案 0 :(得分:1)

我过去曾遇到过类似的问题,所以可能会帮助你(MSFT,如果有帮助)。

Azure VM上的IIS上的Web Api

这几乎是WinRM - IIS Web App Deployment任务形式的完全自动化,您可以在发布定义中找到并添加。该链接提供了有关为Azure VM提供哪些参数以及要对内部部署进行调整的完整说明。运行此任务有一些先决条件,例如在VM上安装和配置IIS,文档将详细讨论。作为此任务的必要输入,您需要提供我假设生成的web deploy package作为您的构建输出。如果没有,您可以参考this SO post来获取所需的输出。如果您希望在部署时修改connection strings等参数,请使用上述任务中的parameters.xml文件。

Azure VM上的Windows服务

此要求没有完全自动化的任务,但它非常简单。可以使用PowerShell on Target Machines任务和Azure File Copy任务来实现。对于第一个任务,所有需要作为输入的是您希望部署的Windows服务的.exe,它应该作为构建过程的输出生成(构建工件)。此任务的大部分远程机器输入与前一个类似,因此您不应该遇到任何问题。您需要在源代码中签入执行实际Windows服务安装的Powershell脚本,作为同一Windows服务项目的一部分(copy local = True)。这将确保作为构建输出,您将可以访问可在第二个任务中使用的powershell脚本。需要Azure文件复制才能将您的powershell脚本复制到Azure VM,以便Powershell任务可以执行它。假设您将powershell脚本复制到Azure VM上的文件夹C:\Data\

$serviceName = "MyWindowsService"
$exeFullName = "path\\to\\your\\service.exe"
$serviceDisplayName = "MyWindowsService"
$pss = New-Service $serviceName $exeFullName -DisplayName $serviceDisplayName
        -StartupType Automatic

将此内容添加到已检入的powershell文件中,并将其命名为installWindowsService.ps1。然后在powershell任务中提供powershell文件的路径,以C:\Data\installWindowsService.ps1执行。

在Azure VM上运行SQL脚本

我没有亲自为此工作,所以我能做的最好的事情就是指出你正确的方向。如果您使用DACPAC进行SQL部署,则可以使用WinRM - SQL Server Database Deployment任务。如果您只是想执行脚本,请使用上面的远程powershell任务并参考this帖子,它将帮助您通过powershell脚本运行SQL命令

答案 1 :(得分:1)

似乎您希望CD发布过程获取CI构建发布的工件,然后将它们部署到Azure VM上的IIS服务器/ Windows服务。

如果您刚刚完成了CI构建,那么您应该创建一个自动链接到构建定义的新版本定义。

打开 Build&的版本标签。发布集线器,打开发布定义列表中的+下拉列表,然后选择创建发布定义

enter image description here

  • For 2,编写一个powershell脚本来处理这个问题,确保构建输出 可以从构建中的'Drop'文件夹中复制 它们被复制到目标VM上的C:\ xxx \。更多细节步骤 请参阅此blog
  • 对于3,您可以使用Azure SQL Database Deployment任务。或 选择自动化代理或UNC路径上的SQL脚本文件 自动化代理可以访问的。或者直接输入 用于针对Azure SQL Server数据库运行的InLine SQL脚本。另请查看tutorial

也许并非所有任务都完全兼容TFS2015版本,您可以升级TFS版本以获得更多新功能或自定义您自己的构建/发布任务来处理它。