在基于 yaml 的多阶段管道中,我需要在一个应用程序服务上为一个 sol 中的 2 个基于 dotnet 核心的项目发布 webApp 和 webjobs

In yaml based multiStage pipeline which I need to publish webApp & webjobs on one app service for 2 dotnet core based projects which are in one sol

我尝试通过添加两个 vsBuild 任务为每个项目创建两个不同的 zip。

在编写基于 yaml 的管道时,我面临两个问题:-

  1. 在 webjob 项目路径中是 DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\App_Data\jobs\continuous\somethingApp.zip" 但没有添加任何东西。

2 当我部署 Azure 应用程序服务时,在部署我的 Web 应用程序期间我遇到以下错误:

at ExecState._setResult (D:\a\_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1.179.0\node_modules\azure-pipelines-task-lib\toolrunner.js:828:25)
    at ExecState.CheckComplete (D:\a\_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1.179.0\node_modules\azure-pipelines-task-lib\toolrunner.js:811:18)
    at ChildProcess.<anonymous> (D:\a\_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1.179.0\node_modules\azure-pipelines-task-lib\toolrunner.js:733:19)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:920:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:230:5)

因此尽管管道成功完成,但无法部署任何东西。

问题的关键,我觉得应该是路径配置问题,无法访问你的webjob应用。

所以我建议您在门户中创建一个虚拟应用程序。

更多详情,您可以参考这篇博客。如果您需要进一步的帮助,请告诉我。

How to publish webjob from azure devops to azure app service using Azure app service deploy task

but nothing is getting added into it

如果您只是在 vsBuild 任务中添加以下 MSBuild 参数,那么它将创建 zip 文件并将输出文件保存在 zip 文件中

/p:WebPublishMethod=Package /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\App_Data\jobs\continuous\somethingApp.zip"

对于应该将 web api 和 webjob .NET CORE 项目部署到 azure webapp 服务的情况,基本上有两种可能的解决方案:-

  1. 如果您使用 VSBuild 任务来构建解决方案,那么只需构建您的两个项目并为可部署的 webApi 项目创建 zip 文件,并在发布放置工件之前,确保复制 webjob 项目构建文件(.dll 等)以 'App_Data\jobs\continuous(or triggered)\yourFiles' 格式放入 artifactstagingDirectory,然后将您的工件部署到 azure 应用程序服务。希望这能奏效。

  2. 虽然另一种方法是,使用 DOTNETCORECLI 任务构建您的 DOTNET Core 项目,方法如下

    `

  • 任务:DotNetCoreCLI@2 输入: 命令:'publish' publishWebProjects:真 参数:'--配置 $(buildConfiguration) --output $(build.artifactStagingDirectory)\yourwebApiProjectName.zip'

    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        publishWebProjects: false
        projects: '**/yourWebJobProjectName.csproj'
        arguments: '--configuration $(buildConfiguration) --output $(build.artifactStagingDirectory)\App_Data\jobs\continuous\yourWebJObName'
        zipAfterPublish: false
        modifyOutputPath: false
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'`
    

然后您可以在您的 Azure 应用服务中部署此工件。希望这将解决与在 azure web 应用程序服务上部署基于 DOTNET Core 的 webjob 和 webapi 项目相关的问题。