-
Notifications
You must be signed in to change notification settings - Fork 7.6k
135 lines (120 loc) · 4.04 KB
/
issue-command.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Issue Command
on:
issue_comment:
types: [created]
jobs:
rebase:
name: Automatic Rebase
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') && github.event.comment.author_association == 'COLLABORATOR'
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout the latest code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Automatic Rebase
uses: cirrus-actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
self-assign:
name: Self Assign
if: ${{ !github.event.issue.pull_request && startsWith(github.event.comment.body, '/wip') }}
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
issues: write
steps:
- uses: bdougie/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
trigger: '/wip'
test-on-demand:
name: Test route on demand
if: startsWith(github.event.comment.body, '/test')
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
attestations: write
issues: write
pull-requests: write
steps:
- name: Fetch PR data (for PR)
if: github.event.issue.pull_request
uses: octokit/[email protected]
id: pr-data
with:
route: GET /repos/{repo}/pulls/{number}
repo: ${{ github.repository }}
number: ${{ github.event.issue.number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout
if: ${{ !github.event.issue.pull_request }}
uses: actions/checkout@v4
- name: Checkout PR
if: github.event.issue.pull_request
uses: actions/checkout@v4
with:
ref: ${{ fromJson(steps.pr-data.outputs.data).head.ref }}
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Use Node.js Active LTS
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'pnpm'
- name: Install dependencies (pnpm)
run: pnpm i && pnpm rb
- name: Fetch affected routes
id: fetch-route
uses: actions/github-script@v7
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 { default: identify } = await import('${{ github.workspace }}/scripts/workflow/test-route/identify.mjs')
return identify({ github, context, core }, body, number, sender)
- name: Build RSSHub
if: env.TEST_CONTINUE
run: pnpm build
- name: Start RSSHub
if: env.TEST_CONTINUE
run: pnpm start &
env:
ALLOW_USER_HOTLINK_TEMPLATE: true
ALLOW_USER_SUPPLY_UNSAFE_DOMAIN: true
NODE_ENV: dev
LOGGER_LEVEL: debug
- name: Generate feedback
if: env.TEST_CONTINUE
uses: actions/github-script@v7
env:
TEST_BASEURL: http://localhost:1200
TEST_ROUTES: ${{ steps.fetch-route.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 { default: test } = await import('${{ github.workspace }}/scripts/workflow/test-route/test.mjs')
await test({ github, context, core }, link, routes, number)
- name: Print logs
if: env.TEST_CONTINUE
run: cat ${{ github.workspace }}/logs/combined.log
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: logs
path: logs
retention-days: 1