我想使用发布行构建的软件包,并将其安装到另一个(非产品)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 不同的值。
- 提交到发布行期间丢失的文件/更改。