【发布时间】:2021-05-27 20:48:41
【问题描述】:
也许是一个广泛的问题,但我认为这与任何使用 github 的 python 包维护者相关,并且可以显着减少他们的工作量,所以希望所拥有的权力能够让它站稳脚跟。
基本上,在我看来:
- 为 python 构建和发布轮子很好,但有时它们必须特定于操作系统才能正常工作(即构建在类似的 OS/Env 上)
- Github 操作提供了广泛的操作系统来运行作业(目前免费),因此可以用来构建这些轮子
- Github 操作可轻松用于通过 twine 发布 sidst
所以我的问题是:
- 是否有一种直接的方法可以为一堆环境构建轮子(例如,在 github 操作中使用 OS/env 矩阵)然后通过 github 操作将它们全部发布。通过将它们聚合在一个地方然后运行一些麻线命令?问题似乎是无法通过 github 操作在不同的 envs/vms 设置之间进行通信。
我可以想到各种解决方案,例如一个中间 s3 存储桶,但我可能对 pypi 和/或 github 操作在这方面的工作方式有很大的误解,所以我可能正在浏览一个非常简单的问题。
【问题讨论】:
-
您不需要收集已构建的轮子——您只需用
twine一个一个地推动它们。每个虚拟机为一个特定的操作系统构建一个轮子,然后发布一个轮子。 -
示例:这就是我为CheetahTemplates 制造轮子的方式; GitHub 的源代码包括 Travis CI 和 AppVeyor CI 的配置。在 Travis I run 带有 Linux 和 OSX 的虚拟机;在 AppVeyor w32/w64。结果是pypi.org/project/Cheetah3/3.2.6.post1/#files
-
对于 Github Actions 应该是一样的。每项工作都推动一个轮子。
-
这不会导致版本发布到 pypi 和所有轮子都被推动之间的“lul”吗?所以你有 20 到 30 分钟的时间来安装 pip ,基本上
-
就像@phd 提到的那样,拥有一个操作系统矩阵似乎更有意义,每个作业都在其中构建并推送它自己的工件。但是,您可以通过一项工作来聚合矩阵的所有结果并将所有内容推送到一个位置。如果您愿意,我可以向您展示工作流程结构,但不幸的是,我不知道 pip 和 twine 的细节或命令。
标签: python github github-actions pypi python-wheel