问题标签 [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.
azure-devops - 用于向工作项添加文本框的 VSTS 扩展
我正在尝试通过 VSTS 的扩展添加一个文本框。我需要知道如何使用扩展名添加文本框到 VSTS 中的工作项?
javascript - 在 VSTS 扩展中加载 JSON 文件
我正在尝试编写一个需要加载(和解析)JSON 文件的 VSTS 扩展,但我很难找到正确的方法。
所以我有类似的东西:
我已经尝试了很多变体,但没有任何运气。我什至尝试过使用 jQuery 同步加载我的文件,但我的rules
最终结果是未定义的。
所以我有这个文件urlmatches.json
,我需要加载它并rules
在我到达onSaved
处理程序之前使用它来填充变量。
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令牌的同一用户随后是未经授权的。因此,从这种行为来看,我的猜测即将到来。清单范围中缺少某些内容。
您将文档中的所有范围(每个范围组中的最高范围)放入,但仍然没有成功。以下是他们的名单:
知道吗,我缺少哪个范围?
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 不同的值。
- 提交到发布行期间丢失的文件/更改。
tfs - 自定义 TFS 发布任务获得什么样的安全上下文?
TFS 2018u1。VSSConnection
我有一个通过对象调用 TFS 服务的自定义 Powershell 任务:
问题:任务获得什么样的安全上下文?绝对不是代理账号。为了确保,我设置了一个临时代理实例,它以我的身份运行,TFS 管理员,并且在该代理上运行的自定义任务没有完整的管理员。
根本问题是 - 我正在尝试从一项任务中获取当前代理记录,并且该任务只看到一个池,即使我们有几个。看到这个答案。
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 参考文档?
注意:以下链接没有帮助,因为它缺少对特定服务的特定函数调用,例如...
azure-devops - VSTS 遍历 Epic 中的所有工作项
我正在构建一个 VSTS 仪表板小部件,我想在其中迭代特定Epic中的所有功能,然后为每个功能收集有关所有工作项的数据以创建状态报告。
我知道我可以使用getWorkItem()
and getWorkItems()
,但前提是我已经知道 WorkItem ID。我想遍历所有功能,然后遍历所有 WorkItem,看看它们是否已完成,而不知道它们的特定 ID。
azure-devops - VSTS Dashboard Widget getWorkItem 可选参数展开
我正在编写一个用于工作项跟踪的 VSTS 仪表板小部件
但是,我在使用 getWorkItem() 函数时遇到了问题。我想获取给定史诗下所有功能的ID(我已经知道史诗 ID)。我相信如果我将getWorkItem()的扩展参数设置为“全部”,我将获得所有功能及其各自 ID 的列表。不幸的是,我不知道如何定义扩展参数的“类型”以及如何正确地将其作为值传递给 getWorkItem() 函数。
这是我的代码:
Here is the VSTS reference for expand 它解释了值可以是什么,但没有说明如何将其传递给 getWorkItem() 函数。
我想将函数的可选扩展参数设置为“全部”,但不知道它的类型以及如何正确定义和使用它。
tfs - TFS 扩展,在对话框中启用 OK
TFS 2018u1。我正在将扩展与自定义主机对话框放在一起。涉及两个贡献 - 对话框页面本身,其类型为“ms.vss-web.control”,以及打开对话框的自定义菜单项。
默认情况下禁用对话框上的确定按钮。该指南告诉我们通过调用从菜单项脚本返回updateOkButton()
的对话框对象来启用它。openDialog()
但是对话页面本身也完全可以编写脚本。有没有办法从对话页面本身访问对话对象?从对话页面上的事件处理程序启用/禁用“确定”按钮更有意义。