【发布时间】:2018-04-11 18:21:28
【问题描述】:
我想将包按发布线构建,并将其安装到另一个(非产品)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(未授权)。 检查您的个人访问令牌是否正确且未过期。
我验证了“my dev vsts PAT”没有过期,并且在 VSTS“my-dev-vsts”中被授权用于“所有范围”。
-
验证分支构建,而不是发布行构建
使用 'Publisher' = 'my-dev-publisher' 编译包确实允许我发布到门户 'my-dev-publisher' 然后允许我将扩展包安装到 'my-dev-VSTS' 中。 这还不够有效,因为我被一些微妙的问题所困扰,例如:
- 包/任务版本号未正确调整,或与 PROD 的值不同。
- 在提交到发布行期间丢失了文件/更改。
【问题讨论】:
标签: tfs azure-devops command-line-interface marketplace azure-devops-extensions