使用Github Action发布python包到pypi.org

一、pypi中创建token

  1. 浏览器中打开这个网址Log in · PyPI

输入Token name,选择一个Scope,然后点击Create token

创建成功后,进入到如下页面:

点进Copy token,然后在新的标签页打开github

二、配置token到GitHub

  1. 登录Github后,进入要配置的代码仓,点击Settings

进入新页面后,点击左侧的Secrets and variables,点击子菜单中的Actions

在跳转后的新页面里,点击右下角的New repository secrets

进入新页面后,Secret下方粘贴刚才从pypi中复制的token,Name下方输入PYPI_API_TOKEN

点击下方的绿色按钮Add secret,添加成功后Repository secrets栏目下方就会列出这个token了

三、创建挂载Github Action的自动化发布脚本

在代码仓的.github/workflows/目录下(如果没该目录,就手动创建一下),添加publish.yml文件,内容如下:

复制代码
name: Publish

on:
  push:
    tags:
      - '*'

jobs:
  publish:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        package:
          - fast-dev-cli
          - fastdevcli-slim
    permissions:
      id-token: write

    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.10'
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install build
      - name: Build package
        env:
          BUILD_PACKAGE: ${{ matrix.package }}
        run: python -m build
      - name: Publish package
        uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
        with:
          user: __token__
          password: ${{ secrets.PYPI_API_TOKEN }}
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"

文件主要参考了https://github.com/tiangolo/fastapi/blob/master/.github/workflows/publish.yml

把其中的package改成了我的,触发构建的钩子也由release改成tag

注:该自动化发布脚本会一次性发布两个Python包,如果只想发布一个包,可以参考这个:tortoise-orm/.github/workflows/pypi.yml at main · tortoise/tortoise-orm · GitHub

相关推荐
0xR3lativ1ty12 小时前
每日GitHub trending精选
github
带娃的IT创业者12 小时前
GitHub 热门项目解析:当 AI 编码助手遭遇“上下文爆炸”
人工智能·github·代码优化·ai编程助手·上下文窗口·上下文压缩
白鲸开源15 小时前
Apache SeaTunnel 提交一个任务都经过了什么?
大数据·开源·github
dong_junshuai15 小时前
每天一个开源项目#60 TencentDB Agent Memory:1.4万星的团队记忆中枢
github·腾讯
dong_junshuai15 小时前
每天一个开源项目#61 3.9K Stars:Cloudflare 给 Agent 一台持久云电脑
程序员·github
橙序员小站15 小时前
我把公众号生产链做成了全本地的 AI 工作台 🛠️
程序员·github
笨鸟先飞,勤能补拙16 小时前
AI 安全的下一个 5 年:从 Agent 到 AGI 的攻防博弈
人工智能·python·安全·web安全·网络安全·github·agi
Bryce学亮17 小时前
FileLine,基于 Qt 6 + QML 构建的跨平台文件传输与即时通讯工具
数据库·c++·人工智能·python·qt·github
VIP_CQCRE20 小时前
用 GitHub 做开发者营销:把 Ace Data Cloud 的 API 能力变成可运行项目
ai·github·api·开发者工具·acedatacloud
凌云拓界20 小时前
NodeVerdict:Node.js 原生诊断数据可视化工具
信息可视化·架构·typescript·开源·node.js·github·bug