name: Docs - Sync Algolia Search on: push: branches: - next paths: - 'docs/**' - '.github/actions/setup-node-pnpm-bun/action.yml' - '.github/workflows/docs-search-sync.yml' - 'mise.toml' - 'mise.lock' workflow_dispatch: permissions: contents: read jobs: sync-search: runs-on: ubuntu-latest # The Algolia admin key is stored as an environment secret, not a repo # secret. Declaring the environment is what exposes `secrets.*` (and any # env-scoped `vars.*`) to this job — without it the key resolves empty and # the sync silently skips. environment: Production defaults: run: working-directory: ./docs env: ALGOLIA_APP_ID: ${{ vars.ALGOLIA_APP_ID || '62HI9PQZ1L' }} ALGOLIA_ADMIN_API_KEY: ${{ secrets.ALGOLIA_ADMIN_API_KEY }} ALGOLIA_INDEX_NAME: ${{ vars.ALGOLIA_INDEX_NAME || 'docs_composio' }} steps: - name: Checkout repository uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Setup Node.js, pnpm, Bun uses: ./.github/actions/setup-node-pnpm-bun - name: Cache bun dependencies uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/.bun/install/cache key: ${{ runner.os }}-bun-${{ hashFiles('docs/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Install dependencies run: bun install - name: Validate search index generation run: bun run sync:search --dry-run - name: Sync Algolia search index if: env.ALGOLIA_APP_ID != '' && env.ALGOLIA_ADMIN_API_KEY != '' run: bun run sync:search - name: Skip sync without Algolia secrets if: env.ALGOLIA_APP_ID == '' || env.ALGOLIA_ADMIN_API_KEY == '' run: echo "Skipping Algolia sync because ALGOLIA_APP_ID or ALGOLIA_ADMIN_API_KEY is not configured."