Python 如何使用github操作发布pip控制盘

Python 如何使用github操作发布pip控制盘,python,github,github-actions,pypi,python-wheel,Python,Github,Github Actions,Pypi,Python Wheel,也许这是一个比较宽泛的问题,但我认为这对于任何使用github的python包的维护者来说都是相关的,并且可以显著减少他们的工作量,所以希望它的强大功能能够让它保持下去 基本上,在我看来: 为python构建和发布控制盘很好,但有时它们必须特定于操作系统才能正常工作(即,构建在类似的OS/Env上) Github actions提供了广泛的操作系统来运行作业(目前是免费的),因此可以使用它来构建这些轮子 Github操作可以很容易地通过twine发布sidst 所以我的问题是: 是否有一种

也许这是一个比较宽泛的问题,但我认为这对于任何使用github的python包的维护者来说都是相关的,并且可以显著减少他们的工作量,所以希望它的强大功能能够让它保持下去

基本上,在我看来:

  • 为python构建和发布控制盘很好,但有时它们必须特定于操作系统才能正常工作(即,构建在类似的OS/Env上)
  • Github actions提供了广泛的操作系统来运行作业(目前是免费的),因此可以使用它来构建这些轮子
  • Github操作可以很容易地通过twine发布sidst
所以我的问题是:

  • 是否有一种直接的方法为一系列环境构建轮子(例如,在github操作中使用OS/env矩阵),然后通过github actionse.g发布它们。将它们聚集在一个位置,然后运行一些twine命令?问题似乎是无法通过github操作在不同的环境/虚拟机设置之间进行通信

我可以想到各种各样的解决方案,例如一个中间s3存储桶,但是我很可能对pypi和/或github操作在这方面的工作方式大错特错,所以可能有一个非常简单的问题我要回顾一下。

正如我在评论中提到的,这里有一种可能的方法来运行并行构建,但只需一次上传:

name:“聚合”
on:[推]
环境:
工件:ARTIFACT.bin
工作:
建造:
运行于:${{matrix.os}
战略:
矩阵:
操作系统:
-windows最新版本
-ubuntu最新版本
-macos最新版本
步骤:
-用途:行动/checkout@v2
-shell:bash
运行:|
echo“在此处运行构建命令”
echo“这是一个伪${{matrix.os}}构建工件”>$artifact
-用途:操作/上传-artifact@v2
与:
名称:build-${{matrix.os}}-${{github.sha}
路径:${{env.ARTIFACT}
出版:
运行于:ubuntu最新版本
需求:构建
步骤:
-用途:操作/下载-artifact@v2
与:
路径:工件
-shell:bash
工作目录:工件
运行:|
对于i,单位为美元(ls);做
cat$i/$ARTIFACT
完成
每个矩阵作业构建并将自己的工件上传到github。 发布作业等待所有以前的作业完成,然后下载所有工件,在本例中迭代它们。另一个好处是,如果任何矩阵作业失败,发布将失败。当然,只有当构建步骤和命令在所有操作系统上都相同时,这才简单

以下是测试运行的一些屏幕截图:

生成的工件:

发布作业的输出:

您不需要收集已制造的车轮-您只需用
绳线一个接一个地推动它们即可。每个虚拟机为一个特定操作系统构建一个控制盘,然后发布一个控制盘;位于的源代码包括Travis CI和AppVeyor CI的配置。在Travis I虚拟机上安装Linux和OSX;在AppVeyor。Github操作的结果应该是相同的。每个作业都推动一个轮子。这会不会导致版本发布到pypi和所有轮子都被推动之间的“lul”?所以你有20-30分钟的时间,pip安装是有线的,基本上Nobody为我报告了任何问题,所以我不在乎。也许
pip
认识到PyPI的最新版本尚未提供控制盘,并使用了以前的控制盘。