用 GitHub Actions 自动打包发布 Python 项目
文章目录
前言
还在手动打包上传 PyPI?GitHub Actions 自动化真香~!
在《Python 代码一键转流程图》一文里,我介绍了我的开源项目 PyFlowchart。过去这段时间里,已经有好几位小伙伴为这个项目提出了建议,或者报告了 Bug 啦。在这几位朋友的帮助下,项目也迭代了几个版本了。之前,这个项目每次版本更新,我都需要做很多写代码意外的麻烦工作:
- 在 GitHub 上 publish 一个 release,
- 手动打包上传 PyPI。
这个过程非常反人类,release 一个版本要做两个工作。更可怕的是,打包上传 PyPI 的工作十分模版化(鄙人拙作《如何用 pip 安装自己写的包》一文介绍了这个过程)。我觉得作为开发者,不应该把时间浪费在这种套路工作上。
于是我想去了过去我写过一篇叫做《还在手动发博客?GitHub Actions自动化真香》的文章,大致介绍了我是如何利用 GitHub Actions 自动更新博客网站的。所以,今回,我尝试用 GitHub Actions 搭建了一套发布新版本时,自动打包上传 PyPI 📦 的工作流程。
现在,发布新的版本时,就只需在 GitHub 上新建一个 Release。GitHub Actions 会自动帮我完成构建、打包、上传 PyPI 的工作。
本文就介绍如何利用 GitHub Actions 自动发布 Python 包到 PyPI。
(注:我在 PyFlowchart 项目中使用的实现和下文略有不同,我根据需求做了一些修改,如果你感兴趣,可以看一看我的实现:https://github.com/cdfmlr/pyflowchart/tree/master/.github/workflows)
下文翻译自 PyPA 的文章《Publishing package distribution releases using GitHub Actions CI/CD workflows》
原文链接:https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
GitHub Actions CI/CD 允许在 GitHub 平台上特定的事件发生时自动运行一系列的命令。用这个就可以做设置一个响应 push 事件的工作流程。本文将展示如何当有 git push 时发布一个新的 Python 包发行版(到 PyPI)。我们将使用到 pypa/gh-action-pypi-publish GitHub Action。
注意:这个教程假设你已经有在 GitHub 上有一个 Python 项目,并且你知道如何构建包,并把它发布到 PyPI。
在 GitHub 上保存 token
在本文中ÿ