Skip to content

feat: run changed testsuites in PR ci #662

feat: run changed testsuites in PR ci

feat: run changed testsuites in PR ci #662

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: corepack enable
- run: pnpm --version
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
cache-dependency-path: "**/pnpm-lock.yaml"
- name: install
run: pnpm install --frozen-lockfile --prefer-offline
# - name: format
# run: pnpm format
# - name: lint
# run: pnpm run lint
# - name: audit
# if: (${{ success() }} || ${{ failure() }})
# run: pnpm audit
# - name: test self
# if: (${{ success() }} || ${{ failure() }})
# run: pnpm test:self
find_changed_testfiles:
if: (${{ github.event.number }})
runs-on: ubuntu-latest
outputs:
changed: ${{steps.list.outputs.changed_suites}}
steps:
- uses: actions/checkout@v3
- id: list
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.number }}
run: |
echo "changed_suites=$(\
gh pr diff $PR_NUMBER --name-only --color never \
| grep '^tests/[^_].*\.ts' \
| xargs -d '\n' ls -1df 2>/dev/null \
| cut -d '/' -f 2 | cut -d '.' -f 1 \
| jq -cnR '[inputs]' \
)" >> $GITHUB_OUTPUT
run_changed_tests:
if: (${{ github.event.number }} && ${{needs.find_changed_testfiles.outputs.changed}} )
runs-on: ubuntu-latest
needs: find_changed_testfiles
timeout-minutes: 30
strategy:
matrix:
suite: ${{fromJson(needs.find_changed_testfiles.outputs.changed)}}
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: corepack enable
- run: pnpm --version
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
cache-dependency-path: "**/pnpm-lock.yaml"
- uses: denoland/setup-deno@v1
with:
deno-version: v1.x
id: setup-deno
continue-on-error: true
- run: pnpm i --frozen-lockfile
- run: pnpm tsx ecosystem-ci.ts ${{ matrix.suite }}