Azure devops Azure DevOps发布管道:Angular和.NET核心应用程序

Azure devops Azure DevOps发布管道:Angular和.NET核心应用程序,azure-devops,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines Release Pipeline,我们正在尝试使用DevOps发布管道将Angular 7/.NET核心应用程序发布到Azure中。我的构建设置将.NET和Angular构建创建为单独的工件,您可以在下面的屏幕截图(在包或文件夹框下)中看到这些工件 据我所知,似乎需要创建两个独立的发布任务来将构建部署到web应用程序。但是,第二个版本似乎覆盖了第一个版本,这导致API无法启动 有人知道如何确保在给定阶段中的部署只是附加更改而不是替换更改吗?还是我在这里遗漏了什么 有人知道如何确保在给定阶段中的部署只是附加更改而不是替换更改吗

我们正在尝试使用DevOps发布管道将Angular 7/.NET核心应用程序发布到Azure中。我的构建设置将.NET和Angular构建创建为单独的工件,您可以在下面的屏幕截图(在包或文件夹框下)中看到这些工件

据我所知,似乎需要创建两个独立的发布任务来将构建部署到web应用程序。但是,第二个版本似乎覆盖了第一个版本,这导致API无法启动

有人知道如何确保在给定阶段中的部署只是附加更改而不是替换更改吗?还是我在这里遗漏了什么

有人知道如何确保在给定阶段中的部署只是附加更改而不是替换更改吗

根据我的经验,在您的情况下,在部署API或Angular 7之后,我希望您可以使用将另一个API或Angular 7上载到Azure WebApp

您可以使用Powershell任务来完成此任务。有关powershell演示代码的更多信息,您可以参考以下内容


如果可以创建另一个Web应用程序,则可以添加新的Web应用程序并使用相同的服务计划(无额外费用)。然后您可以单独部署它们。

我的建议是为您的管道实现以下模式:

  • “ng build--prod”angular应用程序在其自己的作业中,并将工件添加到管道中
  • “dotnet发布”在自己的作业中发布dotnet核心api,与angular作业并行运行,并将工件添加到管道中
  • 将Angular和Dotnet核心工件一起附加到新工件中。这是要部署的最后一个包
  • 部署最终的包
  • 您缺少步骤3,因此您需要类似于在YAML中定义的以下逻辑的东西,在该逻辑中,您创建了一个表示管道中实际部署的位的新zip。然后释放该工件,因为它是您在实例上运行的内容的表示

      - job: CreateReleaseArtifact
        displayName: 'Package for shared-hosting of angular app and web api'
        pool:
          vmImage: windows-2019
        dependsOn: 
          - BuildNetcore
          - BuildAngularApp
        condition: succeeded()
        steps:
        - checkout: none
        - download: current
        - task: CopyFiles@2
          displayName: 'Copy WebApi Files'
          inputs:
            SourceFolder: $(Pipeline.Workspace)/api
            Contents: '**/*'
            TargetFolder: $(Pipeline.Workspace)/package
            includeRootFolder: false
        - task: CopyFiles@2
          displayName: 'Copy Angular Files'
          inputs:
            SourceFolder: $(Pipeline.Workspace)/webapp
            Contents: 'wwwroot/**'
            TargetFolder: $(Pipeline.Workspace)/package
            includeRootFolder: true
            OverWrite: true
        - publish: $(Pipeline.Workspace)/package
          artifact: package