Skip to content

Wire Jumbo (lomi. Pos) into monorepo CI, audit, and docs #73

Wire Jumbo (lomi. Pos) into monorepo CI, audit, and docs

Wire Jumbo (lomi. Pos) into monorepo CI, audit, and docs #73

Workflow file for this run

name: lomi · parity · product surface
on:
push:
branches: [main, develop]
paths:
- 'apps/api/**'
- 'apps/docs/**'
- 'apps/website/**'
- 'apps/mcp/**'
- '.github/workflows/app-parity.yml'
pull_request:
branches: [main]
paths:
- 'apps/api/**'
- 'apps/docs/**'
- 'apps/website/**'
- 'apps/mcp/**'
- '.github/workflows/app-parity.yml'
schedule:
- cron: '0 6 * * 1'
workflow_dispatch:
permissions:
contents: read
jobs:
parity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
submodules: recursive
token: ${{ secrets.REPO_CHECKOUT_PAT }}
- name: Ensure private API submodule is present
env:
TOKEN: ${{ secrets.REPO_CHECKOUT_PAT }}
run: bash .github/scripts/init-submodules.sh apps/api
- 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
apps/docs/pnpm-lock.yaml
apps/mcp/pnpm-lock.yaml
- name: Install API dependencies
run: node tooling/scripts/install-app-with-packages.mjs apps/api
- name: Export OpenAPI
working-directory: apps/api
run: |
pnpm run openapi:export
pnpm run openapi:export:agent
- name: Verify committed OpenAPI specs
run: node .github/scripts/assert-json-equivalent.mjs apps/docs/openapi.json apps/docs/agent-openapi.json
- name: Sync website OpenAPI mirrors
working-directory: apps/website
run: node scripts/build/sync-openapi.mjs
- name: Assert website OpenAPI mirrors match docs
run: |
node .github/scripts/assert-json-equivalent.mjs --same \
apps/docs/openapi.json apps/website/public/openapi.json \
apps/docs/agent-openapi.json apps/website/public/agent-openapi.json || (
echo "Website public OpenAPI is out of sync with apps/docs. Run sync-openapi and commit apps/website/public/*.json"
exit 1
)
- name: Install docs dependencies
run: node tooling/scripts/install-app-with-packages.mjs apps/docs
- name: Install MCP dependencies
run: node tooling/scripts/install-app-with-packages.mjs apps/mcp
- name: Run parity worker
working-directory: apps/docs
env:
PARITY_LIVE_PROBE: ${{ github.event_name == 'schedule' && '1' || '0' }}
run: pnpm parity
- name: Notify Slack on failure (scheduled)
if: failure() && github.event_name == 'schedule'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
run: |
if [ -z "${SLACK_WEBHOOK_URL:-}" ]; then
echo "SLACK_WEBHOOK_URL not set; skipping notification"
exit 0
fi
curl -sS -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-type: application/json' \
--data "{\"text\":\"Product surface parity worker failed (scheduled). See ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}\"}"