feat(e2e): export SDK e2e suites as versioned release bundles#295
Open
ling-senpeng13 wants to merge 6 commits into
Open
feat(e2e): export SDK e2e suites as versioned release bundles#295ling-senpeng13 wants to merge 6 commits into
ling-senpeng13 wants to merge 6 commits into
Conversation
Package each SDK's e2e suite into a self-contained, version-stamped tarball attached to every GitHub release, so downstream repos (e.g. orkes-io/orkes-conductor) can pin the e2e suite to the exact agentspan release they run against. Each bundle pins the published SDK at the same version — PyPI conductor-agent-sdk, npm @conductor-oss/conductor-agent-sdk, Maven org.conductoross.conductor:conductor-agent-sdk, NuGet conductor-agent-sdk — and carries test sources + support files + a standalone manifest/runner/README (no SDK source vendored). - package-e2e.sh: build python/typescript/java/csharp bundles for a version - release-e2e-tests.yml: on release, package → validate → upload assets - test_package_e2e.sh: static validator (structure, parity, pins, manifests) - smoke_resolve.sh: live resolution smoke test against a published version Verified: static validator green; published-0.3.0 smoke resolves + collects (Python 134 tests, TypeScript suite, C# NuGet restore); Java validated statically (no local gradle). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aligns the workflow filename with the sibling ci-*-sdk-e2e.yml workflows and its own "Release SDK E2E Test Bundles" title. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…2e-* Aligns the bundle/tarball prefix with the release-sdk-e2e-tests workflow and the ci-*-sdk-e2e naming. Done before first release, so no published artifacts pin the old name. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sdk_e2e Completes the *-sdk-e2e naming alignment across the release tooling. Updates all call sites: the release-sdk-e2e-tests workflow, smoke_resolve.sh, README, and in-file usage comments. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Make the Java SDK e2e bundle self-contained: ship the Gradle wrapper (reused from sdk/java, pinned to 8.10) and run via ./gradlew, so the suite needs only JDK 21 and runs identically regardless of the host's Gradle version. Also declare junit-platform-launcher explicitly so it stays correct if the wrapper ever moves to Gradle 9. Fix substitute_version to skip *.jar: it sed-ed every staged file, which corrupts the binary wrapper jar (and aborts packaging under set -e). test_package_sdk_e2e.sh now asserts the wrapper is present, executable, pins a distribution, has an uncorrupted (valid-zip) jar, and that run.sh invokes ./gradlew. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Exports each SDK's end-to-end suite as a self-contained, version-stamped tarball attached to every GitHub release, so downstream repos (e.g.
orkes-io/orkes-conductor) can pin the e2e suite to the exact agentspan release they run against — no copying or vendoring of test code.A single release
vX.Y.Zalready fans out to every SDK's publish workflow at that one version, so the e2e bundle and the SDK it tests always match. Each bundle pins the published SDK at the release version and carries only test sources + support files + a generated manifest/runner/README (never the SDK source):agentspan-sdk-e2e-python-<v>.tar.gzconductor-agent-sdk==<v>agentspan-sdk-e2e-typescript-<v>.tar.gz@conductor-oss/conductor-agent-sdk@<v>agentspan-sdk-e2e-java-<v>.tar.gzorg.conductoross.conductor:conductor-agent-sdk:<v>agentspan-sdk-e2e-csharp-<v>.tar.gzconductor-agent-sdk<v>How it ships
.github/workflows/release-sdk-e2e-tests.ymlruns onrelease: created(+ manual dispatch): package → validate → attach tarballs +.sha256to thevX.Y.Zrelease.Files
e2e/release/package-sdk-e2e.sh— builds the bundles for a version (--sdk,--out)e2e/release/test_package_sdk_e2e.sh— static validator (structure, file-count parity, version pins, manifest well-formedness, standalone-config wiring); runs in CIe2e/release/smoke_resolve.sh— live resolution smoke test against a published versione2e/release/README.md— maintainer + downstream consumption docs.github/workflows/release-sdk-e2e-tests.yml— release packaging + asset upload.gitignore— ignorese2e/release/dist/build outputConsuming (downstream)
Testing
srcalias → both correctly failed, then passed once restored).vitest listcollects the suiteconductor-agent-sdk0.3.0 restores on .NET 10gradle testClasses)🤖 Generated with Claude Code