如何使用github操作发布pip wheel

乔治

也许是一个广泛的问题,但是我认为这与使用github并可以大大减少其工作量的python软件包的任何维护者都有关,因此希望它能发挥作用。

本质上,在我看来:

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

所以我的问题是:

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

我可以想到各种解决方案,例如中间s3存储桶,但是在pypi和/或github动作在这方面如何工作方面,我可能犯了很大的错误,因此我可能会遇到一个非常简单的问题。

ITChap

如我的评论中所述,这是运行并行构建但只有一次上传的一种可能方法:

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。在下载所有工件并在其上进行迭代之前,发布作业将等待所有先前的作业完成。另一个好处是,如果任何矩阵作业失败,则发布将失败。当然,只有在所有操作系统上的构建步骤和命令都相同的情况下,这才是简单的。

以下是测试运行的屏幕截图:工作流程运行结果工件:文物发布作业的输出:输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从pip wheel缓存中提取python wheel?

不使用pip安装python wheel文件

如何从wheel文件导入pyzmq?

使用CHtmlView检测CTRL + Wheel

使用pip有条件地安装wheel文件

使用Wheel文件的python Pip安装不起作用

如何列出python wheel中的文件?

如何防止python wheel扩展shebang?

如何使用mouse_event(MOUSEEVENTF_WHEEL

带有 Git 钩子的 Python Wheel(pip 安装)

> pip wheel -w wheels -rpackage.txt上的错误

如何正确地“ dispatchEvent”一个“ wheel”事件?

如何在散景中禁用wheel_zoom?

构建它时如何强制python wheel特定于平台?

如何从现有的本机库制作Python Wheel?

如何从单个setup.py构建多个wheel文件?

检测使用wheel事件移动了哪个滚动条

使用wheel事件以增量循环遍历数组

在React.js中使用HTML5 Lucky Wheel

pip 如何知道要抓取哪个 Wheel 来与您的系统一起工作?

当我使用pip install软件包时,“ Building wheel for xxx”是什么意思?

使用pip下载Python软件包时,为什么会得到很多wheel文件

如何使用setuptools将Python标签添加到bdist_wheel命令?

最好在安装任何其他 pip 包之前安装“wheel”包吗?

Pythonsetuptools pkg_resources pip wheel失败,错误代码为1 [错误]

我在哪里可以找到“wheel”pip 包中的 setup.py?

Virtualenv OSError-setuptools pip wheel失败,错误代码为1

pip安装mysqlclient失败“正在运行mysqlclient的setup.py bdist_wheel ...错误”

尝试安装pyodbc wheel文件时缺少pip install setup.py