如何将我们的 VSTS 扩展包的生产版本发布到我的开发 VSTS(而不是生产 VSTS),以便我可以在发布到生产 VSTS 之前对其进行验证?

How to publish a prod build of our VSTS extensions package to my dev VSTS (not prod VSTS), so I can validate it before publishing to prod VSTS?

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

我们使用 VSTS vNext 构建和 VSTS 任务 'Package Extension' 来编译包。 这会将值 'my-prod-publisher' 的 'Publisher' 编译成文件 'extension.vsixmanifest'

我试过:

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

    'Upload Error' : Publisher ID 'my-prod-publisher' provided in the extension manifest should match the publisher ID 'my-dev-publisher' under which you are trying to publish this extension.

  • 修改VSIX包:

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

      TF400898: An Internal Error Occurred. Activity 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

    结果错误:

    Received response 401 (Not Authorized). Check that your personal access token is correct and hasn't expired.

    我已验证“my dev vsts PAT”未过期,并且已在 VSTS 'my-dev-vsts' 中获得 "All scopes" 的授权。

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

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

    • package/tasks 版本号未正确提升,或与 PROD 的值不同。
    • files/changes 在提交到发布行期间错过了。

我们在 CI/CD tasks for extensions 中支持这些功能。这些构建任务还提供了更改扩展版本和扩展中包含的构建任务的选项。如果需要,您可以使用任务组标准化构建过程。或者使用 Release Management 将 vsix 从 dev 提升到 prod。这些任务实际上将覆盖 publisher-id。您还必须覆盖 extension-id 并将其设为私有。只能制作一个 public 产品扩展 public 并且 extension-id 是全球唯一的。

另一种方法是同时构建 dev 和 release vsix 以确保它们匹配。除非你需要它,否则不要使用发布包。

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

  • TF400898: An Internal Error Occurred. Activity Id: 64d37121-ea19-42dc-9994-dbef8e6dc205. 当 zip 使用错误的压缩方法时会发生这种情况。在扩展任务中,我不得不 fiddle 相当多的时间才能正确使用 7z 语法。
  • Received response 401 (Not Authorized). Check that your personal access token is correct and hasn't expired. 是因为当从 vsix 发布时 --extension-id--publisher 被忽略了。但是TFX不告诉你