mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
chore: reopen and test pr/issue after edited
This commit is contained in:
@@ -2,7 +2,7 @@ name: Comment on Issue
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
types: [opened, edited, reopened]
|
||||
|
||||
jobs:
|
||||
testRoute:
|
||||
@@ -11,11 +11,11 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3 # just need its cache
|
||||
- uses: actions/setup-node@v3 # just need its cache
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'yarn'
|
||||
- name: Install dependencies (yarn) # needed since we need to parse markdown, so we also use got instead
|
||||
- name: Install dependencies (yarn) # needed since we need to parse markdown, so we also use got instead
|
||||
run: yarn
|
||||
- name: Generate feedback
|
||||
uses: actions/github-script@v6
|
||||
|
||||
@@ -15,6 +15,7 @@ on:
|
||||
- 'Dockerfile'
|
||||
- 'package.json'
|
||||
- 'yarn.lock'
|
||||
types: [opened, reopened, synchronize, edited]
|
||||
# Please, always create a pull request instead of push to master.
|
||||
|
||||
permissions:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: PR - route test
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: [ PR - Docker build test ] # open, reopen, synchronized included
|
||||
workflows: [ PR - Docker build test ] # open, reopen, synchronized, edited included
|
||||
types: [ completed ]
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -40,7 +40,7 @@ async function parseBodyRoutes(body, core) {
|
||||
return dedup;
|
||||
}
|
||||
|
||||
throw 'unable to parse the issue body: route does not exist';
|
||||
throw Error('unable to parse the issue body: route does not exist');
|
||||
}
|
||||
|
||||
async function getMaintainersByRoutes(routes, core) {
|
||||
@@ -64,6 +64,17 @@ module.exports = async ({ github, context, core }) => {
|
||||
repo: context.repo.repo,
|
||||
};
|
||||
|
||||
if (context.payload.issue.state === 'closed') {
|
||||
await github.rest.issues
|
||||
.update({
|
||||
...issue_facts,
|
||||
state: 'open',
|
||||
})
|
||||
.catch((e) => {
|
||||
core.warning(e);
|
||||
});
|
||||
}
|
||||
|
||||
const routes = await parseBodyRoutes(body, core).catch((e) => {
|
||||
core.warning(e);
|
||||
});
|
||||
@@ -155,15 +166,15 @@ module.exports = async ({ github, context, core }) => {
|
||||
|
||||
> To maintainers: if you are not willing to be disturbed, list your username in \`scripts/workflow/test-issue/call-maintainer.js\`. In this way, your username will be wrapped in an inline code block when tagged so you will not be notified.
|
||||
|
||||
如果有任何路由无法匹配,issue 将会被自动关闭。如果 issue 和路由无关,请使用 \`NOROUTE\` 关键词,或者留下评论。我们会重新审核。
|
||||
If there is any route not found, the issue will be closed automatically. Please use \`NOROUTE\` for a route-irrelevant issue or leave a comment if it is a mistake.
|
||||
如果所有路由都无法匹配,issue 将会被自动关闭。如果 issue 和路由无关,请使用 \`NOROUTE\` 关键词,或者留下评论。我们会重新审核。
|
||||
If all routes can not be found, the issue will be closed automatically. Please use \`NOROUTE\` for a route-irrelevant issue or leave a comment if it is a mistake.
|
||||
`,
|
||||
})
|
||||
.catch((e) => {
|
||||
core.warning(e);
|
||||
});
|
||||
|
||||
if (failedCount > 0) {
|
||||
if (failedCount && emptyCount === 0 && successCount === 0) {
|
||||
await github.rest.issues
|
||||
.update({
|
||||
...issue_facts,
|
||||
|
||||
@@ -8,26 +8,44 @@ module.exports = async ({ github, context, core }, body, number, sender) => {
|
||||
core.debug(`match: ${m}`);
|
||||
let res = null;
|
||||
|
||||
const issue_facts = {
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: number,
|
||||
};
|
||||
const pr_facts = {
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: number,
|
||||
};
|
||||
|
||||
const removeLabel = () =>
|
||||
github.rest.issues
|
||||
.removeLabel({
|
||||
issue_number: number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
...issue_facts,
|
||||
name: noFound,
|
||||
})
|
||||
.catch((e) => {
|
||||
core.warning(e);
|
||||
});
|
||||
|
||||
if (context.payload.pull_request.state === 'closed') {
|
||||
await github.rest.pulls
|
||||
.update({
|
||||
...pr_facts,
|
||||
state: 'open',
|
||||
})
|
||||
.catch((e) => {
|
||||
core.warning(e);
|
||||
});
|
||||
}
|
||||
|
||||
if (whiteListedUser.includes(sender)) {
|
||||
core.info('PR created by a whitelisted user, passing');
|
||||
await removeLabel();
|
||||
await github.rest.issues
|
||||
.addLabels({
|
||||
issue_number: number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
...issue_facts,
|
||||
labels: ['Auto: whitelisted'],
|
||||
})
|
||||
.catch((e) => {
|
||||
@@ -47,9 +65,7 @@ module.exports = async ({ github, context, core }, body, number, sender) => {
|
||||
await removeLabel();
|
||||
await github.rest.issues
|
||||
.addLabels({
|
||||
issue_number: number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
...issue_facts,
|
||||
labels: ['Auto: No Route Needed'],
|
||||
})
|
||||
.catch((e) => {
|
||||
@@ -68,9 +84,7 @@ module.exports = async ({ github, context, core }, body, number, sender) => {
|
||||
|
||||
await github.rest.issues
|
||||
.addLabels({
|
||||
issue_number: number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
...issue_facts,
|
||||
labels: [noFound],
|
||||
})
|
||||
.catch((e) => {
|
||||
@@ -78,9 +92,7 @@ module.exports = async ({ github, context, core }, body, number, sender) => {
|
||||
});
|
||||
await github.rest.issues
|
||||
.createComment({
|
||||
issue_number: number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
...issue_facts,
|
||||
body: `自动检测失败, 请确认PR正文部分符合格式规范并重新开启, 详情请检查日志
|
||||
Auto Route test failed, please check your PR body format and reopen pull request. Check logs for more details`,
|
||||
})
|
||||
@@ -89,14 +101,12 @@ Auto Route test failed, please check your PR body format and reopen pull request
|
||||
});
|
||||
await github.rest.pulls
|
||||
.update({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: number,
|
||||
...pr_facts,
|
||||
state: 'closed',
|
||||
})
|
||||
.catch((e) => {
|
||||
core.warning(e);
|
||||
});
|
||||
|
||||
throw 'Please follow the PR rules: failed to detect route';
|
||||
throw Error('Please follow the PR rules: failed to detect route');
|
||||
};
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ describe('router', () => {
|
||||
},
|
||||
message: 'request returned 1 route',
|
||||
});
|
||||
}, 30000);
|
||||
}, 40000);
|
||||
it(`/api/routes`, async () => {
|
||||
const response = await request.get('/api/routes');
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
Reference in New Issue
Block a user