Wire Jumbo (lomi. Pos) into monorepo CI, audit, and docs #364
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: lomi · ci · monorepo | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| detect-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| api: ${{ steps.changes.outputs.api }} | |
| docs: ${{ steps.changes.outputs.docs }} | |
| cli: ${{ steps.changes.outputs.cli }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| filters: | | |
| api: | |
| - 'apps/api' | |
| - 'apps/docs/lib/scripts/manual-api/**' | |
| - 'apps/docs/openapi.json' | |
| - 'apps/docs/agent-openapi.json' | |
| docs: | |
| - 'apps/docs/**' | |
| cli: | |
| - 'apps/cli/**' | |
| build-api: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.api == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./apps/api | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Checkout private API + dashboard submodules | |
| working-directory: . | |
| env: | |
| TOKEN: ${{ secrets.REPO_CHECKOUT_PAT }} | |
| run: bash .github/scripts/init-submodules.sh apps/api apps/dashboard | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: pnpm | |
| cache-dependency-path: apps/api/pnpm-lock.yaml | |
| - name: Install API dependencies | |
| working-directory: . | |
| run: node tooling/scripts/install-app-with-packages.mjs apps/api | |
| - run: pnpm run build | |
| - run: pnpm test | |
| - name: Export OpenAPI | |
| run: | | |
| pnpm run openapi:export | |
| pnpm run openapi:export:agent | |
| - name: Verify committed OpenAPI specs | |
| working-directory: . | |
| run: | | |
| node .github/scripts/assert-json-equivalent.mjs apps/docs/openapi.json apps/docs/agent-openapi.json | |
| node apps/docs/lib/scripts/verify-agent-contracts.mjs | |
| build-docs: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.docs == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./apps/docs | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: "pnpm" | |
| cache-dependency-path: "./apps/docs/pnpm-lock.yaml" | |
| - name: Install docs dependencies | |
| working-directory: . | |
| run: node tooling/scripts/install-app-with-packages.mjs apps/docs | |
| - name: Install MCP dependencies | |
| working-directory: . | |
| run: node tooling/scripts/install-app-with-packages.mjs apps/mcp | |
| - run: pnpm lint | |
| - run: pnpm docs:drift | |
| - run: pnpm build | |
| build-cli: | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.cli == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./apps/cli | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo test -- --test-threads=1 | |
| - run: cargo build --release |