Skip to content

ci: run python SDK agent e2e against a SQLite server built from source - #1350

Closed
ling-senpeng13 wants to merge 1 commit into
conductor-oss:mainfrom
ling-senpeng13:ci/python-sdk-e2e-sqlite
Closed

ci: run python SDK agent e2e against a SQLite server built from source#1350
ling-senpeng13 wants to merge 1 commit into
conductor-oss:mainfrom
ling-senpeng13:ci/python-sdk-e2e-sqlite

Conversation

@ling-senpeng13

@ling-senpeng13 ling-senpeng13 commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What

Adds a gating python-sdk-e2e job to CI that boots the conductor server built from this commit in SQLite mode (the default persistence — no external DB) and runs the released python SDK agent e2e suite against it. This catches server changes that would break the SDK end-to-end before a release.

Why

Today nothing in this repo's CI exercises the agent SDK against a from-source server. The python SDK ships an e2e suite (conductor-oss/python-sdk, released as the conductor-ai-e2e-python-* bundle); wiring it here means a server-side regression in the agent surface (LLM chat/complete, tools, MCP, guardrails, scheduling, …) fails CI instead of surfacing after release.

How

  • From-source server, SQLite: builds :conductor-server:bootJar and boots it on :8080. SQLite is the default (conductor.db.type=sqlite / queue.type=sqlite / indexing.type=sqlite), so no Postgres/Redis/ES services are needed.
  • openai auto-config: the server reads conductor.ai.openai.api-key=${OPENAI_API_KEY:}, so setting the env var is enough — no manual integration registration.
  • Bundle: fetches the pinned conductor-ai-e2e-python-2.0.0-rc2 bundle from conductor-oss/python-sdk at runtime, sha256-verified; run.sh installs conductor-python[agents]==<version> and runs the full suite.
  • Skip support (green today): known failures are xfail-ed via an external pytest plugin (.github/agent-e2e/known_failures_plugin.py, loaded with -p known_failures_plugin) reading a per-repo list (.github/agent-e2e/known-failures-python.json). The suite is green against this server, so the list is empty — the mechanism stays so the lane can gate while any future gap is fixed (a fix XPASSes; a stale/mismatched entry is a harmless no-op that can't hide a regression).
  • Cost control: runs on push/dispatch, and on PRs only when agent-relevant paths change (ai/, conductor-agentspan/, server/, core/, sqlite-persistence/, the workflow) via a detect-changes agent filter — so unrelated PRs don't spend LLM budget.

⚠️ Requires a repo secret

The job needs OPENAI_API_KEY (and optionally ANTHROPIC_API_KEY) configured as a repository/organization secret. GitHub does not pass secrets to fork PRs, so this job can only run with real LLM calls on branches in this repo (or once the secret is available) — a maintainer should validate it on a branch. The bundle version pin (2.0.0-rc2) should be bumped deliberately as new python-sdk releases cut their e2e bundles.

Adds a `python-sdk-e2e` job to CI that boots the conductor server built from
the current commit in SQLite mode (the default persistence — no external DB)
and runs the released python SDK agent e2e suite against it, so a server
change can't silently break the SDK before a release.

- The suite + bundle come from conductor-oss/python-sdk
  (conductor-ai-e2e-python-<version>, pinned); fetched at runtime, sha256-verified.
- The server auto-configures the openai provider from OPENAI_API_KEY
  (conductor.ai.openai.api-key), so no manual integration setup is needed.
- Known failures are xfail-ed via an external pytest plugin
  (.github/agent-e2e/known_failures_plugin.py loaded with -p) + a per-repo
  list (known-failures-python.json). The suite is green today so the list is
  empty; the mechanism stays so the lane can gate while any future gap is
  fixed (a fixed bug XPASSes; a stale entry is a harmless no-op).
- Gating. Runs on push/dispatch and on PRs touching agent-relevant paths
  (ai/, conductor-agentspan/, server/, core/, sqlite-persistence/, the
  workflow) via a detect-changes `agent` filter, to avoid spending LLM
  budget on unrelated PRs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ling-senpeng13 ling-senpeng13 self-assigned this Jul 17, 2026
@ling-senpeng13

Copy link
Copy Markdown
Contributor Author

Superseded by #1351 — same change pushed to an internal branch so the org OPENAI_API_KEY/ANTHROPIC_API_KEY secrets are available to CI (GitHub withholds secrets from fork PRs, so this draft could never exercise the job).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant