From dd89a4b33418a6b86e28e3f859ca63be60d69973 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 17:30:29 +0000 Subject: [PATCH] feat: add PR checklist enforcement workflow Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com> --- .github/workflows/pr-checklist-check.yml | 69 ++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/pr-checklist-check.yml diff --git a/.github/workflows/pr-checklist-check.yml b/.github/workflows/pr-checklist-check.yml new file mode 100644 index 000000000..ce57c8d7d --- /dev/null +++ b/.github/workflows/pr-checklist-check.yml @@ -0,0 +1,69 @@ +# 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: + types: [opened, edited, reopened, synchronize] + +jobs: + check-checklist: + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - name: Check if the "did not read" item is checked + id: check + uses: actions/github-script@v7 + with: + script: | + const body = context.payload.pull_request.body || ''; + // Match the last checklist item being checked (- [x] ⚠️ 我**没有**认真阅读) + const violationPattern = /- \[x\] ⚠️ 我\*\*没有\*\*认真阅读以上内容,直接提交。/; + return violationPattern.test(body); + 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', + });