如何将我们的VSTS扩展包的prod版本发布到我的dev VSTS(而不是prod VSTS),所以我可以在发布到prod VSTS之前验证它?

时间:2018-04-11 18:21:29

标签: tfs azure-devops command-line-interface marketplace azure-devops-extensions

我想使用发布行 构建的 包,并将其安装到另一个(非prod)VSTS,因此我可以验证它的工作原理,在安装到我们的产品VSTS之前。

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

我试过了:

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

      

    '上传错误':   扩展程序清单中提供的发布商ID“my-prod-publisher”   应与您所在的发布商ID“my-dev-publisher”相匹配   试图发布此扩展程序。

  • 修改VSIX包:

    • 解压缩.VSIX包
    • 修改文件'extension.vsixmanifest',将'发布商'从值'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(未经授权)。   检查您的个人访问令牌是否正确且未过期。

    我验证了'我的开发用途PAT '未过期,并且在VSTS'my-dev-vsts'中被授权为“所有范围”。

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

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

    • 打包/任务版本号未正确碰撞,或与PROD不同。
    • 在提交到发布行期间错过了文件/更改。

1 个答案:

答案 0 :(得分:0)

我们在CI/CD tasks for extensions中支持这些功能。这些构建任务还提供了扩展扩展版本和扩展中包含的构建任务的选项。如果需要,可以使用任务组标准化构建过程。或者使用Release Management将vsix从dev推广到prod。这些任务实际上会覆盖publisher-id。您还必须覆盖extension-id并将其设为私有。只有一个公共产品扩展可以公开,而extension-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-id--publisher会被忽略。但是TFX并没有告诉你。