chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
name: SDK Tests
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
name: Detect changes
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
outputs:
|
||||
js: ${{ steps.filter.outputs.js }}
|
||||
python: ${{ steps.filter.outputs.python }}
|
||||
cli: ${{ steps.filter.outputs.cli }}
|
||||
steps:
|
||||
- name: Filter changed paths
|
||||
# On workflow_dispatch there is no PR diff and paths-filter would fall
|
||||
# back to git (failing without a checkout); the job-level `if`s below
|
||||
# force a full run for that event instead, so we only filter on pull_request.
|
||||
if: github.event_name == 'pull_request'
|
||||
uses: dorny/paths-filter@v3
|
||||
id: filter
|
||||
with:
|
||||
# `**/!(*.md)` excludes Markdown so docs-only changes don't trigger the suites.
|
||||
filters: |
|
||||
shared: &shared
|
||||
- '.github/workflows/sdk_tests.yml'
|
||||
- 'spec/**/!(*.md)'
|
||||
- 'pnpm-lock.yaml'
|
||||
- 'pnpm-workspace.yaml'
|
||||
- 'package.json'
|
||||
- '.tool-versions'
|
||||
js:
|
||||
- *shared
|
||||
- '.github/workflows/js_sdk_tests.yml'
|
||||
- 'packages/js-sdk/**/!(*.md)'
|
||||
python:
|
||||
- *shared
|
||||
- '.github/workflows/python_sdk_tests.yml'
|
||||
- 'packages/python-sdk/**/!(*.md)'
|
||||
- 'packages/connect-python/**/!(*.md)'
|
||||
cli:
|
||||
- *shared
|
||||
- '.github/workflows/cli_tests.yml'
|
||||
- 'packages/cli/**/!(*.md)'
|
||||
- 'packages/js-sdk/**/!(*.md)'
|
||||
|
||||
js-tests:
|
||||
name: Production / JS SDK Tests
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.js == 'true' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: ./.github/workflows/js_sdk_tests.yml
|
||||
secrets:
|
||||
E2B_API_KEY: ${{ secrets.E2B_API_KEY }}
|
||||
|
||||
python-tests:
|
||||
name: Production / Python SDK Tests
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.python == 'true' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: ./.github/workflows/python_sdk_tests.yml
|
||||
secrets:
|
||||
E2B_API_KEY: ${{ secrets.E2B_API_KEY }}
|
||||
|
||||
cli-tests:
|
||||
name: Production / CLI Tests
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.cli == 'true' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: ./.github/workflows/cli_tests.yml
|
||||
secrets:
|
||||
E2B_API_KEY: ${{ secrets.E2B_API_KEY }}
|
||||
|
||||
js-tests-staging:
|
||||
name: Staging / JS SDK Tests
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.js == 'true' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: ./.github/workflows/js_sdk_tests.yml
|
||||
with:
|
||||
E2B_DOMAIN: ${{ vars.E2B_DOMAIN_STAGING }}
|
||||
secrets:
|
||||
E2B_API_KEY: ${{ secrets.E2B_API_KEY_STAGING }}
|
||||
|
||||
python-tests-staging:
|
||||
name: Staging / Python SDK Tests
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.python == 'true' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: ./.github/workflows/python_sdk_tests.yml
|
||||
with:
|
||||
E2B_DOMAIN: ${{ vars.E2B_DOMAIN_STAGING }}
|
||||
secrets:
|
||||
E2B_API_KEY: ${{ secrets.E2B_API_KEY_STAGING }}
|
||||
|
||||
cli-tests-staging:
|
||||
name: Staging / CLI Tests
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.cli == 'true' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: ./.github/workflows/cli_tests.yml
|
||||
with:
|
||||
E2B_DOMAIN: ${{ vars.E2B_DOMAIN_STAGING }}
|
||||
secrets:
|
||||
E2B_API_KEY: ${{ secrets.E2B_API_KEY_STAGING }}
|
||||
|
||||
status:
|
||||
name: SDK Tests Status
|
||||
# `changes` is included so a failure in change-detection (which would skip the
|
||||
# suites) surfaces as a failed required check instead of a false green.
|
||||
needs:
|
||||
- changes
|
||||
- js-tests
|
||||
- python-tests
|
||||
- cli-tests
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Report aggregate result
|
||||
run: |
|
||||
echo "Job results: ${{ join(needs.*.result, ', ') }}"
|
||||
if ${{ contains(needs.*.result, 'failure') }}; then
|
||||
echo "::error::Change detection or a Production SDK test suite failed."
|
||||
exit 1
|
||||
fi
|
||||
if ${{ contains(needs.*.result, 'cancelled') }}; then
|
||||
echo "::error::Change detection or a Production SDK test suite was cancelled; tests were not verified — re-run before merging."
|
||||
exit 1
|
||||
fi
|
||||
echo "All Production SDK test suites passed or were skipped."
|
||||
Reference in New Issue
Block a user