我们正在尝试使用DevOps发布管道将Angular 7 / .NET Core应用程序发布到Azure。我有构建设置,可以将.NET和Angular构建创建为单独的工件,您可以在下面的屏幕快照中(在Package或Folder框下)看到这些工件。
从我阅读的内容来看,您似乎需要创建两个单独的发行任务以将构建版本部署到Web应用程序。但是,第二个版本似乎覆盖了第一个版本,这导致API无法启动。
有没有人知道一种确保给定阶段中的部署仅附加更改而不是替换更改的方法?还是在这里我想念其他东西?
答案 0 :(得分:0)
有人知道确保给定阶段中的部署只是简单地添加更改而不是替换更改的方法吗?
根据您的经验,在部署API或Angular 7后,根据您的经验,我可以使用Kudu zip API将另一项上传到Azure WebApp。
您可以使用Powershell任务执行此操作。有关powershell演示代码的更多信息,请参考此link。
如果可以接受创建另一个WebApp,则可以添加一个新WebApp并使用相同的服务计划(无额外费用)。然后,您可以分别部署它们。
答案 1 :(得分:0)
我的建议是为您的管道实施以下模式:
您缺少第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