如何在 azureDevOps 应用服务中部署 angular 通用应用
How to deploy angular universal app in azureDevOps app service
我在 Azure Web 服务中部署 angular 通用应用程序时遇到问题我按照此步骤 但出现错误
##[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
编辑 2(9/3/2020)
Microsoft 正在远离发布管道。
“经典发布管道”
https://docs.microsoft.com/en-us/azure/devops/pipelines/release/?view=azure-devops
新“管道”
编辑:
我在键入此内容后意识到,也许您的问题是您有“UseWebDeploy: true”,也许您可以通过将其设置为 false 来解决您的问题。下面是从发布管道中的相同任务设置截取的屏幕截图。
我仍然认为你最好的选择是从你的构建管道中删除部署任务,如下所述,因为构建管道不应该以这种方式使用。但这取决于你。
原答案:
从您的构建管道中删除此部分:
- 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
设置发布管道以部署您的构建。
- 创建新管道
- 从您的构建中添加工件
- 然后添加一个阶段(即Dev、QA、Production)
- Select“空作业”
- 编辑舞台并添加任务
- 添加 Azure 应用服务任务
- 将 Azure App Service Deploy 上的版本号更新为版本 3(与您在 yaml 中使用的版本相同 - AzureRmWebAppDeployment@3)。
- 按照您在 yaml 中的方式填写任务中的值。
“包或文件夹”选项的默认值可能不正确。您可以使用右侧的 3 个点导航和 select 正确的文件夹。如果您单击此按钮后什么也看不到,那么这很可能是因为您尚未使用上述“PublishBuildArtifact@1”更改启动构建。
继续往下看并扩展选项以找到您的其他配置设置。
如果您遇到任何问题,您可以通过滚动到任务顶部并单击“查看 YAML”来验证任务是否设置正确。然后你可以与你原来的 yaml 进行比较。
希望这对您有所帮助。
我在 Azure Web 服务中部署 angular 通用应用程序时遇到问题我按照此步骤
##[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
编辑 2(9/3/2020) Microsoft 正在远离发布管道。
“经典发布管道”
https://docs.microsoft.com/en-us/azure/devops/pipelines/release/?view=azure-devops
新“管道”
编辑:
我在键入此内容后意识到,也许您的问题是您有“UseWebDeploy: true”,也许您可以通过将其设置为 false 来解决您的问题。下面是从发布管道中的相同任务设置截取的屏幕截图。
我仍然认为你最好的选择是从你的构建管道中删除部署任务,如下所述,因为构建管道不应该以这种方式使用。但这取决于你。
原答案:
从您的构建管道中删除此部分:
- 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
设置发布管道以部署您的构建。
- 创建新管道
- 从您的构建中添加工件
- 然后添加一个阶段(即Dev、QA、Production)
- Select“空作业”
- 编辑舞台并添加任务
- 添加 Azure 应用服务任务
- 将 Azure App Service Deploy 上的版本号更新为版本 3(与您在 yaml 中使用的版本相同 - AzureRmWebAppDeployment@3)。
- 按照您在 yaml 中的方式填写任务中的值。
“包或文件夹”选项的默认值可能不正确。您可以使用右侧的 3 个点导航和 select 正确的文件夹。如果您单击此按钮后什么也看不到,那么这很可能是因为您尚未使用上述“PublishBuildArtifact@1”更改启动构建。
继续往下看并扩展选项以找到您的其他配置设置。
如果您遇到任何问题,您可以通过滚动到任务顶部并单击“查看 YAML”来验证任务是否设置正确。然后你可以与你原来的 yaml 进行比较。
希望这对您有所帮助。