Skip to content

ci: export SDK e2e suites as a release bundle for downstream reuse#294

Closed
ling-senpeng13 wants to merge 1 commit into
mainfrom
feat/export-e2e-bundle
Closed

ci: export SDK e2e suites as a release bundle for downstream reuse#294
ling-senpeng13 wants to merge 1 commit into
mainfrom
feat/export-e2e-bundle

Conversation

@ling-senpeng13

Copy link
Copy Markdown
Contributor

What

Adds the producer side of the agentspan → orkes-conductor e2e contract: a workflow + script that package the SDK e2e suites into a release bundle so downstream hosts (orkes-conductor) can run the exact same suites against their own server, pinned by release tag.

orkes-conductor's agentspan-sdk-e2e.yaml already consumes this: it gh release downloads agentspan-e2e-bundle.tar.gz + agentspan-e2e-bundle.manifest.txt from this repo, extracts to agentspan-e2e/, and runs each SDK from $BUNDLE/sdk/<lang> (+ builds the CLI from $BUNDLE/cli). Only the producer was missing here.

Changes

  • e2e/export-e2e-bundle.sh — assembles the bundle via git archive (tracked files only → reproducible, no build//node_modules//.venv//obj/). Top-level agentspan-e2e/ containing self-contained sdk/{java,python,typescript,csharp} + cli/ + e2e/TEST_SETUP.md, plus a provenance manifest (tag, commit, lib version, date). Runs locally: e2e/export-e2e-bundle.sh [OUT_DIR] [REF].
  • .github/workflows/export-e2e-bundle.ymlon: release [created] + manual dispatch; uploads both assets to the release. Same trigger as release-server-maven.yml (which publishes conductor-agentspan), so bundle and lib share the release tag → orkes pins one tag for both lib and tests.
  • .gitignore — ignore /dist/ (bundle output).

e2e/TEST_SETUP.md already existed and is included as-is.

Verification

  • Extracted layout matches the consumer's BUNDLE=/tmp/agentspan/agentspan-e2e; all 4 SDK trees self-contained (gradlew / pyproject+uv.lock / package.json+lock / sln+csproj→../../src/Conductor.AI / go.mod); 26 Java suites; zero build-artifact leakage.
  • Asset names + bundle root match orkes' agentspan-sdk-e2e.yaml exactly.
  • YAML + bash syntax valid; negative test (a required path absent → exits 1 with "is missing from the bundle").

Notes

  • This bundle/source approach is what orkes actually consumes. The Maven test-jar / package-move work on export-java-e2e-conformance is an orthogonal, unused approach — worth retiring.
  • The bundle workflow auto-attaches on release; can also be dispatched manually against a specific tag.

🤖 Generated with Claude Code

Adds the producer side of the agentspan -> orkes-conductor e2e contract.
orkes-conductor's agentspan-sdk-e2e.yaml already downloads
`agentspan-e2e-bundle.tar.gz` + `.manifest.txt` from our releases and runs
each SDK suite against its embedded server; this adds the workflow + script
that produce those assets.

- e2e/export-e2e-bundle.sh: assembles the bundle via `git archive` (tracked
  files only, no build artifacts) into top-level `agentspan-e2e/` with
  sdk/{java,python,typescript,csharp} + cli + e2e/TEST_SETUP.md, then writes
  the tarball + a provenance manifest. Each SDK tree is self-contained
  (gradlew / pyproject / package.json / sln+csproj / go.mod).
- .github/workflows/export-e2e-bundle.yml: on release [created] + manual
  dispatch, builds the bundle and uploads both assets to the release. Sharing
  the release tag with the conductor-agentspan lib lets orkes pin ONE tag for
  both the lib and the matching e2e suites.
- .gitignore: ignore /dist/ (bundle output).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ling-senpeng13 ling-senpeng13 deleted the feat/export-e2e-bundle branch June 29, 2026 23:24
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