Skip to content

🎨 Palette: Search View Focus Management #1552

🎨 Palette: Search View Focus Management

🎨 Palette: Search View Focus Management #1552

Workflow file for this run

name: CI
on:
push:
branches: ['master']
pull_request:
branches: ['master']
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
lint:
runs-on: ubuntu-24.04
timeout-minutes: 5
strategy:
matrix:
project: [language-server, vscode-extension]
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Bun dependencies
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ matrix.project }}-${{ hashFiles(format('{0}/bun.lock', matrix.project)) }}
restore-keys: |
${{ runner.os }}-bun-${{ matrix.project }}-
- name: Install ripgrep dependency fallback
working-directory: language-server
run: bun install --no-save @vscode/ripgrep
- name: Install Dependencies
working-directory: ${{ matrix.project }}
run: bun install --frozen-lockfile
- name: Lint
working-directory: ${{ matrix.project }}
run: bun run lint
test-language-server:
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Bun dependencies
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-ls-${{ hashFiles('language-server/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-ls-
- name: Install ripgrep dependency fallback
working-directory: language-server
run: bun install --no-save @vscode/ripgrep
- name: Install Dependencies
working-directory: language-server
run: bun install --frozen-lockfile
- name: Run Language Server Tests
working-directory: language-server
run: |
bun run build
bun run test
- name: Upload Language Server Artifact
uses: actions/upload-artifact@v4
with:
name: language-server-dist
path: language-server/dist
retention-days: 1
test-vscode-extension:
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cache apt packages
uses: actions/cache@v4
with:
path: /var/cache/apt/archives
key: ${{ runner.os }}-apt-vsce-${{ hashFiles('.github/docker/ci.Dockerfile') }}
restore-keys: |
${{ runner.os }}-apt-vsce-
- name: Install system dependencies for VS Code headless
run: |
sudo apt-get update -yq
sudo apt-get install -yq --no-install-recommends \
xvfb libasound2t64 libatk1.0-0t64 libgbm1 libgtk-3-0t64 \
libnss3 libxkbfile1 libxss1 unzip
sudo apt-get clean
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Bun dependencies
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-vscode-${{ hashFiles('vscode-extension/bun.lock', 'language-server/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-vscode-
- name: Install ripgrep dependency fallback
working-directory: language-server
run: bun install --no-save @vscode/ripgrep
- name: Install Dependencies
run: |
cd language-server && bun install --frozen-lockfile
cd ../vscode-extension && bun install --frozen-lockfile
- name: Build Language Server
working-directory: language-server
run: bun run build
- name: Get VS Code test version
id: vs-test-version
working-directory: vscode-extension
run: echo "version=$(node -e "const p=JSON.parse(require('fs').readFileSync('package.json','utf8')); console.log(p.devDependencies['@vscode/test-electron'] || p.dependencies['@vscode/test-electron'])")" >> $GITHUB_OUTPUT
- name: Cache VS Code Binary
uses: actions/cache@v4
with:
path: vscode-extension/.vscode-test
key: ${{ runner.os }}-vscode-${{ steps.vs-test-version.outputs.version }}
restore-keys: |
${{ runner.os }}-vscode-
- name: Type Check
working-directory: vscode-extension
run: bun run typecheck
- name: Run VS Code Extension Tests
working-directory: vscode-extension
run: |
bun run esbuild
bun run scripts/copy-artifacts.ts
bun run scripts/transpile-tests.ts
xvfb-run -a node ./out/vscode-extension/src/test/runTest.js
benchmarks:
runs-on: ubuntu-24.04
timeout-minutes: 20
if: |
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
github.event_name == 'workflow_dispatch'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cache apt packages
uses: actions/cache@v4
with:
path: /var/cache/apt/archives
key: ${{ runner.os }}-apt-bench-${{ hashFiles('.github/docker/ci.Dockerfile') }}
restore-keys: |
${{ runner.os }}-apt-bench-
- name: Install system dependencies for VS Code headless
run: |
sudo apt-get update -yq
sudo apt-get install -yq --no-install-recommends \
xvfb libasound2t64 libatk1.0-0t64 libgbm1 libgtk-3-0t64 \
libnss3 libxkbfile1 libxss1 unzip
sudo apt-get clean
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Bun dependencies
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-bench-${{ hashFiles('language-server/bun.lock', 'vscode-extension/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-bench-
- name: Install ripgrep dependency fallback
working-directory: language-server
run: bun install --no-save @vscode/ripgrep
- name: Install Dependencies
run: |
cd language-server && bun install --frozen-lockfile
cd ../vscode-extension && bun install --frozen-lockfile
- name: Get VS Code test version
id: vs-test-version
working-directory: vscode-extension
run: echo "version=$(node -e "const p=JSON.parse(require('fs').readFileSync('package.json','utf8')); console.log(p.devDependencies['@vscode/test-electron'] || p.dependencies['@vscode/test-electron'])")" >> $GITHUB_OUTPUT
- name: Cache VS Code Binary
uses: actions/cache@v4
with:
path: vscode-extension/.vscode-test
key: ${{ runner.os }}-vscode-bench-${{ steps.vs-test-version.outputs.version }}
restore-keys: |
${{ runner.os }}-vscode-bench-
- name: Run Benchmarks
run: |
chmod +x run_benchmarks.sh
./run_benchmarks.sh
- name: Upload Benchmark Report
if: always()
run: |
if [ -f benchmark_report.md ]; then
cat benchmark_report.md >> $GITHUB_STEP_SUMMARY
fi
- name: Upload Benchmark Artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: benchmark-report
path: benchmark_report.md