2

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

1 回答 1

0

我们在CI/CD 任务的扩展中支持这些功能。这些构建任务还提供了增加扩展版本和扩展中包含的构建任务的选项。如果您愿意,可以使用任务组标准化构建过程。或者使用发布管理将 vsix 从 dev 推广到 prod。这些任务实际上会覆盖发布者 ID。您还必须覆盖 extension-id 并将其设为私有。只能公开一个公共产品扩展,并且扩展 ID 是全局唯一的。

另一种方法是同时构建 dev 和 release vsix 以确保它们匹配。然后在需要之前不要使用发布包。

您看到的问题是我们构建这些任务的原因。

  • TF400898: An Internal Error Occurred. Activity Id: 64d37121-ea19-42dc-9994-dbef8e6dc205.当 zip 使用错误的压缩方法时会发生这种情况。在扩展任务中,我不得不花很多时间来获得正确的 7z 语法。
  • Received response 401 (Not Authorized). Check that your personal access token is correct and hasn't expired.是由于从 vsix 发布时忽略--extension-idand引起的--publisher。但 TFX 不会告诉你。
于 2018-04-11T19:09:59.107 回答