也许是一个广泛的问题,但我认为这与任何使用 github 并可以显着减少他们的工作量的 python 包维护者相关,所以希望这些权力能够让它站住脚。
基本上,在我看来:
所以我的问题是:
我可以想到各种解决方案,例如一个中间的 s3 存储桶,但在 pypi 和/或 github 操作在这方面的工作方式方面,我可能大错特错,因此我正在浏览一个非常简单的问题。
最佳答案
正如我在评论中提到的,这是运行并行构建但一次上传的一种可能方法:
name: 'Aggregation'
on: [push]
env:
ARTIFACT: artifact.bin
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- windows-latest
- ubuntu-latest
- macos-latest
steps:
- uses: actions/checkout@v2
- shell: bash
run: |
echo "Run your build command here"
echo "This is a fake ${{ matrix.os }} build artifact" >$ARTIFACT
- uses: actions/upload-artifact@v2
with:
name: build-${{ matrix.os }}-${{ github.sha }}
path: ${{ env.ARTIFACT }}
publish:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v2
with:
path: artifacts
- shell: bash
working-directory: artifacts
run: |
for i in $( ls ); do
cat $i/$ARTIFACT
done
每个矩阵作业构建并上传自己的工件到 github。在下载所有工件并在本例中迭代它们之前,发布作业会等待所有先前的作业完成。另一个好处是,如果任何矩阵作业失败,发布都会失败。当然,这只有在所有操作系统上的构建步骤和命令都相同时才很简单。
以下是部分测试运行截图:
产生的工件:
发布作业的输出:
关于python - 如何使用 github 操作发布 pip 轮子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66369434/