如何在 Azure DevOps 工件的轮版本号中包含分支名称?

whe*_*ere 4 python artifact python-wheel azure-devops

我的目标是为 python 轮发布提供正常版本号,例如1.0.0,并为特定分支提供特定于分支的版本号,例如1.0.0.dev1+hg.5.b11e5e6f0b0b.

不幸的是,Azure DevOps 将大多数版本号视为无效而拒绝,并显示以下两条错误消息之一:

HTTPError: 400 Client Error: Bad Request - The package version provided is invalid. Versions should conform to the format described in PEP 440 and be under 128 characters. (DevOps Activity ID: 0000000-AAAA-2222-3333-11111111111) for url: https://pkgs.dev.azure.com/sample/_packaging/sample_libraries/pypi/upload

for version numbers like:

version='1.0.0.1.dev', ok
version='1.0.0.1.dev1', ok
version='1.0.0.1.dev_2', ok
version='1.0.0.1.dev_2_b', FAIL
version='1.0.0.1.dev_2-3', FAIL
version='1.0.0.1.dev_2.3', FAIL
version='1.0.0.1.dev_2.3', FAIL
version='1.0.0.d1.dev', FAIL
version='1.0.0.d.dev', FAIL
version='1.0.0.1d1.dev', FAIL
version='1.0.0.1d1.dev1', FAIL
version='1.0.0.1.dev1-3', FAIL
version='1.0.0.1.dev1.3', FAIL
version='1.0.0.1.dev1.3', FAIL
version='1.0.0.1.1.3', ok
version='1.0.0.1.1-3.3', FAIL
Run Code Online (Sandbox Code Playgroud)
 400 Client Error: Bad Request - The package version provided is invalid. Local version segments are not allowed.

for version numbers like: 1.0.0+33

Run Code Online (Sandbox Code Playgroud)

Azure 管道仅接受上面段中标记为“ok”的版本号。

有没有办法解决?有没有办法将开发分支名称包含在作为工件在 Azure DevOps 中发布的轮子的版本号中?

Leo*_*SFT 6

如何在 Azure DevOps 工件的轮版本号中包含分支名称?

恐怕没有这样的方法可以在 Azure DevOps 工件的轮子版本号中包含分支名称。

当我们将 python 包推送到 Azure DevOps 工件时,该包需要遵循规则PEP 440,该规则描述了一种用于识别 Python 软件发行版版本并声明对特定版本的依赖关系的方案。

公共版本标识符最多分为五个部分:

  • 纪元段:N!
  • 发布段:N(.N)*
  • 预发布片段:{a|b|rc}N
  • 发布后片段:.postN
  • 开发版本段:.devN

这就是为什么 Azure 管道只接受上面部分中标记为“ok”的版本号的原因。

另一方面,PEP440 确实允许将任意本地版本标签附加到版本说明符,但这些标签必须附加“ +”,这是您尝试的第二种方法。但是,Azure Artifacts python 包目前不支持此版本格式。

有一个用户的声音:Local Version Segments for Python Package Feeds,您可以关注您的评论并查看该问题的反馈。我也会跟进这个问题,我会把这张票的最新状态发给你。

希望这可以帮助。