我有TFS 2015,我能够从分支机构自动化构建过程,并从drop文件夹中获取文件,如下所示:
它已发布多个项目,如Web API和Windows服务
我想要Azure VM,我希望自动化部署过程 - 持续交付。
我拥有Azure VM的凭据。我如何执行上述三个步骤。
答案 0 :(得分:1)
我过去曾遇到过类似的问题,所以可能会帮助你(MSFT,如果有帮助)。
这几乎是WinRM - IIS Web App Deployment任务形式的完全自动化,您可以在发布定义中找到并添加。该链接提供了有关为Azure VM提供哪些参数以及要对内部部署进行调整的完整说明。运行此任务有一些先决条件,例如在VM上安装和配置IIS,文档将详细讨论。作为此任务的必要输入,您需要提供我假设生成的web deploy package
作为您的构建输出。如果没有,您可以参考this SO post来获取所需的输出。如果您希望在部署时修改connection strings
等参数,请使用上述任务中的parameters.xml
文件。
此要求没有完全自动化的任务,但它非常简单。可以使用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
执行。
我没有亲自为此工作,所以我能做的最好的事情就是指出你正确的方向。如果您使用DACPAC
进行SQL部署,则可以使用WinRM - SQL Server Database Deployment任务。如果您只是想执行脚本,请使用上面的远程powershell任务并参考this帖子,它将帮助您通过powershell脚本运行SQL命令
答案 1 :(得分:1)
似乎您希望CD发布过程获取CI构建发布的工件,然后将它们部署到Azure VM上的IIS服务器/ Windows服务。
如果您刚刚完成了CI构建,那么您应该创建一个自动链接到构建定义的新版本定义。
打开 Build&的版本标签。发布集线器,打开发布定义列表中的+下拉列表,然后选择创建发布定义。
也许并非所有任务都完全兼容TFS2015版本,您可以升级TFS版本以获得更多新功能或自定义您自己的构建/发布任务来处理它。