使用github action发布python包到Pypi

github action 官方中文文档

在 GitHub 操作 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。

公共仓库免费使用 GitHub 操作

创建工作流程文件

简言之,添加工作流程文件的步骤如下。

  1. 在仓库的根目录,创建名为 .github/workflows 的目录以存储工作流程文件。
  2. .github/workflows 中,为您的工作流程添加 .yml.yaml 文件。 例如 .github/workflows/continuous-integration-workflow.yml
  3. 使用“GitHub 操作 的工作流程语法”参考文档选择可触发操作的事件、添加操作以及自定义工作流程。
  4. 将您在工作流程文件中的更改提交到您希望其中运行工作流程的分支。

以发布一个python包为例

这个例子模板来自官方,是我的一个python包(gotwo)。

# This workflows will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries

# action的名称
name: Upload Python Package gotwo

on:
  # 当master分支有push时,触发action
  #push: 
  #  branches:
  #    - master
  
  # 当一个pr被合并到master时,触发action
  pull_request:
    branches:
      - master
  
  # 当发布时,触发action
  #release:
  #  types: [created]


jobs:
  deploy:
    name: publish python package to PYPI
    # 此作业在 Linux 上运行
    runs-on: ubuntu-latest

    steps:
    # 此步骤使用 GitHub 的 https://github.com/actions/checkout
    - uses: actions/checkout@v2
    
    # 设置python环境
    # 此步骤使用 GitHub 的 https://github.com/actions/setup-python
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.x'
    
    # 安装依赖
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install setuptools wheel twine
    
    # 构建和发布
    - name: Build and publish
      env:
        TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
        TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
      run: |
        python setup.py sdist bdist_wheel
        twine upload dist/*

action工作流文件解读

通过事件触发工作流程

GitHub 上的事件发生,例如有人推送提交到仓库或者创建议题或拉取请求时

name: descriptive-workflow-name
on: push

安排的事件开始

例子是每小时触发一次

on:
  schedule:
    - cron:  '0 * * * *'

外部事件发生

过滤特定分支、标记和路径

例如,在 master 分支上进行包含 test 目录中文件的推送或推送到 v1 标记时,此工作流程运行。

on:
  push:
    branches:
      - master
    tags:
      - v1
    # 事件中要考虑的文件路径。 Optional; defaults to all.
    paths:
      - 'test/*'

选择运行器

例如,您可以使用 ubuntu-later 指定 Ubuntu GitHub 托管的运行器的最新版本。

runs-on: ubuntu-latest

将工作流程状态徽章添加到您的仓库

如果您的工作流程使用 name 关键词,则必须按名称引用工作流程。 如果工作流程名称包含空格,您需要将空格替换为 URL 编码字符串 %20

https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg

关于工作流程管理

这里比较简单,直接参考官方文档

posted @ 2020-05-23 22:40  hiyang  阅读(1581)  评论(0编辑  收藏  举报