426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
147 lines
6.5 KiB
YAML
147 lines
6.5 KiB
YAML
# Nightly post-merge live sweep — the only place TEST_LANE=post-merge runs the
|
|
# whole workspace matrix. The PR/develop gates are deliberately deterministic
|
|
# and secret-free, which means every *.real.test.ts / *.live.test.ts suite is
|
|
# excluded there; without this lane, live-API coverage exists only as a plan.
|
|
# run-all-tests' post-merge lane prints the guarded-suite accounting (armed /
|
|
# missing-creds / opt-in / blocked, from packages/scripts/lib/real-live-suites.mjs)
|
|
# and hard-fails on manifest drift, so a missing secret is a loud named skip,
|
|
# never a silent green.
|
|
#
|
|
# Scheduled runs are gated on vars.ELIZA_DEVELOP_LIVE_ENABLED == 'true' so the
|
|
# lane can be armed org-side once runner capacity allows (#13309); manual
|
|
# dispatch always works. Local operators get the same sweep interactively via
|
|
# `bun run test:console` (packages/scripts/test-console).
|
|
name: Develop Live Sweep
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
filter:
|
|
description: "Optional --filter regex over task labels (default: whole matrix)"
|
|
type: string
|
|
default: ""
|
|
schedule:
|
|
# 04:30 UTC — clear of develop-exhaustive (06:00/18:00) and test.yml (09:17).
|
|
- cron: "30 4 * * *"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: develop-live
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
live-sweep:
|
|
name: Post-merge live matrix
|
|
if: github.event_name == 'workflow_dispatch' || vars.ELIZA_DEVELOP_LIVE_ENABLED == 'true'
|
|
runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }}
|
|
timeout-minutes: 480
|
|
env:
|
|
TEST_LANE: post-merge
|
|
ELIZA_LIVE_TEST: "1"
|
|
ELIZA_REAL_APIS: "1"
|
|
ELIZA_SKIP_ARTIFACT_SYNC: "1"
|
|
# Canonical post-merge secret set (packages/scripts/post-merge-secrets.txt).
|
|
# A missing secret self-skips its suites with a named accounting line.
|
|
CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY }}
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
|
|
GOOGLE_GENERATIVE_AI_API_KEY: ${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
|
|
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
|
|
ELEVENLABS_API_KEY: ${{ secrets.ELEVENLABS_API_KEY }}
|
|
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
|
|
DISCORD_TEST_GUILD_ID: ${{ secrets.DISCORD_TEST_GUILD_ID }}
|
|
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
|
|
SLACK_TEST_CHANNEL_ID: ${{ secrets.SLACK_TEST_CHANNEL_ID }}
|
|
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
|
TELEGRAM_TEST_CHAT_ID: ${{ secrets.TELEGRAM_TEST_CHAT_ID }}
|
|
WHATSAPP_TOKEN: ${{ secrets.WHATSAPP_TOKEN }}
|
|
WHATSAPP_PHONE_NUMBER_ID: ${{ secrets.WHATSAPP_PHONE_NUMBER_ID }}
|
|
X_BEARER_TOKEN: ${{ secrets.X_BEARER_TOKEN }}
|
|
# The ephemeral Actions token satisfies the read-only GitHub live suites.
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
|
|
CALENDLY_API_KEY: ${{ secrets.CALENDLY_API_KEY }}
|
|
CALENDLY_ACCESS_TOKEN: ${{ secrets.CALENDLY_ACCESS_TOKEN }}
|
|
TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }}
|
|
TWILIO_AUTH_TOKEN: ${{ secrets.TWILIO_AUTH_TOKEN }}
|
|
GOOGLE_OAUTH_REFRESH_TOKEN: ${{ secrets.GOOGLE_OAUTH_REFRESH_TOKEN }}
|
|
BLUESKY_PASSWORD: ${{ secrets.BLUESKY_PASSWORD }}
|
|
FARCASTER_NEYNAR_API_KEY: ${{ secrets.FARCASTER_NEYNAR_API_KEY }}
|
|
SHOPIFY_API_KEY: ${{ secrets.SHOPIFY_API_KEY }}
|
|
HYPERLIQUID_PRIVATE_KEY: ${{ secrets.HYPERLIQUID_PRIVATE_KEY }}
|
|
POLYMARKET_API_KEY: ${{ secrets.POLYMARKET_API_KEY }}
|
|
STRAVA_ACCESS_TOKEN: ${{ secrets.STRAVA_ACCESS_TOKEN }}
|
|
OURA_ACCESS_TOKEN: ${{ secrets.OURA_ACCESS_TOKEN }}
|
|
FITBIT_ACCESS_TOKEN: ${{ secrets.FITBIT_ACCESS_TOKEN }}
|
|
WITHINGS_ACCESS_TOKEN: ${{ secrets.WITHINGS_ACCESS_TOKEN }}
|
|
GOOGLE_CALENDAR_ACCESS_TOKEN: ${{ secrets.GOOGLE_CALENDAR_ACCESS_TOKEN }}
|
|
ATLASCLOUD_API_KEY: ${{ secrets.ATLASCLOUD_API_KEY }}
|
|
TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }}
|
|
BIRDEYE_API_KEY: ${{ secrets.BIRDEYE_API_KEY }}
|
|
ELIZAOS_CLOUD_API_KEY: ${{ secrets.ELIZAOS_CLOUD_API_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
|
|
with:
|
|
submodules: false
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
|
|
with:
|
|
node-version: "24.15.0"
|
|
|
|
- name: Setup workspace dependencies
|
|
uses: ./.github/actions/setup-bun-workspace
|
|
with:
|
|
bun-version: "1.3.14" # pinned: floating canary writes lockfileVersion 2 and breaks --frozen-lockfile (#11184/#9454)
|
|
install-command: bun install
|
|
|
|
- name: Build workspace
|
|
run: bun run build
|
|
|
|
# plugin-sql's RLS *.real.test.ts suites gate on POSTGRES_URL with the
|
|
# same URL run-all-tests auto-provisions locally. Best-effort: if the
|
|
# runner has no docker, the suites self-skip with a named accounting line.
|
|
- name: Provision Postgres (best-effort)
|
|
run: |
|
|
if command -v docker >/dev/null 2>&1; then
|
|
docker rm -f develop-live-postgres 2>/dev/null || true
|
|
docker run -d --name develop-live-postgres \
|
|
-e POSTGRES_USER=eliza_test -e POSTGRES_PASSWORD=test123 -e POSTGRES_DB=eliza_test \
|
|
-p 127.0.0.1:5433:5432 postgres:17
|
|
echo "POSTGRES_URL=postgresql://eliza_test:test123@127.0.0.1:5433/eliza_test" >> "$GITHUB_ENV"
|
|
else
|
|
echo "docker unavailable; plugin-sql Postgres real suites will self-skip"
|
|
fi
|
|
|
|
- name: Post-merge live matrix
|
|
env:
|
|
RUNNER_TEMP_LOG: ${{ runner.temp }}/develop-live-sweep.log
|
|
TEST_FILTER: ${{ inputs.filter }}
|
|
run: |
|
|
set -o pipefail
|
|
filter_args=()
|
|
if [ -n "${TEST_FILTER:-}" ]; then
|
|
filter_args+=(--filter="$TEST_FILTER")
|
|
fi
|
|
node packages/scripts/run-all-tests.mjs --all --no-cloud "${filter_args[@]}" 2>&1 | tee "$RUNNER_TEMP_LOG"
|
|
|
|
- name: Cloud unit suite
|
|
if: always()
|
|
run: bun run test:cloud
|
|
|
|
- name: Teardown Postgres
|
|
if: always()
|
|
run: docker rm -f develop-live-postgres 2>/dev/null || true
|
|
|
|
- name: Upload sweep log
|
|
if: always()
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
with:
|
|
name: develop-live-sweep-log
|
|
path: ${{ runner.temp }}/develop-live-sweep.log
|
|
if-no-files-found: ignore
|