75 lines
3.0 KiB
YAML
75 lines
3.0 KiB
YAML
# This workflow checks whether the PR author checked the "I did NOT read" item
|
|
# in the PR checklist. If so, it posts a reminder comment and closes the PR.
|
|
name: PR Checklist Check
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [opened, edited, reopened, synchronize]
|
|
|
|
jobs:
|
|
check-checklist:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
steps:
|
|
- name: Check if user checked "我没有认真阅读"
|
|
id: check
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const body = context.payload.pull_request.body || '';
|
|
|
|
// 精确匹配完整的 checklist 项:- [x] 或 - [X] 后跟完整句子,忽略大小写和多余空格
|
|
const regex = /-+\s*\[\s*[xX]\s*\]\s*⚠️\s*我\*\*没有\*\*认真阅读以上内容,直接提交。/im;
|
|
const isBad = regex.test(body);
|
|
|
|
return isBad;
|
|
result-encoding: string
|
|
|
|
- name: Comment and close PR if checklist violated
|
|
if: steps.check.outputs.result == 'true'
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const prNumber = context.payload.pull_request.number;
|
|
const author = context.payload.pull_request.user.login;
|
|
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: prNumber,
|
|
body: |
|
|
👋 @${author}
|
|
|
|
您的 PR 未通过检查清单校验 —— 检测到您勾选了「我**没有**认真阅读以上内容,直接提交」。
|
|
|
|
请按照以下规则重新提交 PR:
|
|
|
|
1. 请仔细阅读 PR 模板中的所有说明。
|
|
2. 本次开发请**基于 \`dev\` 分支**进行,并将 PR 目标分支设置为**开发分支(\`dev\`)**(除非极其紧急的情况才允许合并到主分支)。
|
|
3. 完成上述检查后,请重新发起 PR。
|
|
|
|
本 PR 已自动关闭,请按规范重新拉起。感谢您的贡献!🙏
|
|
|
|
---
|
|
|
|
Your PR failed the checklist validation — the item "I **did not** read the above carefully before submitting" was checked.
|
|
|
|
Please follow these rules and reopen a new PR:
|
|
|
|
1. Read all the instructions in the PR template carefully.
|
|
2. Make sure your development is **based on the \`dev\` branch**, and set the PR target branch to the **development branch (\`dev\`)** (only merge to main if extremely urgent).
|
|
3. Once you have reviewed everything, please open a new PR.
|
|
|
|
This PR has been automatically closed. Please reopen a correct one. Thank you for your contribution! 🙏
|
|
});
|
|
|
|
await github.rest.pulls.update({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: prNumber,
|
|
state: 'closed'
|
|
});
|