| name: PR - route test |
|
|
| on: |
| workflow_run: |
| workflows: [PR - Docker build test] |
| types: [completed] |
|
|
| jobs: |
| testRoute: |
| name: Route test |
| runs-on: ubuntu-latest |
| permissions: |
| pull-requests: write |
| if: ${{ github.event.workflow_run.conclusion == 'success' }} |
| steps: |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd |
|
|
| |
| - name: Search the PR that triggered this workflow |
| id: source-run-info |
| env: |
| |
| GH_TOKEN: ${{ github.token }} |
| |
| PR_TARGET_REPO: ${{ github.repository }} |
| |
| PR_BRANCH: |- |
| ${{ |
| (github.event.workflow_run.head_repository.owner.login != github.event.workflow_run.repository.owner.login) |
| && format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch) |
| || github.event.workflow_run.head_branch |
| }} |
| |
| run: | |
| gh pr view --repo "${PR_TARGET_REPO}" "${PR_BRANCH}" \ |
| --json 'number' --jq '"number=\(.number)"' \ |
| >> "${GITHUB_OUTPUT}" |
| |
| - name: Fetch PR data via GitHub API |
| uses: octokit/request-action@dad4362715b7fb2ddedf9772c8670824af564f0d |
| id: pr-data |
| with: |
| route: GET /repos/{repo}/pulls/{number} |
| repo: ${{ github.repository }} |
| number: ${{ steps.source-run-info.outputs.number }} |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Fetch affected routes |
| id: fetch-route |
| uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd |
| env: |
| PULL_REQUEST: ${{ steps.pr-data.outputs.data }} |
| with: |
| |
| github-token: ${{ secrets.GITHUB_TOKEN }} |
| script: | |
| const PR = JSON.parse(process.env.PULL_REQUEST) |
| const body = PR.body |
| const number = PR.number |
| const sender = PR.user.login |
| const { default: identify } = await import('${{ github.workspace }}/scripts/workflow/test-route/identify.mjs') |
| return identify({ github, context, core }, body, number, sender) |
| |
| - name: Fetch Docker image |
| if: (env.TEST_CONTINUE) |
| uses: dawidd6/action-download-artifact@fe9d59ce33ce92db8a6ac90b2c8be6b6d90417c8 |
| with: |
| workflow: ${{ github.event.workflow_run.workflow_id }} |
| run_id: ${{ github.event.workflow_run.id }} |
| name: docker-image |
| path: ../artifacts-${{ github.run_id }} |
|
|
| - name: Import Docker image and set up Docker container |
| if: (env.TEST_CONTINUE) |
| working-directory: ../artifacts-${{ github.run_id }} |
| run: | |
| set -ex |
| zstd -d --stdout rsshub.tar.zst | docker load |
| docker run -d \ |
| --name rsshub \ |
| -e NODE_ENV=dev \ |
| -e NODE_OPTIONS='--max-http-header-size=32768' \ |
| -e LOGGER_LEVEL=debug \ |
| -e ALLOW_USER_HOTLINK_TEMPLATE=true \ |
| -e ALLOW_USER_SUPPLY_UNSAFE_DOMAIN=true \ |
| -p 1200:1200 \ |
| rsshub:latest |
| |
| - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 |
|
|
| - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 |
| if: (env.TEST_CONTINUE) |
| with: |
| node-version: lts/* |
| cache: 'pnpm' |
|
|
| - name: Install dependencies (pnpm) |
| if: (env.TEST_CONTINUE) |
| run: pnpm i |
|
|
| - name: Generate feedback |
| if: (env.TEST_CONTINUE) |
| id: generate-feedback |
| timeout-minutes: 10 |
| uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd |
| env: |
| TEST_BASEURL: http://localhost:1200 |
| TEST_ROUTES: ${{ steps.fetch-route.outputs.result }} |
| PULL_REQUEST: ${{ steps.pr-data.outputs.data }} |
| with: |
| github-token: ${{ secrets.GITHUB_TOKEN }} |
| script: | |
| const PR = JSON.parse(process.env.PULL_REQUEST) |
| const link = process.env.TEST_BASEURL |
| const routes = JSON.parse(process.env.TEST_ROUTES) |
| const number = PR.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: Pull Request Labeler |
| if: ${{ failure() }} |
| uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 |
| with: |
| actions: 'add-labels' |
| token: ${{ secrets.GITHUB_TOKEN }} |
| issue-number: ${{ steps.source-run-info.outputs.pullRequestNumber }} |
| labels: 'auto: DO NOT merge' |
|
|
| - name: Print Docker container logs |
| if: ${{ always() }} |
| run: docker logs rsshub || true |
|
|
| fail-build: |
| name: Fail build |
| runs-on: ubuntu-slim |
| permissions: |
| pull-requests: write |
| if: ${{ github.event.workflow_run.conclusion == 'failure' }} |
| steps: |
| |
| - name: Search the PR that triggered this workflow |
| id: source-run-info |
| env: |
| |
| GH_TOKEN: ${{ github.token }} |
| |
| PR_TARGET_REPO: ${{ github.repository }} |
| |
| PR_BRANCH: |- |
| ${{ |
| (github.event.workflow_run.head_repository.owner.login != github.event.workflow_run.repository.owner.login) |
| && format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch) |
| || github.event.workflow_run.head_branch |
| }} |
| |
| run: | |
| gh pr view --repo "${PR_TARGET_REPO}" "${PR_BRANCH}" \ |
| --json 'number' --jq '"number=\(.number)"' \ |
| >> "${GITHUB_OUTPUT}" |
| |
| - name: Pull Request Labeler |
| uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 |
| with: |
| actions: 'add-labels' |
| token: ${{ secrets.GITHUB_TOKEN }} |
| issue-number: ${{ steps.source-run-info.outputs.number }} |
| labels: 'auto: DO NOT merge' |
|
|