Version Packages #182
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| # Nightly run on main so we notice breakage from upstream changes (Redis, model | |
| # providers, unpinned deps) even on days without commits. | |
| schedule: | |
| - cron: "0 0 * * *" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: lint · typecheck · test · build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| # pnpm 11 (pinned via packageManager) requires Node >=22.13; use 24 LTS. | |
| node-version: 24 | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Lint (eslint + prettier) | |
| run: pnpm lint | |
| - name: Typecheck | |
| run: pnpm typecheck | |
| # Read-only: the telemetry VERSION constants are written by `pnpm ci:version` at release time, | |
| # so this only fails if a version was bumped without it. | |
| - name: Check version constants | |
| run: node scripts/sync-version.mjs --check | |
| - name: Build packages | |
| run: pnpm build | |
| - name: Test | |
| # Tests run against a real Upstash Redis. Add UPSTASH_REDIS_REST_URL / | |
| # UPSTASH_REDIS_REST_TOKEN as repo secrets to enable them; without secrets the | |
| # Redis-backed suites skip themselves and CI stays green. | |
| run: pnpm test | |
| env: | |
| UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }} | |
| UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }} | |
| - name: Build example apps | |
| run: pnpm -r --filter "./examples/*" build | |
| - name: E2E eval (eve memory slots, mocked model) | |
| # Boots the eve demo's agent with a scripted mockModel (no model provider, no | |
| # OPENAI_API_KEY) and asserts both Upstash Redis memory integrations run at eve's real | |
| # memory lifecycle boundaries against real Redis: redisMemory() captures a turn and recalls | |
| # it, and fileMemory({ backend: redisDocuments() }) saves and recalls its document. | |
| working-directory: examples/eve-demo | |
| env: | |
| UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }} | |
| UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }} | |
| AGENTKIT_MOCK_MODEL: "1" | |
| run: | | |
| if [ -z "$UPSTASH_REDIS_REST_URL" ]; then | |
| echo "No Redis secrets available — skipping the e2e eval." | |
| exit 0 | |
| fi | |
| npx eve eval | |
| - name: E2E eval (eve extension, mocked model) | |
| # Boots the extension demo's agent with a scripted mockModel (no model provider, | |
| # no OPENAI_API_KEY) and asserts the extension's tools execute against real Redis | |
| # end to end. Reuses the same Redis secrets as the tests; skipped when they are | |
| # absent (e.g. fork PRs, which don't receive secrets). | |
| working-directory: examples/eve-extension-demo | |
| env: | |
| UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }} | |
| UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }} | |
| AGENTKIT_MOCK_MODEL: "1" | |
| run: | | |
| if [ -z "$UPSTASH_REDIS_REST_URL" ]; then | |
| echo "No Redis secrets available — skipping the e2e eval." | |
| exit 0 | |
| fi | |
| npx eve eval |