This commit is contained in:
William Harrison
2025-01-02 18:54:05 +08:00
parent b7739fb0c8
commit f78a7beddc
3 changed files with 23 additions and 26 deletions
+15 -16
View File
@@ -1,21 +1,20 @@
name: StaleBOT
on:
workflow_dispatch:
name: 'Force cleanup'
schedule:
- cron: "30 14 * * *"
workflow_dispatch:
schedule:
- cron: "30 14 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 3
stale-issue-message: 'This issue has been marked as stale due to inactivity and will be closed. Comment anything on this issue to prevent it'
stale-pr-message: 'This pull request has been marked as stale due to inactivity and will be closed. Comment anything on this PR to prevent it'
exempt-issue-labels: 'no-stale'
exempt-pr-labels: 'no-stale'
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 3
stale-issue-message: "This issue has been marked as stale due to inactivity and will be closed. Comment anything on this issue to prevent it"
stale-pr-message: "This pull request has been marked as stale due to inactivity and will be closed. Comment anything on this PR to prevent it"
exempt-issue-labels: "no-stale"
exempt-pr-labels: "no-stale"
+2 -7
View File
@@ -36,15 +36,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Get Modified JSON Files
id: modified_files
run: |
MODIFIED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep '^domains/.*\.json$' | sed 's|.*/||' | tr '\n' ',' | sed 's|,$||')
echo "MODIFIED_FILES=${MODIFIED_FILES}" >> $GITHUB_ENV
- run: npm install
- run: npm test
env:
PULL_REQUEST: ${{ github.event_name == 'pull_request' }}
EVENT: ${{ github.event_name }}
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
MODIFIED_FILES: ${{ env.MODIFIED_FILES }}
+6 -3
View File
@@ -1,5 +1,3 @@
if (!process.env.PULL_REQUEST) return;
const t = require("ava");
const fs = require("fs-extra");
const path = require("path");
@@ -12,12 +10,17 @@ const domainsPath = path.resolve("domains");
const admins = require("../util/administrators.json");
t("Modified JSON files must be owned by the PR author", (t) => {
if(process.env.EVENT !== "pull_request") {
t.pass();
return;
}
MODIFIED_FILES.forEach((file) => {
const domain = fs.readJsonSync(path.join(domainsPath, file));
t.true(
domain.owner.username === PR_AUTHOR || admins.includes(PR_AUTHOR),
`${file}: Owner should be ${PR_AUTHOR} but is ${domain.owner}`
`${file}: Owner is ${domain.owner.username} but ${PR_AUTHOR} is the PR author`
);
});
});