Azure DevOps 扩展 : Passing query parameters to custom build report view

标签 azure azure-devops

我正在为 Azure DevOps 构建自定义扩展,特别是 build tab extension 。我的 manifest.json 文件中有一个相当基本的定义。

{
  "id": "my-report-hub",
  "type": "ms.vss-build-web.build-results-tab",
  "targets": [
    "ms.vss-build-web.build-results-view"
  ],
  "properties": {
    "name": "My Build Report",
    "uri": "build/myReport.html"
  }
}

报告的 HTML 是动态的,并且生成的变量可帮助定义页面内容。本质上,报告页面显示构建错误列表,如果您单击该错误,我会动态显示该错误的更详细描述。

我想做的是深层链接这些生成的页面之一,这意味着调用我的构建 View 的 URL,但以某种方式传递它的参数。 URL 通常如下所示:

https://dev.azure.com/{org}/{project}/_build/results?buildId=302&view=thrillo.my-extension-debug.my-report-hub

但是这当然会打开主页。我想传递 TypeScript/JavaScript 可以读取的参数,然后弹出与错误号关联的生成页面。例如我可以添加这样的参数:

https://dev.azure.com/{org}/{project}/_build/results?buildId=302&view=thrillo.my-extension-debug.my-report-hub&errno=11

但是当我的实际 Assets 的 HTML/JS 被调用时,它位于 iframe 内并且不会获取参数(事实上,它会获取到 Assets 页面本身的链接,或多或少没有查询参数)。当然,我无法获取“顶级文档”来获取 View 参数,因为它会跨域跳转,而且我没有访问权限(安全!)

所以问题是:如果确实可能的话,如何通过链接/url 将参数传递到我的构建报告 View ?

感谢您的帮助!

最佳答案

我也有同样的要求。这有点令人困惑,因为文档的一部分指向新的 SDK,一些指向旧的;但是,使用这个: https://learn.microsoft.com/en-us/javascript/api/azure-devops-extension-api/ihostnavigationservice我能够到达:

    import * as SDK from "azure-devops-extension-sdk";
    import { CommonServiceIds, IHostNavigationService} from "azure-devops-extension-api";

    public componentDidMount() {
        SDK.init();
        const hostNavigationService = await SDK.getService<IHostNavigationService>(CommonServiceIds.HostNavigationService);
        let pageNavigationParams = await hostNavigationService.getQueryParams();
        console.log(pageNavigationParams)
    }

然后,将 &errno=11 添加到 URL 应显示在 pageNavigationParams 中。

关于Azure DevOps 扩展 : Passing query parameters to custom build report view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63943093/

相关文章:

Azure 应用服务自定义域不支持 www 前缀

azure - 如何在Azure Pipelines中使用Bazel?

docker - 在VSTS中构建Docker容器

azure-devops - 将字典传递给 azure devops yaml 中的模板

sql-server - Windows Azure - Web 角色和虚拟机安全通信

c# - 尝试使用 C# 生成 excel 文件时出现错误“类未注册”

windows-10 - native 时钟可能与服务器时间不同步五分钟以上

git - "fatal: Authentication failed"与 git-credential-manager

python - azureml 可以将变量从一个步骤传递到另一步骤吗?

azure - 当ADF发布分支受git保护时如何发布?