Files
class/.github/workflows/issue-template-review.yml
T
2026-05-03 10:31:05 +08:00

72 lines
2.2 KiB
YAML

name: Review Issues Without Template
on:
issues:
types:
- opened
permissions:
issues: write
jobs:
label-without-template:
if: ${{ !github.event.issue.pull_request }}
runs-on: ubuntu-latest
steps:
- name: Add review label when no template is used
uses: actions/github-script@v7
with:
script: |
const reviewLabel = "needs-review";
const templateLabels = new Set([
"people-update",
"photo-update",
"site-suggestion",
]);
const issue = context.payload.issue;
const labels = issue.labels.map((label) => label.name);
const body = issue.body || "";
const title = issue.title || "";
const hasTemplateLabel = labels.some((label) => templateLabels.has(label));
const hasTemplateTitle =
title.startsWith("people:") ||
title.startsWith("photo:") ||
title.startsWith("suggestion:");
const hasTemplateFields =
body.includes("### slug") ||
body.includes("### topic") ||
body.includes("### 建议涉及的网站部分");
if (hasTemplateLabel || hasTemplateTitle || hasTemplateFields) {
return;
}
try {
await github.rest.issues.getLabel({
owner: context.repo.owner,
repo: context.repo.repo,
name: reviewLabel,
});
} catch (error) {
if (error.status !== 404) {
throw error;
}
await github.rest.issues.createLabel({
owner: context.repo.owner,
repo: context.repo.repo,
name: reviewLabel,
color: "fbca04",
description: "Issue did not use a repository template and needs manual review.",
});
}
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: [reviewLabel],
});