feat(client-sdks): add CI/CD pipeline for OpenAPI SDK validation and publishing#5274
Open
JayDi11a wants to merge 12 commits intollamastack:mainfrom
Open
feat(client-sdks): add CI/CD pipeline for OpenAPI SDK validation and publishing#5274JayDi11a wants to merge 12 commits intollamastack:mainfrom
JayDi11a wants to merge 12 commits intollamastack:mainfrom
Conversation
The setup-runner action was not upgrading llama-stack-client when installing from git after uv sync. This caused CI to use the old PyPI version (0.2.23) instead of the latest git version which has the admin, beta, and vector_io updates. Without --upgrade, uv pip install skips installation if the package is already present, even if the source is different (git vs PyPI). This fixes integration test failures for admin, vector_io, datasets, and tool_runtime APIs that require the updated client SDK. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Apply the same fix as setup-runner to ensure pre-commit workflow also upgrades to the git client version instead of keeping the PyPI version. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add CD pipeline for publishing the OpenAPI-generated SDK to PyPI/TestPyPI. Changes: - Add publish-openapi-sdk.yml workflow with manual and tag-based triggers - Update pyproject.mustache with proper PyPI metadata (authors, license, classifiers, URLs) - Document PyPI publishing process in README.md The workflow supports: - Manual publishing via GitHub Actions UI (with dry-run option) - Automatic publishing to TestPyPI when tags matching openapi-sdk-v* are pushed - Publishing to both TestPyPI (testing) and PyPI (production) Related to llamastack#4609 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The workflow was failing because the upload-artifact action SHA was invalid. Updated to the latest version (v4.6.0) with correct SHA. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Extend openapi-generator-validation workflow to: - Generate SDK with OPEN=0 (creates llama_stack_client package) - Install the generated SDK locally - Run integration tests with the OpenAPI SDK instead of Stainless - Validate SDK compatibility with llama-stack server This implements the CI validation that Eitan outlined: - Tests run with our SDK instead of the official one - Validates the SDK actually works against the server - Helps identify compatibility issues early Tests run: - Basic smoke tests (inspect API) - More tests can be added incrementally Related to llamastack#4609 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The OpenAPI-generated SDK installation was failing because pydantic and other dependencies were not being installed when using `uv pip install -e .`. This fix explicitly installs the required dependencies first, then installs the SDK in editable mode with --no-deps to avoid conflicts. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The previous approach with --no-deps was preventing dependencies from being properly linked. Using --force-reinstall ensures all dependencies are correctly installed along with the SDK in editable mode. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removing working-directory and --force-reinstall flag to ensure proper dependency resolution in the parent venv. Installing from root ensures the editable install path is correctly set up. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The editable install was failing because uv was trying to replace an existing llama-stack-client package without properly installing dependencies. This fix uninstalls any existing client first, then performs a fresh install with all dependencies properly resolved. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The OpenAPI-generated SDK was missing the httpx dependency in pyproject.toml because the httpx flag wasn't being passed to openapi-generator. This fix adds httpx=true to the additional-properties parameter, ensuring httpx is properly included in the generated pyproject.toml dependencies list. This resolves SDK installation failures in CI where dependencies weren't being properly installed with the editable install. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The import was failing because 'python' wasn't properly using the venv environment in GitHub Actions. Using 'uv run python' ensures we use the correct Python interpreter with the right site-packages and editable install paths configured. Also removed the unsupported -y flag from uv pip uninstall. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
franciscojavierarceo
requested changes
Mar 25, 2026
Collaborator
franciscojavierarceo
left a comment
There was a problem hiding this comment.
we should stick with stainless.
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.
Summary
This PR adds comprehensive CI/CD automation for the OpenAPI-generated Python SDK, building on the foundational work from #4874, #4932, and #5001 by @egeiger.
Changes
CI Workflow - OpenAPI Generator Validation:
CD Workflow - PyPI Publishing:
client-sdks/openapi/v*SDK Improvements:
pyproject.tomlhttpx=trueflag to OpenAPI GeneratorDocumentation:
client-sdks/openapi/README.mdTesting
End-to-end validation performed:
Key Commits
Files Changed
Checklist
🤖 Generated with Claude Code