Merge remote-tracking branch 'upstream/3.x' into 3.x #101
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ci | |
on: | |
push: | |
paths-ignore: | |
- "docs/**" | |
- "*.md" | |
branches: | |
- main | |
- 3.x | |
pull_request: | |
paths-ignore: | |
- "docs/**" | |
- "*.md" | |
branches: | |
- main | |
- 3.x | |
- "!v[0-9]*" | |
# 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 | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Build (stub) | |
run: pnpm dev:prepare | |
- name: Typecheck | |
run: pnpm typecheck | |
- name: Build | |
run: pnpm build | |
- name: Cache dist | |
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
with: | |
retention-days: 3 | |
name: dist | |
path: packages/*/dist | |
codeql: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
strategy: | |
matrix: | |
language: ['javascript-typescript', 'actions'] | |
permissions: | |
actions: read | |
contents: read | |
security-events: write | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 | |
with: | |
config: | | |
paths: | |
- 'packages/*/src/**' | |
- 'packages/nuxt/bin/**' | |
- 'packages/schema/schema/**' | |
paths-ignore: | |
- 'test/**' | |
- '**/*.spec.ts' | |
- '**/*.test.ts' | |
- '**/__snapshots__/**' | |
# codeql bug: #L20C9:9: A parse error occurred: `Unexpected token`. | |
- 'packages/vite/src/runtime/vite-node.mjs' | |
languages: ${{ matrix.language }} | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 | |
with: | |
category: "/language:${{ matrix.language }}" | |
typecheck: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
module: ["bundler", "node"] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Restore dist cache | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: dist | |
path: packages | |
- name: Test (types) | |
run: pnpm test:types | |
env: | |
MODULE_RESOLUTION: ${{ matrix.module }} | |
- name: Typecheck (docs) | |
run: pnpm typecheck:docs | |
lint: | |
# autofix workflow will be triggered instead for PRs | |
if: github.event_name == 'push' | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Build (stub) | |
run: pnpm dev:prepare | |
- name: Lint | |
run: pnpm lint | |
- name: Check built types | |
run: pnpm test:attw | |
test-unit: | |
# autofix workflow will be triggered instead for PRs | |
if: github.event_name == 'push' | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
needs: | |
- build | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Build (stub) | |
run: pnpm dev:prepare | |
- name: Test (unit) | |
run: pnpm test:unit | |
- name: Test (runtime unit) | |
run: pnpm test:runtime | |
test-size: | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Restore dist cache | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: dist | |
path: packages | |
- name: Check bundle size | |
run: pnpm vitest run bundle | |
test-benchmark: | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Restore dist cache | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: dist | |
path: packages | |
- name: Run benchmarks | |
uses: CodSpeedHQ/action@513a19673a831f139e8717bf45ead67e47f00044 # v3.2.0 | |
with: | |
run: pnpm vitest bench | |
token: ${{ secrets.CODSPEED_TOKEN }} | |
test-fixtures: | |
runs-on: ${{ matrix.os }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
env: ["dev", "built"] | |
builder: ["vite", "rspack", "webpack"] | |
context: ["async", "default"] | |
manifest: ["manifest-on", "manifest-off"] | |
payload: ["json", "js"] | |
node: [18] | |
exclude: | |
- builder: "webpack" | |
payload: "js" | |
- builder: "rspack" | |
payload: "js" | |
- manifest: "manifest-off" | |
payload: "js" | |
- context: "default" | |
payload: "js" | |
- os: windows-latest | |
payload: "js" | |
- env: "dev" | |
builder: "rspack" | |
- manifest: "manifest-off" | |
builder: "rspack" | |
- env: "dev" | |
builder: "webpack" | |
- manifest: "manifest-off" | |
builder: "webpack" | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Install Playwright | |
run: pnpm playwright-core install chromium | |
- name: Restore dist cache | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: dist | |
path: packages | |
- name: Test (fixtures) | |
run: pnpm test:fixtures | |
env: | |
TEST_ENV: ${{ matrix.env }} | |
TEST_BUILDER: ${{ matrix.builder }} | |
TEST_MANIFEST: ${{ matrix.manifest }} | |
TEST_CONTEXT: ${{ matrix.context }} | |
TEST_PAYLOAD: ${{ matrix.payload }} | |
SKIP_BUNDLE_SIZE: true | |
- uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1 | |
if: github.event_name != 'push' && matrix.env == 'built' && matrix.builder == 'vite' && matrix.context == 'default' && matrix.os == 'ubuntu-latest' && matrix.manifest == 'manifest-on' | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
release-nightly: | |
concurrency: | |
group: release | |
permissions: | |
id-token: write | |
if: | | |
github.event_name == 'push' && | |
github.repository_owner == 'nuxt' && | |
!contains(github.event.head_commit.message, '[skip-release]') && | |
!startsWith(github.event.head_commit.message, 'docs') | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Restore dist cache | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: dist | |
path: packages | |
- name: Release Edge | |
run: ./scripts/release-edge.sh ${{ github.ref == 'refs/heads/main' && 'latest' || '3x' }} | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} | |
NPM_CONFIG_PROVENANCE: true | |
release-pr: | |
if: github.repository_owner == 'nuxt' && github.event_name != 'push' | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 | |
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: lts/* | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Restore dist cache | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: dist | |
path: packages | |
- run: pnpm pkg-pr-new publish --compact './packages/kit' './packages/nuxt' './packages/rspack' './packages/schema' './packages/vite' './packages/webpack' |