使用github action发布python包到Pypi
目录
在 GitHub 操作 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。
公共仓库免费使用 GitHub 操作
创建工作流程文件
简言之,添加工作流程文件的步骤如下。
- 在仓库的根目录,创建名为
.github/workflows
的目录以存储工作流程文件。 - 在
.github/workflows
中,为您的工作流程添加.yml
或.yaml
文件。 例如.github/workflows/continuous-integration-workflow.yml
。 - 使用“GitHub 操作 的工作流程语法”参考文档选择可触发操作的事件、添加操作以及自定义工作流程。
- 将您在工作流程文件中的更改提交到您希望其中运行工作流程的分支。
以发布一个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
关于工作流程管理
这里比较简单,直接参考官方文档