如何在Azure DevOps中按构建号部署Allure报告至Azure WebApp并集成
解决方案:Azure DevOps流水线发布独立Allure报告至WebApp并集成至构建输出
1. 独立发布每个构建的Allure报告(无需FTP)
可以通过自定义部署脚本或Azure CLI任务实现将每个构建的报告上传至WebApp的wwwroot/$(Build.BuildNumber)目录,避免覆盖原有报告:
方案A:使用AzureRmWebAppDeployment@4自定义脚本
先将Allure报告打包,再通过内联脚本解压到指定子目录:
# 1. 打包Allure报告 - task: ArchiveFiles@2 condition: always() inputs: rootFolderOrFile: '$(System.DefaultWorkingDirectory)/target/allure-report' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/allure-report-$(Build.BuildNumber).zip' replaceExistingArchive: true # 2. 部署到WebApp指定子目录 - task: AzureRmWebAppDeployment@4 condition: always() inputs: ConnectionType: 'AzureRM' azureSubscription: 'xxxxxxxxxxx' appType: 'webAppLinux' WebAppName: 'xxxxxxxxxxxxx' packageForLinux: '$(Build.ArtifactStagingDirectory)/allure-report-$(Build.BuildNumber).zip' ScriptType: 'Inline Script' InlineScript: | # 解压到wwwroot下以构建号命名的目录 unzip $(Pipeline.Workspace)/allure-report-$(Build.BuildNumber).zip -d /home/site/wwwroot/$(Build.BuildNumber)
方案B:使用Azure CLI任务直接上传
利用az webapp deploy命令指定目标路径,无需打包:
- task: AzureCLI@2 condition: always() inputs: azureSubscription: 'xxxxxxxxxxx' scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az webapp deploy \ --name <你的WebApp名称> \ --resource-group <你的资源组名称> \ --src-path $(System.DefaultWorkingDirectory)/target/allure-report \ --target-path /home/site/wwwroot/$(Build.BuildNumber) \ --type static
两种方案都不需要启用FTP,即可实现每个构建的报告独立存储。
2. 集成WebApp报告至Azure DevOps构建输出界面
通过Azure DevOps的日志命令在构建摘要中添加自定义链接,让报告直接展示在构建输出界面:
- task: CmdLine@2 condition: always() inputs: script: | # 添加Allure报告链接到构建摘要 echo "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Allure测试报告;]https://<你的WebApp域名>/$(Build.BuildNumber)/index.html"
执行后,在构建结果的「摘要」标签页会出现一个名为「Allure测试报告」的链接,点击即可跳转到WebApp上对应构建的报告,和其他测试结果的展示方式一致。
额外可选:同时将报告作为构建工件发布,方便离线查看:
- task: PublishBuildArtifacts@1 condition: always() inputs: PathtoPublish: '$(System.DefaultWorkingDirectory)/target/allure-report' ArtifactName: 'allure-report-$(Build.BuildNumber)' publishLocation: 'Container'
内容的提问来源于stack exchange,提问作者Vowneee
相关产品推荐
相关产品推荐

