代码之家  ›  专栏  ›  技术社区  ›  Shan Khan

在Azure VM上使用TFS作为Windows服务和Web Api进行连续演示

  •  1
  • Shan Khan  · 技术社区  · 7 年前

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

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

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

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

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   ThePretendProgrammer    7 年前

    我过去也处理过一个类似的问题,所以可能可以帮你解决(MSFT,如果有帮助的话)。

    Azure VM上IIS上的Web Api

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

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

    $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命令

        2
  •  1
  •   PatrickLu-MSFT    7 年前

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

    打开 发布 的选项卡 &生成;释放 hub,打开发布定义列表中的+下拉列表,然后选择 创建发布定义 .

    enter image description here

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

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