ci: use claude code to fix upgrade issues #3787
Workflow file for this run
This file contains hidden or 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 | |
| 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')) }} |