mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-22 11:12:25 +00:00
# What does this PR do?
Enable stainless-builds workflow to test preview SDKs by calling
integration-tests workflow with python_url parameter. Add stainless
matrix config for faster CI runs on SDK changes.
- Make integration-tests.yml reusable with workflow_call inputs
- Thread python_url through test setup actions to install preview SDK
- Add matrix_key parameter to generate_ci_matrix.py for custom matrices
- Update stainless-builds.yml to call integration tests with preview URL
This allows us to test a client on the PR introducing the new changes
before merging. Contributors can even write new tests using the
generated client which should pass on the PR, indicating that they will
pass on main upon merge
## Test Plan
see triggered action using the workflows on this branch:
5810594042
which installs the stainless SDK from the given url.
---------
Signed-off-by: Charlie Doern <cdoern@redhat.com>
72 lines
3.2 KiB
YAML
72 lines
3.2 KiB
YAML
name: Install llama-stack-client
|
|
description: Install llama-stack-client based on branch context and client-version input
|
|
|
|
inputs:
|
|
client-version:
|
|
description: 'Client version to install on non-release branches (latest or published). Ignored on release branches.'
|
|
required: false
|
|
default: ""
|
|
sdk_install_url:
|
|
description: 'URL to install Python SDK from (for testing preview builds). If provided, overrides client-version.'
|
|
required: false
|
|
default: ""
|
|
|
|
outputs:
|
|
uv-extra-index-url:
|
|
description: 'UV_EXTRA_INDEX_URL to use (set for release branches)'
|
|
value: ${{ steps.configure.outputs.uv-extra-index-url }}
|
|
install-after-sync:
|
|
description: 'Whether to install client after uv sync'
|
|
value: ${{ steps.configure.outputs.install-after-sync }}
|
|
install-source:
|
|
description: 'Where to install client from after sync'
|
|
value: ${{ steps.configure.outputs.install-source }}
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Configure client installation
|
|
id: configure
|
|
shell: bash
|
|
run: |
|
|
# If sdk_install_url is provided (e.g., from Stainless preview), use it directly
|
|
if [ -n "${{ inputs.sdk_install_url }}" ]; then
|
|
echo "Using provided sdk_install_url: ${{ inputs.sdk_install_url }}"
|
|
echo "install-after-sync=true" >> $GITHUB_OUTPUT
|
|
echo "install-source=${{ inputs.sdk_install_url }}" >> $GITHUB_OUTPUT
|
|
exit 0
|
|
fi
|
|
|
|
# Determine the branch we're working with
|
|
BRANCH="${{ github.base_ref || github.ref }}"
|
|
BRANCH="${BRANCH#refs/heads/}"
|
|
|
|
echo "Working with branch: $BRANCH"
|
|
|
|
# On release branches: use test.pypi for uv sync, then install from git
|
|
# On non-release branches: install based on client-version after sync
|
|
if [[ "$BRANCH" =~ ^release-[0-9]+\.[0-9]+\.x$ ]]; then
|
|
echo "Detected release branch: $BRANCH"
|
|
|
|
# Check if matching branch exists in client repo
|
|
if ! git ls-remote --exit-code --heads https://github.com/llamastack/llama-stack-client-python.git "$BRANCH" > /dev/null 2>&1; then
|
|
echo "::error::Branch $BRANCH not found in llama-stack-client-python repository"
|
|
echo "::error::Please create the matching release branch in llama-stack-client-python before testing"
|
|
exit 1
|
|
fi
|
|
|
|
# Configure to use test.pypi as extra index (PyPI is primary)
|
|
echo "uv-extra-index-url=https://test.pypi.org/simple/" >> $GITHUB_OUTPUT
|
|
echo "install-after-sync=true" >> $GITHUB_OUTPUT
|
|
echo "install-source=git+https://github.com/llamastack/llama-stack-client-python.git@$BRANCH" >> $GITHUB_OUTPUT
|
|
elif [ "${{ inputs.client-version }}" = "latest" ]; then
|
|
# Install from main git after sync
|
|
echo "install-after-sync=true" >> $GITHUB_OUTPUT
|
|
echo "install-source=git+https://github.com/llamastack/llama-stack-client-python.git@main" >> $GITHUB_OUTPUT
|
|
elif [ "${{ inputs.client-version }}" = "published" ]; then
|
|
# Use published version from PyPI (installed by sync)
|
|
echo "install-after-sync=false" >> $GITHUB_OUTPUT
|
|
elif [ -n "${{ inputs.client-version }}" ]; then
|
|
echo "::error::Invalid client-version: ${{ inputs.client-version }}"
|
|
exit 1
|
|
fi
|