Skip to content

ci: rework test matrix #1696

ci: rework test matrix

ci: rework test matrix #1696

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
# https://github.com/vitejs/vite/blob/main/.github/workflows/ci.yml
env:
# 7 GiB by default on GitHub, setting to 6 GiB
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
NODE_OPTIONS: --max-old-space-size=6144
# Remove default permissions of GITHUB_TOKEN for security
# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: ${{ github.event_name != 'push' }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: corepack enable
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Stub
run: pnpm dev:prepare
- name: Build
run: pnpm build
- name: Cache dist
uses: actions/cache@v3
with:
path: packages/*/dist
key: ubuntu-latest-node-v18-${{ github.sha }}
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: corepack enable
- uses: actions/setup-node@v3
with:
node-version: 20
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Stub
run: pnpm dev:prepare
- name: Lint
run: pnpm lint
test-fixtures:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
env: ['dev', 'built']
builder: ['vite', 'webpack']
# transpile: ['transpile']
compatibility: ['compatibility']
resolve: ['resolve']
include:
- transpile: 'no-transpile'
builder: 'webpack'
env: 'built'
- transpile: 'transpile'
builder: 'webpack'
env: 'built'
steps:
- uses: actions/checkout@v4
- run: corepack enable
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Test (fixtures)
run: pnpm test:fixtures
env:
TEST_ENV: ${{ matrix.env }}
TEST_BUILDER: ${{ matrix.builder }}
TEST_TRANSPILE: ${{ matrix.transpile || 'transpile' }}
TEST_COMPATIBILITY: ${{ matrix.compatibility }}
TEST_RESOLVE: ${{ matrix.resolve }}
test-unit:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- run: corepack enable
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Test (Unit)
run: pnpm test:unit
build-release:
permissions:
id-token: write
if: |
github.event_name == 'push' &&
!contains(github.event.head_commit.message, '[skip-release]') &&
!contains(github.event.head_commit.message, 'chore') &&
!contains(github.event.head_commit.message, 'docs')
needs:
- lint
- build
- test-fixtures
- test-unit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: corepack enable
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Restore dist cache
uses: actions/cache@v3
with:
path: packages/*/dist
key: ubuntu-latest-node-v18-${{ github.sha }}
- name: Release Edge
run: ./scripts/release-edge.sh
env:
NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN}}
NPM_CONFIG_PROVENANCE: true