Skip to content

vite-ecosystem-ci-rolldown #111

vite-ecosystem-ci-rolldown

vite-ecosystem-ci-rolldown #111

# integration tests for the vite ecosystem against rolldown - scheduled digest
# vite stays on main and rolldown is overridden with its pkg.pr.new preview,
# results are posted to the rolldown discord channel
name: vite-ecosystem-ci-rolldown
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
# configure corepack to be strict but not download newer versions or change anything
COREPACK_DEFAULT_TO_LATEST: 0
COREPACK_ENABLE_AUTO_PIN: 0
COREPACK_ENABLE_STRICT: 1
# see https://turbo.build/repo/docs/telemetry#how-do-i-opt-out
TURBO_TELEMETRY_DISABLED: 1
DO_NOT_TRACK: 1
on:
schedule:
- cron: "0 4 * * 1-5" # monday to friday 4AM UTC
workflow_dispatch:
inputs:
rolldownRef:
description: "rolldown ref to test from pkg.pr.new (`main` = latest)"
required: false
type: string
default: main
sendDiscordReport:
description: "send results to discord"
type: boolean
jobs:
test-ecosystem:
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
matrix:
suite:
- analogjs
- astro
# - histoire # disabled temporarily
# - hydrogen # disabled until they complete they migration back to Vite
# - iles # disabled until its CI is fixed
# - ladle # disabled until its CI is fixed
- laravel
- marko
- module-federation
- nuxt
# - one # disabled until we figured out how to support bun
# - nx # disabled temporarily
- quasar
- qwik
# - rakkas # disabled temporarily
- react-router
# - redwoodjs # disabled temporarily
- storybook
- sveltekit
- tanstack-start
- unocss
- vike
- vite-environment-examples
- vite-plugin-pwa
- vite-plugin-react
- vite-plugin-svelte
- vite-plugin-vue
- vite-plugin-cloudflare
- vite-plugin-rsc
- vite-setup-catalogue
- vitepress
- vitest
- vuepress
- waku
fail-fast: false
permissions:
contents: read # to clone the repo
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.15.0
id: setup-node
- run: corepack enable
- run: pnpm --version
- run: pnpm i --frozen-lockfile
# Resolve the rolldown ref to a concrete commit up front, so the tested sha
# and the reported sha stay the same even if main moves during the run.
- id: resolve-rolldown
env:
ROLLDOWN_REF: ${{ inputs.rolldownRef || 'main' }}
run: |
key=$(curl -fsSIL "https://pkg.pr.new/rolldown@$ROLLDOWN_REF" | tr -d '\r' | awk -F': ' 'tolower($1) == "x-commit-key" { print $2 }')
sha="${key##*:}"
if [ -z "$sha" ]; then echo "could not resolve rolldown ref: $ROLLDOWN_REF"; exit 1; fi
echo "sha=$sha" >> "$GITHUB_OUTPUT"
echo "resolved rolldown@$ROLLDOWN_REF -> $sha"
- run: >-
node ecosystem-ci.ts
--rolldown-ref "$ROLLDOWN_REF"
"$SUITE"
id: ecosystem-ci-run
env:
ROLLDOWN_REF: ${{ steps.resolve-rolldown.outputs.sha }}
SUITE: ${{ matrix.suite }}
- if: always() && (inputs.sendDiscordReport || github.event_name != 'workflow_dispatch')
run: node discord-webhook.ts
env:
WORKFLOW_NAME: rolldown
REF_TYPE: branch
REF: main
REPO: vitejs/vite
ROLLDOWN_REF: ${{ steps.resolve-rolldown.outputs.sha }}
SUITE: ${{ matrix.suite }}
STATUS: ${{ job.status }}
DISCORD_WEBHOOK_URL: ${{ secrets.ROLLDOWN_DISCORD_WEBHOOK_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}