Skip to content

feat: support incremental build when composite is true #1192

feat: support incremental build when composite is true

feat: support incremental build when composite is true #1192

Workflow file for this run

name: Test (Ubuntu)
# Controls when the action will run.
on:
# Triggers the workflow on pull request events but only for the main branch
pull_request:
branches: [main]
push:
branches: [main]
merge_group:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# ======== calculate changes ========
changes:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.changes.outputs.changed }}
strategy:
matrix:
node-version: [18]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Install Pnpm
run: corepack enable
- uses: dorny/paths-filter@v3
id: changes
with:
predicate-quantifier: 'every'
filters: |
changed:
- "!**/*.md"
- "!**/*.mdx"
- "!**/_meta.json"
- "!**/dictionary.txt"
# ======== ut ========
ut-ubuntu:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.changed == 'true' }}
strategy:
matrix:
node-version: [18, 20, 22]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Install Pnpm
run: corepack enable
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- name: Install Dependencies
run: pnpm install
- name: Unit Test
run: pnpm run test:unit
# ======== integration && e2e ========
integration-e2e-ubuntu:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.changed == 'true' }}
strategy:
matrix:
node-version: [18, 20, 22]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Install Pnpm
run: corepack enable
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- name: Install Dependencies
run: pnpm install && cd ./tests && npx playwright install
- name: Integration Test (Vitest)
run: pnpm run test:integration
- name: E2E Test (Playwright)
run: pnpm run test:e2e
# ======== benchmark ========
benchmark-ubuntu:
# Only Ubuntu 20.04 and 22.04 are supported at the moment.
# See https://github.com/CodSpeedHQ/action/blob/016456b513677f9d4a1c509c7f8a38d8dd55b2b0/.github/workflows/ci.yml#L19.
runs-on: ubuntu-22.04
needs: [integration-e2e-ubuntu]
strategy:
matrix:
node-version: [20]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Install Pnpm
run: corepack enable
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- name: Install Dependencies
run: pnpm install && cd ./tests && npx playwright install
# only run benchmark in Ubuntu
- name: Benchmarks (Vitest)
uses: CodSpeedHQ/action@v3
with:
run: pnpm run test:benchmark
# token retrieved from the CodSpeed app at the previous step
token: ${{ secrets.CODSPEED_TOKEN }}
# ======== exit ========
pr-check-required:
if: (!cancelled() && !failure())
needs: [ut-ubuntu, integration-e2e-ubuntu, benchmark-ubuntu]
runs-on: ubuntu-latest
name: Test passed or skipped
steps:
- run: echo "All tests passed or skipped."