1
0
Fork 0
docsearch/.circleci/config.yml
2026-08-06 15:42:01 -04:00

235 lines
7.3 KiB
YAML

version: 2.1
aliases:
- &install_bun
name: Install Bun
command: |
npm install --global --prefix "$HOME/.local" bun@1.3.10
echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$BASH_ENV"
- &restore_bun_cache
name: Restore Bun cache
keys:
- bun-packages-{{ checksum "bun.lock" }}
- &save_bun_cache
name: Save Bun cache
key: bun-packages-{{ checksum "bun.lock" }}
paths:
- ~/.bun/install/cache
- &run_bun_install
name: Install dependencies
command: bun install --frozen-lockfile
- &restore_dist_folders
name: Restore dist folders
command: |
set -exu
mkdir -p packages/docsearch-react/dist
mkdir -p packages/docsearch-js/dist
mkdir -p packages/docsearch-css/dist
mkdir -p packages/docsearch-core/dist
mkdir -p packages/docsearch-modal/dist
mkdir -p packages/docsearch-sidepanel/dist
mkdir -p packages/docsearch-sidepanel-js/dist
mkdir -p packages/docsearch-cli/dist
mkdir -p adapters/docusaurus-theme-search-algolia/lib
cp -R /tmp/workspace/packages/docsearch-react/dist packages/docsearch-react
cp -R /tmp/workspace/packages/docsearch-js/dist packages/docsearch-js
cp -R /tmp/workspace/packages/docsearch-css/dist packages/docsearch-css
cp -R /tmp/workspace/packages/docsearch-core/dist packages/docsearch-core
cp -R /tmp/workspace/packages/docsearch-modal/dist packages/docsearch-modal
cp -R /tmp/workspace/packages/docsearch-sidepanel/dist packages/docsearch-sidepanel
cp -R /tmp/workspace/packages/docsearch-sidepanel-js/dist packages/docsearch-sidepanel-js
cp -R /tmp/workspace/packages/docsearch-cli/dist packages/docsearch-cli
cp -R /tmp/workspace/adapters/docusaurus-theme-search-algolia/lib adapters/docusaurus-theme-search-algolia
defaults: &defaults
working_directory: ~/docsearch
docker:
- image: cimg/node:24.13.1
playwright: &playwright
working_directory: ~/docsearch
docker:
- image: mcr.microsoft.com/playwright:v1.49.1-noble
environment:
## this enables colors in the output
TERM: xterm
references:
workspace_root: &workspace_root /tmp/workspace
attach_workspace: &attach_workspace
attach_workspace:
at: *workspace_root
jobs:
build:
<<: *defaults
steps:
- checkout
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run:
name: Build and Size
command: |
bun run build
bun run --filter @docsearch/cli test:pack
- run:
name: Move dist folders to workspace
command: |
set -exu
mkdir -p /tmp/workspace/packages/docsearch-react/dist
mkdir -p /tmp/workspace/packages/docsearch-js/dist
mkdir -p /tmp/workspace/packages/docsearch-css/dist
mkdir -p /tmp/workspace/packages/docsearch-core/dist
mkdir -p /tmp/workspace/packages/docsearch-modal/dist
mkdir -p /tmp/workspace/packages/docsearch-sidepanel/dist
mkdir -p /tmp/workspace/packages/docsearch-sidepanel-js/dist
mkdir -p /tmp/workspace/packages/docsearch-cli/dist
mkdir -p /tmp/workspace/adapters/docusaurus-theme-search-algolia/lib
cp -R packages/docsearch-react/dist /tmp/workspace/packages/docsearch-react
cp -R packages/docsearch-js/dist /tmp/workspace/packages/docsearch-js
cp -R packages/docsearch-css/dist /tmp/workspace/packages/docsearch-css
cp -R packages/docsearch-core/dist /tmp/workspace/packages/docsearch-core
cp -R packages/docsearch-modal/dist /tmp/workspace/packages/docsearch-modal
cp -R packages/docsearch-sidepanel/dist /tmp/workspace/packages/docsearch-sidepanel
cp -R packages/docsearch-sidepanel-js/dist /tmp/workspace/packages/docsearch-sidepanel-js
cp -R packages/docsearch-cli/dist /tmp/workspace/packages/docsearch-cli
cp -R adapters/docusaurus-theme-search-algolia/lib /tmp/workspace/adapters/docusaurus-theme-search-algolia
- persist_to_workspace:
root: *workspace_root
paths:
- packages
- adapters
test_lint:
<<: *defaults
steps:
- checkout
- *attach_workspace
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run: *restore_dist_folders
- run:
name: Linting
command: |
bun run lint --quiet --format=stylish
bun run lint:css
test_types:
<<: *defaults
steps:
- checkout
- *attach_workspace
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run: *restore_dist_folders
- run:
name: Type checking
command: bun run test:types
test_size:
<<: *defaults
steps:
- checkout
- *attach_workspace
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run: *restore_dist_folders
- run:
name: Size checking
command: bun run test:size
test_unit:
<<: *defaults
steps:
- checkout
- *attach_workspace
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run: *restore_dist_folders
- run:
name: Unit tests
command: bun run test
release:
working_directory: ~/docsearch
docker:
- image: cimg/node:24.16
steps:
- checkout
- *attach_workspace
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run: *restore_dist_folders
- run:
name: Setup git user
command: |
git config --global user.email "accounts+algolia-api-client-bot@algolia.com"
git config --global user.name "algolia-bot"
- run:
name: Release if needed
command: |
export NPM_ID_TOKEN="$(circleci run oidc get --claims '{"aud": "npm:registry.npmjs.org"}')"
bun run release
test_playwright:
<<: *playwright
steps:
- checkout
- *attach_workspace
- run: *install_bun
- restore_cache: *restore_bun_cache
- run: *run_bun_install
- save_cache: *save_bun_cache
- run: *restore_dist_folders
- run:
name: Playwright E2E tests
command: bun run pw:run
- store_artifacts:
path: playwright-report
destination: playwright-report
- store_artifacts:
path: test-results
destination: test-results
workflows:
version: 2
ci:
jobs:
- build
- test_lint:
requires:
- build
- test_types:
requires:
- build
- test_size:
requires:
- build
- test_unit:
requires:
- build
- test_playwright:
requires:
- build
- release:
requires:
- build
filters:
branches:
only:
- main
- /v[0-9]+/