name: CI on: push: paths-ignore: - "docs/**" branches: - main pull_request: paths-ignore: - "docs/**" branches: - main jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node: [16] timeout-minutes: 10 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install - name: Build run: pnpm build - name: Cache dist uses: actions/cache@v3 with: path: packages/*/dist key: ${{ matrix.os }}-node-v${{ matrix.node }}-${{ github.sha }} lint: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node: [16] timeout-minutes: 10 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install - name: Lint run: pnpm lint typecheck: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node: [16] timeout-minutes: 10 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install - name: Build (stub) run: pnpm build:stub - name: Typecheck run: pnpm typecheck test-fixtures: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest] node: [16] timeout-minutes: 10 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install # https://github.com/vitejs/vite/blob/main/.github/workflows/ci.yml#L62 # Install playwright's binary under custom directory to cache - name: Set Playwright path if: runner.os != 'Windows' run: echo "PLAYWRIGHT_BROWSERS_PATH=$HOME/.cache/playwright-bin" >> $GITHUB_ENV - name: Set Playwright path (windows) if: runner.os == 'Windows' run: echo "PLAYWRIGHT_BROWSERS_PATH=$HOME\.cache\playwright-bin" >> $env:GITHUB_ENV - name: Cache Playwright's binary uses: actions/cache@v3 with: # Playwright removes unused browsers automatically # So does not need to add playwright version to key key: ${{ runner.os }}-playwright-bin-v1 path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }} - name: Install Playwright # does not need to explicitly set chromium after https://github.com/microsoft/playwright/issues/14862 is solved run: pnpm playwright install chromium - name: Build (stub) run: pnpm build:stub - name: Test (unit) run: pnpm test:unit - name: Test (fixtures) run: pnpm test:fixtures - name: Test (fixtures with dev) run: pnpm test:fixtures:dev env: NODE_OPTIONS: --max-old-space-size=8192 test-fixtures-webpack: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest] node: [16] timeout-minutes: 10 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install # https://github.com/vitejs/vite/blob/main/.github/workflows/ci.yml#L62 # Install playwright's binary under custom directory to cache - name: Set Playwright path (non-windows) if: runner.os != 'Windows' run: echo "PLAYWRIGHT_BROWSERS_PATH=$HOME/.cache/playwright-bin" >> $GITHUB_ENV - name: Set Playwright path (windows) if: runner.os == 'Windows' run: echo "PLAYWRIGHT_BROWSERS_PATH=$HOME\.cache\playwright-bin" >> $env:GITHUB_ENV - name: Cache Playwright's binary uses: actions/cache@v3 with: # Playwright removes unused browsers automatically # So does not need to add playwright version to key key: ${{ runner.os }}-playwright-bin-v1 path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }} - name: Install Playwright # does not need to explicitly set chromium after https://github.com/microsoft/playwright/issues/14862 is solved run: pnpm playwright install chromium - name: Build (stub) run: pnpm build:stub - name: Test (fixtures) run: pnpm test:fixtures:webpack test-types: needs: - build runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node: [16] timeout-minutes: 10 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install - name: Restore dist cache uses: actions/cache@v3 with: path: packages/*/dist key: ${{ matrix.os }}-node-v${{ matrix.node }}-${{ github.sha }} - name: Test (types) run: pnpm test:types build-release: 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-fixtures-webpack - test-types runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node: [16] timeout-minutes: 20 steps: - uses: actions/checkout@v3 - run: corepack enable - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: "pnpm" - name: Install dependencies run: pnpm install - name: Restore dist cache uses: actions/cache@v3 with: path: packages/*/dist key: ${{ matrix.os }}-node-v${{ matrix.node }}-${{ github.sha }} - name: Release Edge run: ./scripts/release-edge.sh env: NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN}}