azure-devops - 在 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 一起发布。
解决方案
对于一般的 Web 应用程序,如果您将 Web 作业项目链接到 Web(在 Visual Studio 中右键单击 Web 应用程序 > 添加 > 新建 Azure WebJob 项目/现有项目为 WebJob),您可以参考以下步骤:
- 创建新的构建定义
- 添加 NuGet 工具安装程序任务
- 添加 NuGet 还原任务(解决方案的路径,packages.config:***.sln)
- 添加 Visual Studio 构建任务(MSBuild 参数:/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\")
- 添加发布工件任务(发布路径:$(build.artifactstagingdirectory))
- 队列构建
- 创建新的发布定义
- 添加部署 Azure 应用服务任务(包或文件夹:{web app zip 文件路径};选择使用 Web 部署发布)
否则:
- 创建新的构建定义
- 添加 NuGet 工具安装程序任务
- 添加 NuGet 还原任务(解决方案的路径,packages.config:***.sln)
- 添加 Visual Studio 构建任务 (/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\" /p:DeployDefaultTarget=WebPublish
- 添加必要的任务来构建 Web 作业项目(例如 Visual Studio 构建)
- 添加复制文件任务以将 Web 作业的构建结果复制到 Web 应用程序发布文件夹中的适当文件夹($(build.artifactstagingdirectory))(App_Data/jobs/continuous 用于连续 Web 作业或 App_Data/jobs/triggered 用于计划和按需 WebJobs)
- 添加存档文件任务(要存档的根文件夹或文件:$(build.artifactstagingdirectory);要创建的存档文件:$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip)
- 添加发布工件任务
- 创建新的发布定义
- 添加部署 Azure 应用服务任务(包或文件夹:{web app zip 文件路径};选择使用 Web 部署发布)
推荐阅读
- java - Maven 对其他本地项目的多级依赖
- swift - 如何查看删除子视图?
- java - 在 Vert.x 中加载非线程安全的原生库:是多实例 Verticle,仅限于自己的进程
- javascript - 只要一个对象在 Phaser 3 中与另一个对象发生碰撞,如何播放动画?
- ruby-on-rails - RSpec如何在另一个方法中模拟方法
- ruby-on-rails - 运行延迟的工作人员最终会出现 Dalli 错误
- python - 如何在不刷新页面的情况下显示/渲染存储在外部模型中的用户名?
- reactjs - React Hooks 和 redux 导致不必要的渲染和一些意想不到的效果
- c# - 如何在c#中对Picturebox动态透明背景颜色标签
- firebase - 如何在 Firebase 中查询我的应用所在国家/地区的 ARPU 和 ARPPU?