72 lines
2.2 KiB
YAML
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],
|
|
});
|