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]+/