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

2024-05-15 07:48:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

基本上,在我看来:

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

所以我的问题是:

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

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


Tags: 方法功能githubenvactions环境os作业
1条回答
网友
1楼 · 发布于 2024-05-15 07:48:52

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

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。 发布作业等待所有以前的作业完成,然后下载所有工件,在本例中迭代它们。另一个好处是,如果任何矩阵作业失败,发布将失败。当然,只有当构建步骤和命令在所有操作系统上都相同时,这才简单

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

生成的工件: artifacts

发布作业的输出: output

相关问题 更多 >