首页 > 解决方案 > ASP.NET Core 应用程序作为 Windows 服务 CI/CD 管道

问题描述

我有一个配置为 Windows 服务的 ASP.NET Core 应用程序。

我需要在 Windows 机器上使用 VSTS 管道部署我的应用程序,但无法找到如何使用 Windows 服务来执行此操作。

任何帮助将不胜感激 :)

标签: asp.net-coreazure-devops

解决方案


首先,您需要一个构建管道,将构建的代码发送到一个包中(即 .NET 核心任务来获取您的依赖项,构建您的代码并发布您的代码。此代码应放入 $(Build.ArtifactStagingDirectory) 中,然后是发布到一个drop中。所有这些都是来自开箱即用模板的标准.NET核心构建管道内容。除此之外,您还需要一个复制任务,该任务将复制一个或多个powershell文件(我将讨论稍后)进入$(Build.ArtifactStagingDirectory)。

发布管道将执行部署,您需要做一些不同的事情,因为我不知道有任何市场任务可以真正帮助您。我们在发布管道中真正需要做的是创建一个部署,该部署遵循本文档 ( https://docs.microsoft.com/en-us/aspnet/core/host ) 中的一些步骤 (4-7) -and-deploy/windows-service?view=aspnetcore-2.1),因为它详细说明了安装 ASP.NET Windows 服务的步骤。

我在这里的建议是,您在一个或多个 powershell 脚本中编写步骤 4-7,然后将它们提交到您的代码库中,并通过前面提到的复制任务来处理它们。

在该版本中,它将从您的构建工件中下载已发布的服务代码和部署服务所需的 powershell 文件。然后,发布管道所需要做的就是将服务 exe 代码复制到服务部署目录中(在示例步骤中,它使用 c:\svc,因此将文件复制到此处)。然后在上面的脚本上简单地执行一个 powershell 任务(或多个任务),以便代理运行这些步骤来正确安装服务。

以上假设使用本地安装在您要部署到的服务器上的私有管道代理。如果您想将相同的服务部署到许多服务器,您应该查看发布管道的部署组,但上述步骤应该都一样。仅包含部署组阶段中的所有任务,而不是通常的代理阶段。

希望有帮助。


推荐阅读