Skip to content

ci: use claude code to fix upgrade issues #3787

ci: use claude code to fix upgrade issues

ci: use claude code to fix upgrade issues #3787

Workflow file for this run

name: CI
permissions:
# Doing it explicitly because the default permission only includes metadata: read.
contents: read
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, labeled]
paths-ignore:
- '**/*.md'
push:
branches:
- main
paths-ignore:
- '**/*.md'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.ref_name != 'main' }}
defaults:
run:
shell: bash
jobs:
download-previous-rolldown-binaries:
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/download-rolldown-binaries
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
test:
name: Test
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: windows-latest
target: x86_64-pc-windows-msvc
- os: namespace-profile-mac-default
target: aarch64-apple-darwin
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/clone
- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.0
with:
save-cache: ${{ github.ref_name == 'main' }}
cache-key: test
- run: rustup target add x86_64-unknown-linux-musl
if: ${{ matrix.os == 'ubuntu-latest' }}
- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "ssh://git@github.com/"
- run: cargo check --all-targets --all-features
env:
RUSTFLAGS: '-D warnings --cfg tokio_unstable' # also update .cargo/config.toml
- run: cargo test -p vite_command -p vite_install -p vite_migration
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/clone
- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "ssh://git@github.com/"
- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.0
with:
save-cache: ${{ github.ref_name == 'main' }}
cache-key: lint
tools: cargo-shear
components: clippy rust-docs rustfmt
- run: |
cargo shear
cargo fmt --check
# cargo clippy --all-targets --all-features -- -D warnings
# RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --document-private-items
- uses: crate-ci/typos@85f62a8a84f939ae994ab3763f01a0296d61a7ee # v1.36.2
with:
files: .
- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4
- name: Deduplicate dependencies
run: pnpm dedupe --check
run:
name: Run task
runs-on: ubuntu-latest
needs:
- download-previous-rolldown-binaries
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/clone
- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "ssh://git@github.com/"
- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.0
with:
save-cache: ${{ github.ref_name == 'main' }}
cache-key: run
- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rolldown-binaries
path: ./rolldown/packages/rolldown/src
merge-multiple: true
- name: Build with upstream
uses: ./.github/actions/build-upstream
with:
target: x86_64-unknown-linux-gnu
- name: Build CLI
run: pnpm bootstrap-cli:ci
- name: Print help for built-in commands
run: |
which vite
vite -h
vite run -h
vite lint -h
vite test -h
vite build -h
vite fmt -h
cli-e2e-test:
name: CLI E2E test
needs:
- download-previous-rolldown-binaries
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
- os: namespace-profile-mac-default
- os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/clone
- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "ssh://git@github.com/"
- run: |
brew install rustup
rustup install stable
echo "PATH=/opt/homebrew/opt/rustup/bin:$PATH" >> $GITHUB_ENV
if: ${{ matrix.os == 'namespace-profile-mac-default' }}
- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.0
with:
save-cache: ${{ github.ref_name == 'main' }}
cache-key: cli-e2e-test
- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rolldown-binaries
path: ./rolldown/packages/rolldown/src
merge-multiple: true
- name: Build with upstream
uses: ./.github/actions/build-upstream
with:
target: ${{ matrix.os == 'ubuntu-latest' && 'x86_64-unknown-linux-gnu' || matrix.os == 'windows-latest' && 'x86_64-pc-windows-msvc' || 'aarch64-apple-darwin' }}
- name: Check TypeScript types
if: ${{ matrix.os == 'ubuntu-latest' }}
run: pnpm tsgo
- name: Build CLI
run: |
pnpm bootstrap-cli:ci
which vite
vite --version
vite -h
- name: Run CLI fmt
run: vite fmt --check
- name: Run CLI lint
run: vite run lint
- name: Install Playwright browsers
run: pnpx playwright install chromium
- name: Create vite.cmd shim file for Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
printf '@echo off\nnode "%%~dp0vite" %%*\n' > packages/global/bin/vite.cmd
- name: Run CLI snapshot tests
run: |
RUST_BACKTRACE=1 pnpm test
git diff --exit-code
install-e2e-test:
name: vite install E2E test
needs:
- download-previous-rolldown-binaries
runs-on: ubuntu-latest
# Run if: not a PR, OR PR has 'test: install-e2e' label
if: >-
github.event_name != 'pull_request' ||
contains(github.event.pull_request.labels.*.name, 'test: install-e2e')
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/clone
- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "ssh://git@github.com/"
- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.0
with:
save-cache: ${{ github.ref_name == 'main' }}
cache-key: install-e2e-test
- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: rolldown-binaries
path: ./rolldown/packages/rolldown/src
merge-multiple: true
- name: Build with upstream
uses: ./.github/actions/build-upstream
with:
target: x86_64-unknown-linux-gnu
- name: Build CLI
run: pnpm bootstrap-cli:ci
- name: Run local CLI vite install
run: |
export PATH=$PWD/node_modules/.bin:$PATH
vite -h
# Test vite install on various repositories with different package managers
repos=(
# pnpm workspace
"pnpm/pnpm:pnpm"
"vitejs/vite:vite"
# yarn workspace
"napi-rs/napi-rs:napi-rs"
"toeverything/AFFiNE:AFFiNE"
# npm workspace
"npm/cli:npm"
"redhat-developer/vscode-extension-tester:vscode-extension-tester"
)
for repo_info in "${repos[@]}"; do
IFS=':' read -r repo dir_name <<< "$repo_info"
echo "Testing vite install on $repo…"
# remove the directory if it exists
if [ -d "$RUNNER_TEMP/$dir_name" ]; then
rm -rf "$RUNNER_TEMP/$dir_name"
fi
git clone --depth 1 "https://github.com/$repo.git" "$RUNNER_TEMP/$dir_name"
cd "$RUNNER_TEMP/$dir_name"
vite install
# run again to show install cache increase by time
time vite install
echo "✓ Successfully installed dependencies for $repo"
echo ""
done
done:
runs-on: ubuntu-latest
needs:
- test
- lint
- run
- cli-e2e-test
steps:
- run: exit 1
# Thank you, next https://github.com/vercel/next.js/blob/canary/.github/workflows/build_and_test.yml#L379
if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}