问题标签 [azure-devops-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
137 浏览

azure-devops - 用于向工作项添加文本框的 VSTS 扩展

我正在尝试通过 VSTS 的扩展添加一个文本框。我需要知道如何使用扩展名添加文本框到 VSTS 中的工作项?

0 投票
1 回答
254 浏览

javascript - 在 VSTS 扩展中加载 JSON 文件

我正在尝试编写一个需要加载(和解析)JSON 文件的 VSTS 扩展,但我很难找到正确的方法。

所以我有类似的东西:

我已经尝试了很多变体,但没有任何运气。我什至尝试过使用 jQuery 同步加载我的文件,但我的rules最终结果是未定义的。

所以我有这个文件urlmatches.json,我需要加载它并rules在我到达onSaved处理程序之前使用它来填充变量。

0 投票
1 回答
1233 浏览

azure-devops - 如何调用 VSTS REST API 来获取 Web 扩展中发布定义的工件列表?

我正在为特定的发布管理实现 VSTS 的 Web 扩展。从那个扩展我需要为特定的发布定义开始一个新的发布。创建发布的先决条件是一组具体的使用过的工件及其正确的版本。这就是我的痛苦。

有一个 RESP API 调用(未记录),它提供工件列表,其中包含每个版本的一组版本,以及新版本要使用的预选默认工件版本。当您打开对话框(或侧面板)以创建新版本时,VSTS 本身会调用此类 API。它也在 VSTS Release API ( ReleaseManagement/Core/RestClient ) 中定义,函数名称为getArtifactVersions

底层请求类似于https://{collectionName}.vsrm.visualstudio.com/{projectId}/_apis/Release/artifacts/versions?releaseDefinitionId={releaseDefinitionId}

当我直接在浏览器中运行请求时,我得到了正确的答案(工件列表及其可用版本)。但是当我从 Web 扩展程序运行它时,我收到 401 错误:TF400813:用户 '7a6b0fe0-56fd-61f5-9a78-2e170802ac50' 无权访问此资源。

我很确定问题出在 vss-extension.json 清单文件中设置的范围内。我已经在文档中定义了所有可能的范围,但仍然没有成功。错误消息中的用户身份是我的身份,我对我们的收藏拥有管理员权限。当我亲自运行请求(使用个人访问令牌或仅登录浏览器)时,结果会正确提供。但是使用生成的Bearer令牌的同一用户随后是未经授权的。因此,从这种行为来看,我的猜测即将到来。清单范围中缺少某些内容。

您将文档中的所有范围(每个范围组中的最高范围)放入,但仍然没有成功。以下是他们的名单:

知道吗,我缺少哪个范围?

0 投票
1 回答
823 浏览

tfs - 如何将我们的 VSTS 扩展包的产品构建发布到我的开发 VSTS(不是产品 VSTS),以便我可以在发布到产品 VSTS 之前对其进行验证?

我想使用发布行构建的软件包,并将其安装到另一个(非产品)VSTS,以便在安装到我们的产品 VSTS 之前验证它是否有效。

我们使用带有 VSTS 任务“包扩展”的 VSTS vNext 构建来编译包。这会将值为“my-prod-publisher”的“Publisher”编译到文件“extension.vsixmanifest”中

我试过了:

  • 手动将包上传到“my-dev-publisher”的 VSTS 市场门户。结果是:

    “上传错误”:扩展清单中提供的发布者 ID“my-prod-publisher”应与您尝试发布此扩展的发布者 ID“my-dev-publisher”匹配。

  • 修改 VSIX 包:

    • 解压 .VSIX 包
    • 编辑文件 'extension.vsixmanifest' 以将 'Publisher' 从值 'my-prod-publisher' 更改为 'my-dev-publisher'
    • 将内容压缩到新的 ZIP 文件中
    • 将包文件后缀 .ZIP 更改为 .VSIX
    • 上传到“my-dev-publisher”的 VSTS 市场门户
    • 结果是:

      TF400898: 发生内部错误。活动 ID:64d37121-ea19-42dc-9994-dbef8e6dc205。

    我的 google-fu 未能找到与我的案例相关的此错误的内容。没有在这方面搜索太多,因为我没想到重新压缩文件会产生与这些包的编译方式相同的结果。

  • 通过 tfx-cli 发布

    tfx extension publish --service-url https://marketplace.visualstudio.com/ --publisher "my-dev-publisher" --vsix .\my-prod-publisher.vsts-buildrelease-tasks-0.6.181012.vsix --accounts my-dev-vsts --auth-type pat --token [my-dev-vsts-PAT] --trace-level debug

    结果错误:

    收到响应 401(未授权)。检查您的个人访问令牌是否正确且未过期。

    我在 VSTS 'my-dev-vsts' 中验证了 ' my dev vsts PAT ' 没有过期,并且被授权用于“所有范围”。

  • 验证分支构建,而不是发布行构建

    使用 'Publisher' = 'my-dev-publisher' 编译包确实允许我发布到门户“my-dev-publisher”,然后允许我将扩展包安装到“my-dev-VSTS”中。这还不够有效,因为我被一些微妙的问题所困扰,例如:

    • 包/任务版本号未正确碰撞,或与 PROD 不同的值。
    • 提交到发布行期间丢失的文件/更改。
0 投票
2 回答
1652 浏览

azure-devops - 如何调整 VSTS 仪表板小部件的大小

我正在构建一个 VSTS 团队仪表板小部件,我想显示一些自定义 html 内容;然而,默认的小部件尺寸非常小,部分 html 被截断。请参阅以下屏幕截图:

我希望窗口至少在水平方向上是固定长度,也许是动态垂直方向。

如何调整小部件的大小以使小部件的面积更大?

注意:我尝试在小部件的 div 中添加一些 CSS,但这只改变了小部件容器“内部”的宽度,因此它并没有使小部件轮廓变大。

0 投票
2 回答
168 浏览

tfs - 自定义 TFS 发布任务获得什么样的安全上下文?

TFS 2018u1。VSSConnection我有一个通过对象调用 TFS 服务的自定义 Powershell 任务:

问题:任务获得什么样的安全上下文?绝对不是代理账号。为了确保,我设置了一个临时代理实例,它以我的身份运行,TFS 管理员,并且在该代理上运行的自定义任务没有完整的管理员。

根本问题是 - 我正在尝试从一项任务中获取当前代理记录,并且该任务只看到一个池,即使我们有几个。看到这个答案

0 投票
1 回答
1345 浏览

azure-devops - 正确的 VSS.register() 返回语法

我对 VSTS 和开发自定义小部件还很陌生。我遵循了示例教程:添加仪表板小部件

下面是 index.html 文件的以下 JS 代码:

注意:这是一个非常简单的示例,因为没有 VSS API 调用或 ajax 请求。

实现什么return WidgetHelpers.WidgetStatusHelper.Success();?我也不明白是做什么VSS.notifyLoadSucceeded();的。如果我想通过 ajax(异步请求)进行 API 调用,那么我应该在代码中的什么位置放置这些语句?

看看以下似乎有效的代码行......我不确定这是否是使用这些 VSS 语句的正确方法:

如果有人可以回答以下问题,那就太好了:

  • WidgetHelpers.WidgetStatusHelper.Success() 有什么作用?
  • VSS.notifyLoadSucceeded() 做什么?
  • 我应该何时何地使用它们?
  • 是否有任何关于 VSS.Services 提供的功能的文档?例如,当我需要“VSS/Authentication/Services”时,我应该如何知道如何使用 VSS_Auth_Service 而无需查看该教程?是否有所有客户端的 API 参考文档?

注意:以下链接没有帮助,因为它缺少对特定服务的特定函数调用,例如...

0 投票
1 回答
1081 浏览

azure-devops - VSTS 遍历 Epic 中的所有工作项

我正在构建一个 VSTS 仪表板小部件,我想在其中迭代特定Epic中的所有功能,然后为每个功能收集有关所有工作项的数据以创建状态报告。

我知道我可以使用getWorkItem()and getWorkItems(),但前提是我已经知道 WorkItem ID。我想遍历所有功能,然后遍历所有 WorkItem,看看它们是否已完成,而不知道它们的特定 ID。

0 投票
2 回答
389 浏览

azure-devops - VSTS Dashboard Widget getWorkItem 可选参数展开

我正在编写一个用于工作项跟踪的 VSTS 仪表板小部件

但是,我在使用 getWorkItem() 函数时遇到了问题。我想获取给定史诗下所有功能的ID(我已经知道史诗 ID)。我相信如果我将getWorkItem()的扩展参数设置为“全部”,我将获得所有功能及其各自 ID 的列表。不幸的是,我不知道如何定义扩展参数的“类型”以及如何正确地将其作为值传递给 getWorkItem() 函数。

这是我的代码:

Here is the VSTS reference for expand 它解释了值可以是什么,但没有说明如何将其传递给 getWorkItem() 函数。

我想将函数的可选扩展参数设置为“全部”,但不知道它的类型以及如何正确定义和使用它。

0 投票
1 回答
100 浏览

tfs - TFS 扩展,在对话框中启用 OK

TFS 2018u1。我正在将扩展与自定义主机对话框放在一起。涉及两个贡献 - 对话框页面本身,其类型为“ms.vss-web.control”,以及打开对话框的自定义菜单项。

默认情况下禁用对话框上的确定按钮。该指南告诉我们通过调用从菜单项脚本返回updateOkButton()的对话框对象来启用它。openDialog()

但是对话页面本身也完全可以编写脚本。有没有办法从对话页面本身访问对话对象?从对话页面上的事件处理程序启用/禁用“确定”按钮更有意义。