devopsinfra/action-pull-request用于从当前分支创建 Pull Request 的 GitHub Action。
可与另一个 Action devops-infra/action-commit-push 结合使用,实现提交推送后的自动 Pull Request 流程。
source_branch 指定的分支向 target_branch 创建 Pull Requesttitle 和 body 参数自定义 Pull Request 的标题和正文assignee(负责人)、reviewer(审阅者)、一个或多个 label(标签)、milestone(里程碑),或标记为 draft(草稿)old_string 为 new_string,或使用提交信息主题替换 old_stringget_diff 设为 true 时,会在 Pull Request 模板中用提交列表替换 <!-- Diff commits -->,用修改文件列表替换 <!-- Diff files -->allow_no_diff 设为 true 时,即使分支间无差异(如仅含合并提交),仍会继续执行并创建 Pull Requestamd64 和 arm64 架构适用于需要自动化 Pull Request 创建的 CI/CD 流程,例如:
devops-infra/action-commit-push),实现代码提交后自动触发 Pull Request
yaml- name: 运行 Action uses: devops-infra/action-pull-request@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} source_branch: development target_branch: master title: 我的 Pull Request template: .github/PULL_REQUEST_TEMPLATE.md body: "**自动化 Pull Request**" reviewer: octocat assignee: octocat label: enhancement milestone: 我的里程碑 draft: true old_string: "<!-- 在此添加描述 -->" new_string: "**自动化 Pull Request**" get_diff: true ignore_users: "dependabot" allow_no_diff: false
| 输入变量 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
github_token | 是 | "" | GitHub 令牌,通常使用 ${{ secrets.GITHUB_TOKEN }} |
source_branch | 否 | 当前分支 | 源分支名称 |
target_branch | 否 | master | 目标分支名称,若使用 main 作为主分支需修改此值 |
title | 否 | 首个提交的主题 | Pull Request 标题 |
template | 否 | "" | 模板文件路径(如 .github/PULL_REQUEST_TEMPLATE.md) |
body | 否 | 提交列表 | Pull Request 正文 |
reviewer | 否 | "" | 审阅者用户名 |
assignee | 否 | "" | 负责人用户名(多个用逗号分隔) |
label | 否 | "" | 标签(多个用逗号分隔) |
milestone | 否 | "" | 里程碑名称 |
draft | 否 | false | 是否标记为草稿 |
old_string | 否 | "" | 模板中需替换的旧字符串 |
new_string | 否 | "" | 替换后的新字符串;若仅指定 old_string 未指定此值,则自动收集提交主题作为替换内容 |
get_diff | 否 | false | 是否在模板中替换预定义注释块以显示分支差异(详见下方“get_diff 工作原理”) |
ignore_users | 否 | "dependabot" | 忽略的用户列表(多个用逗号分隔) |
allow_no_diff | 否 | false | 是否允许在分支无差异(如仅含合并提交)时继续创建 Pull Request |
| 输出变量 | 描述 |
|---|---|
url | Pull Request 的 URL |
pr_number | GitHub Pull Request 编号 |
在旧版本中,模板中的 <!-- Diff commits --> 和 <!-- Diff files --> 注释会被替换为提交列表和修改文件列表。当前版本则要求使用以下三种注释块(位于 START 和 END 注释之间的内容会被替换),尤其适用于 Pull Request 更新时动态刷新差异信息:
<!-- Diff summary - START --> 和 <!-- Diff summary - END -->:显示 Pull Request 中每个提交的第一行(摘要)<!-- Diff commits - START --> 和 <!-- Diff commits - END -->:显示提交图谱,包含作者信息和时间<!-- Diff files - START --> 和 <!-- Diff files - END -->:显示修改文件列表若模板中使用旧版注释字符串,创建 Pull Request 时会自动将其调整为新版格式(仅修改 PR 正文,不修改模板文件)。
注意:使用 get_diff 时,需确保 actions/checkout Action 的 fetch-depth 设为 0(而非默认值),以获取完整的提交历史,示例如下:
非主分支推送时自动创建指向主分支的 Pull Request:
yamlname: 运行 Action on: push: branches-ignore: master # 主分支推送时不触发 jobs: action-pull-request: runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v5 - name: 创建 Pull Request uses: devops-infra/action-pull-request@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} title: 自动化 Pull Request
使用首个提交的主题作为标题和正文部分内容,根据分支名添加标签,并在模板中包含差异信息:
yamlname: 运行 Action on: push: branches-ignore: master # 主分支推送时不触发 jobs: action-pull-request: runs-on: ubuntu-latest steps: - name: 检出代码(完整历史) uses: actions/checkout@v5 with: fetch-depth: 0 # 必须设为 0 以获取完整提交历史,确保 get_diff 正常工作 - name: 运行 Action if: startsWith(github.ref, 'refs/heads/feature') # 仅 feature 分支触发 uses: devops-infra/action-pull-request@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} title: ${{ github.event.commits[0].message }} # 使用首个提交的主题作为标题 assignee: ${{ github.actor }} # 负责人设为当前提交者 label: enhancement,automated # 添加标签 template: .github/PULL_REQUEST_TEMPLATE.md # 使用自定义模板 old_string: "<!-- 在此添加描述 -->" # 替换模板中的占位符 new_string: ${{ github.event.commits[0].message }} # 用提交主题替换占位符 get_diff: true # 启用差异信息展示
使用特定版本的 Action(推荐固定版本以确保稳定性):
yamlname: 运行 Action on: push: branches-ignore: master jobs: action-pull-request: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: devops-infra/action-pull-request@v1.0.0 # 固定补丁版本 id: 固定补丁版本 - uses: devops-infra/action-pull-request@v1.0 # 固定次要版本 id: 固定次要版本 - uses: devops-infra/action-pull-request@v1 # 固定主要版本 id: 固定主要版本
欢迎贡献!详见 CONTRIBUTING。
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
如有问题或需要帮助,请:

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务