如何在azureDevOps应用程序服务中部署角度通用应用程序

时间:2019-07-15 12:12:26

标签: azure-devops azure-web-app-service angular-universal angular8

我在执行步骤https://stackoverflow.com/a/53616516/10979521时在azure Web服务中部署有角度的通用应用程序时遇到问题,但出现错误

##[error]Error: Publish using webdeploy options are supported only when using Windows agent. 

我猜该问题是在我的应用程序服务设置中创建应用程序服务时发生的     (            *发布(代码)            *运行时堆栈(.NET Core 2.2)             *操作系统(Windows)     )

# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install -g @angular/cli
    npm install
    npm run build:ssr
  displayName: 'build the project'

- task: CopyFiles@2
  displayName: 'Copy dist files to staging'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)/dist'

    TargetFolder: '$(Build.ArtifactStagingDirectory)/app/dist'


- task: CopyFiles@2
  displayName: 'Copy server.js to the root'
  inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

    Contents: server.js

    TargetFolder: '$(Build.ArtifactStagingDirectory)/app'

- task: DeleteFiles@1
  displayName: 'Delete the dist/server.js'
  inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

    Contents: server.js

- task: AzureRmWebAppDeployment@3
  displayName: 'Azure App Service Deploy: website'
  inputs:
    azureSubscription: 'my subscription'
    WebAppName: 'my website'
    Package: '$(Build.ArtifactStagingDirectory)/app'
    GenerateWebConfig: true
    WebConfigParameters: '-Handler iisnode -NodeStartFile server.js -appType node'
    UseWebDeploy: true
    RemoveAdditionalFilesFlag: true

1 个答案:

答案 0 :(得分:1)

编辑:

在输入此内容后,我意识到您的问题可能是您有“ UseWebDeploy:true”,也许可以通过将其设置为false来解决您的问题。下面是从发布管道中的相同任务设置中截取的屏幕截图。

enter image description here

我仍然认为,最好的选择是从构建管道中删除部署任务,如下所述,因为构建管道并非旨在以这种方式使用。但这取决于您。

原始答案:

从构建管道中删除此部分:

- task: AzureRmWebAppDeployment@3
  displayName: 'Azure App Service Deploy: website'
  inputs:
    azureSubscription: 'my subscription'
    WebAppName: 'my website'
    Package: '$(Build.ArtifactStagingDirectory)/app'
    GenerateWebConfig: true
    WebConfigParameters: '-Handler iisnode -NodeStartFile server.js -appType node'
    UseWebDeploy: true
    RemoveAdditionalFilesFlag: true

在build.yml文件的末尾添加一个发布步骤。这将使您的发布管道可以从构建中提取工件。

- task: PublishBuildArtifacts@1

设置发布管道以部署您的构建。

enter image description here

  • 创建新管道
  • 从构建中添加工件 enter image description here
  • 然后添加一个阶段(例如,开发,质量检查,生产)
  • 选择“空工作”
  • 编辑阶段并添加任务
  • 添加Azure App Service任务 enter image description here
  • 将Azure App Service Deploy上的版本号更新为版本3(与Yaml中使用的版本相同-AzureRmWebAppDeployment @ 3)。
  • 以与在Yaml中相同的方式填写任务中的值。

“软件包或文件夹”选项的默认值可能不正确。您可以使用右侧的3点导航并选择正确的文件夹。如果您单击此按钮却看不到任何内容,则很可能是因为您尚未通过上述“ PublishBuildArtifact @ 1”更改开始构建。 enter image description here

继续进行下去,并扩展选项以查找其他配置设置。 enter image description here enter image description here

如果您遇到任何问题,可以滚动到任务顶部并单击“查看YAML”,以验证任务是否正确设置。然后,您可以将其与原始Yaml进行比较。 enter image description here

希望这会有所帮助。