首页 > 解决方案 > 在 VSTS 中通过 CD 部署时,.NET Core Webjob 不发布

问题描述

我有一个 dot net core 2.0 控制台应用程序,我需要通过 VSTS 中的持续构建和部署将其作为 webjob 在 Azure 中发布。我已经在 Azure 中创建了一个 Web 应用程序,并在 VSTS 中为控制台应用程序的项目定义了 CI 和 CD 任务。

问题是,每当这些任务运行时,webapp 都会成功部署,但 webjob 不会部署。但是,当我使用工件(构建过程后创建的 zip 文件夹)并将其手动上传到 Azure webjob 部分时,它会被部署。

我认为使用 powershell 脚本部署工件可能是一种解决方案,但我也尝试过Kudu 的zipdeploy API,但没有用。有人可以帮助或指向我的参考,以提取从构建过程生成的工件并使用 CD 任务部署它,以便 webjob 与 webapp 一起发布。

标签: azure-devopsazure-webjobs

解决方案


对于一般的 Web 应用程序,如果您将 Web 作业项目链接到 Web(在 Visual Studio 中右键单击 Web 应用程序 > 添加 > 新建 Azure WebJob 项目/现有项目为 WebJob),您可以参考以下步骤:

  1. 创建新的构建定义
  2. 添加 NuGet 工具安装程序任务
  3. 添加 NuGet 还原任务(解决方案的路径,packages.config:***.sln)
  4. 添加 Visual Studio 构建任务(MSBuild 参数:/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\")
  5. 添加发布工件任务(发布路径:$(build.artifactstagingdirectory))
  6. 队列构建
  7. 创建新的发布定义
  8. 添加部署 Azure 应用服务任务(包或文件夹:{web app zip 文件路径};选择使用 Web 部署发布)

否则:

  1. 创建新的构建定义
  2. 添加 NuGet 工具安装程序任务
  3. 添加 NuGet 还原任务(解决方案的路径,packages.config:***.sln)
  4. 添加 Visual Studio 构建任务 (/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\" /p:DeployDefaultTarget=WebPublish
  5. 添加必要的任务来构建 Web 作业项目(例如 Visual Studio 构建)
  6. 添加复制文件任务以将 Web 作业的构建结果复制到 Web 应用程序发布文件夹中的适当文件夹($(build.artifactstagingdirectory))(App_Data/jobs/continuous 用于连续 Web 作业或 App_Data/jobs/triggered 用于计划和按需 WebJobs)
  7. 添加存档文件任务(要存档的根文件夹或文件:$(build.artifactstagingdirectory);要创建的存档文件:$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip)
  8. 添加发布工件任务
  9. 创建新的发布定义
  10. 添加部署 Azure 应用服务任务(包或文件夹:{web app zip 文件路径};选择使用 Web 部署发布)

推荐阅读