用于从当前分支创建 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 文件。
如有问题或需要帮助,请:
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429