You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python或GitHub API通过个人访问令牌触发Workflow运行?

触发GitHub Workflow的两种Python实现方案

前置准备

首先需要创建一个GitHub个人访问令牌(PAT),创建时需勾选repo(私有仓库)或public_repo(公共仓库)权限,确保令牌能访问目标仓库并触发Workflow。


方案一:使用PyGitHub模块(GitHub官方Python SDK)

PyGitHub是GitHub官方维护的Python库,封装了API调用细节,使用更简洁。

  1. 安装模块
pip install pygithub
  1. 示例代码
from github import Github

# 替换为你的个人访问令牌
ACCESS_TOKEN = "your-personal-access-token"
# 仓库信息:替换为实际的所有者和仓库名
REPO_OWNER = "dev-zarir"
REPO_NAME = "Python-Workflow"
# Workflow文件名:替换为你的Workflow文件实际路径(比如 .github/workflows/python.yml)
WORKFLOW_FILE_NAME = "python.yml"
# 触发的分支名,默认通常是main或master
BRANCH_NAME = "main"

# 初始化GitHub客户端
g = Github(ACCESS_TOKEN)
repo = g.get_repo(f"{REPO_OWNER}/{REPO_NAME}")

# 触发Workflow
repo.get_workflow(WORKFLOW_FILE_NAME).create_dispatch(branch=BRANCH_NAME)

方案二:使用requests直接调用GitHub API

如果不想依赖第三方库,可直接用requests调用GitHub的Actions API。

  1. 示例代码
import requests

# 替换为你的个人访问令牌
ACCESS_TOKEN = "your-personal-access-token"
# 仓库信息
REPO_OWNER = "dev-zarir"
REPO_NAME = "Python-Workflow"
# Workflow标识:可以是文件名(如python.yml)或Workflow的ID
WORKFLOW_ID = "python.yml"
# 触发的分支名
BRANCH_NAME = "main"

# API端点
url = f"https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/actions/workflows/{WORKFLOW_ID}/dispatches"

# 请求头
headers = {
    "Authorization": f"token {ACCESS_TOKEN}",
    "Accept": "application/vnd.github.v3+json"
}

# 请求体:指定触发的分支,若Workflow有输入参数可添加inputs字段
payload = {
    "ref": BRANCH_NAME
}

# 发送POST请求
response = requests.post(url, json=payload, headers=headers)

# 检查响应状态
if response.status_code == 204:
    print("Workflow触发成功")
else:
    print(f"触发失败,状态码:{response.status_code},详情:{response.text}")

注意事项

  • 确保个人访问令牌的权限范围正确,缺少权限会触发403错误。
  • Workflow的on: workflow_dispatch配置必须存在,否则无法通过API触发。
  • 分支名需为仓库中已存在的有效分支,否则会返回404错误。

内容的提问来源于stack exchange,提问作者Shahriar Zarir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:35:21