chore(workflow): test route on demand (#9831)

* chore: on demand test

* style: lint
This commit is contained in:
Tony
2022-05-27 04:09:00 +08:00
committed by GitHub
parent 597e00054c
commit 5dd5317400
2 changed files with 85 additions and 12 deletions
+72 -1
View File
@@ -21,9 +21,10 @@ jobs:
uses: cirrus-actions/rebase@1.7
env:
GITHUB_TOKEN: ${{ secrets.TOKEN_SUPER }}
self-assign:
name: Self Assign
if: github.event.issue.pull_request == '' && startsWith(github.event.comment.body, '/wip')
if: ${{ !github.event.issue.pull_request && startsWith(github.event.comment.body, '/wip') }}
runs-on: ubuntu-latest
permissions:
contents: read
@@ -35,3 +36,73 @@ jobs:
assign_phrase: '/wip'
label_phase1: RSS proposal
label_phase2: RSS bug
test-on-demand:
name: Test route on demand
if: startsWith(github.event.comment.body, '/test')
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js v16
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
- name: Install dependencies (yarn)
run: yarn
- name: Fetch affected routes
id: fetchRoute
uses: actions/github-script@v6
env:
EVENT: ${{ toJson(github.event) }}
with:
script: |
const event = JSON.parse(process.env.EVENT)
const body = event.comment.body
const number = event.issue.number
const sender = event.comment.user.login
const script = require(`${process.env.GITHUB_WORKSPACE}/scripts/workflow/test-route/identify.js`)
return await script({ github, context, core }, body, number, sender)
- name: Start RSSHub
if: env.TEST_CONTINUE
run: yarn start &
env:
NODE_ENV: dev
LOGGER_LEVEL: debug
- name: Generate feedback
if: env.TEST_CONTINUE
uses: actions/github-script@v6
env:
TEST_BASEURL: http://localhost:1200
TEST_ROUTES: ${{ steps.fetchRoute.outputs.result }}
EVENT: ${{ toJson(github.event) }}
with:
script: |
const event = JSON.parse(process.env.EVENT)
const link = process.env.TEST_BASEURL
const routes = JSON.parse(process.env.TEST_ROUTES)
const number = event.issue.number
core.info(`${link}, ${routes}, ${number}`)
const got = require("got")
const script = require(`${process.env.GITHUB_WORKSPACE}/scripts/workflow/test-route/test.js`)
return await script({ github, context, core, got }, link, routes, number)
- name: Print logs
if: (env.TEST_CONTINUE)
run: cat ${{ github.workspace }}/logs/combined.log
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: logs
path: logs
retention-days: 1
+13 -11
View File
@@ -1,4 +1,4 @@
/* eslint-disable */
/* eslint-disable no-await-in-loop */
module.exports = async ({ github, context, core, got }, baseUrl, routes, number) => {
if (routes[0] === 'NOROUTE') {
@@ -63,16 +63,18 @@ ${detail.slice(0, 65300 - temp_com.length)}
com_l = com_l.slice(0, 5);
}
await github.rest.issues
.addLabels({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['Auto: Route Test Complete'],
})
.catch((e) => {
core.warning(e);
});
if (context.payload.pull_request) {
await github.rest.issues
.addLabels({
issue_number: number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['Auto: Route Test Complete'],
})
.catch((e) => {
core.warning(e);
});
}
for (const com_s of com_l) {
// Intended, one at a time