【问题标题】:Continuous Dilvery as Windows Service and Web Api using TFS Build on Azure VM在 Azure VM 上使用 TFS 构建作为 Windows 服务和 Web Api 的持续 Dilvery
【发布时间】:2018-05-08 12:34:08
【问题描述】:

我有 TFS 2015,我能够从分支自动化构建过程并从放置文件夹中获取文件,如下所示:

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

我想要在其上自动化部署过程的 Azure VM - 持续交付。

  1. 在 Azure VM 上的 IIS 上部署 Web API
  2. 在 Azure VM 上部署 Windows 服务。
  3. 运行脚本 SQL。

我有 Azure VM 的凭据。我如何执行上述三个步骤。

【问题讨论】:

  • 您在问题中具体使用了什么 Web API?你能举个例子吗?

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


【解决方案1】:

我过去曾解决过类似的问题,因此可能可以帮助您(MSFT,如果有帮助的话)。

Azure VM 上 IIS 上的 Web Api

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

Azure VM 上的 Windows 服务

这个要求没有完全自动化的任务,但它非常简单。它可以通过使用PowerShell on Target Machines 任务和Azure File Copy 任务来实现。对于第一个任务,输入所需的只是您希望部署的 Windows 服务的.exe,它应该作为构建过程(构建工件)的输出生成。此任务的大部分远程机器输入与前一个类似,因此您应该不会有任何问题。您需要在源代码中签入执行实际 Windows 服务安装的 Powershell 脚本,作为同一 Windows 服务项目的一部分(复制本地 = 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 命令

【讨论】:

  • WinRM - IIS Web App Deployment 您是否知道是否有一种方法可以部署到 IIS没有 WinRM(即在共享主机上,例如 GoDaddy)?我已经发布了一个问题here
【解决方案2】:

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

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

打开构建和发布中心的发布选项卡,打开发布定义列表中的+下拉菜单,然后选择创建发布定义。

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

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

【讨论】:

    猜你喜欢
    • 2013-06-16
    • 2018-04-08
    • 2015-08-06
    • 2012-10-31
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多