Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ jobs:
ref: ${{ github.event.pull_request.base.ref }}
path: 'base'


# Cache openai spec
- name: Cache openai openapi spec
id: cache-openapi
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809
with:
path: ~/openai-openapi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why use ~ here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the cache action by default has access only to a runners home dir? I could be wrong but that is where I have been storing and writing the cached binaries+files to/from

key: openai-openapi.yml

# Cache oasdiff to avoid checksum failures and speed up builds
- name: Cache oasdiff
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should probably also support a force no-cache conformance check as well - we should probably run it at the time of release.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, but should I make this a separate action so it can be triggered by maintainers manually?

if: steps.skip-check.outputs.skip != 'true'
Expand All @@ -81,6 +90,12 @@ jobs:
curl -fsSL https://raw.githubusercontent.com/oasdiff/oasdiff/main/install.sh | sh
cp /usr/local/bin/oasdiff ~/oasdiff

- name: Get openai openapi spec
if: steps.cache-openapi.outputs.cache-hit != 'true'
run: |
mkdir -p ~/openai-openapi
curl -L https://app.stainless.com/api/spec/documented/openai/openapi.documented.yml -o ~/openai-openapi/openai-openapi.yml
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we not want to pin the version of the openai api?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure, I can pin it. Do we have a version in mind we want to use?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the pinning is important, what's the latest version so we can get started with it?


# Setup cached oasdiff
- name: Setup cached oasdiff
if: steps.skip-check.outputs.skip != 'true' && steps.cache-oasdiff.outputs.cache-hit == 'true'
Expand Down Expand Up @@ -137,6 +152,25 @@ jobs:
run: |
oasdiff breaking --fail-on ERR $BASE_SPEC $CURRENT_SPEC --match-path '^/v1/'

# Run oasdiff to detect breaking changes in the API specification when compared to the OpenAI openAPI spec
- name: Run OpenAPI Breaking Change Diff Against OpenAI API
if: steps.skip-check.outputs.skip != 'true'
continue-on-error: true
shell: bash
run: |
OPENAI_SPEC=~/openai-openapi/openai-openapi.yml
LOCAL_SPEC=docs/static/llama-stack-spec.yaml

# Compare OpenAI spec against Llama Stack spec
# Strip /v1 prefix from our spec to match OpenAI's paths
# Filter out api-path-removed errors for OpenAI routes we don't implement
oasdiff breaking --fail-on ERR \
"$OPENAI_SPEC" \
"$LOCAL_SPEC" \
--strip-prefix-revision "/v1" 2>&1 | \
grep -v "api-path-removed-without-deprecation" | \
grep -v "api-removed-without-deprecation" || true

# Report when test is skipped
- name: Report skip reason
if: steps.skip-check.outputs.skip == 'true'
Expand Down