fix: run all clients on stainless SDK, fix workflow, properly commit recordings (#4410)

# What does this PR do?

Various fixes to integration test recording + stainless calling of
integration tests:

1. only the library client was being run, they all should be
2. the git check grabs diffs like:

M tests/integration/client-typescript/package-lock.json
 M tests/integration/client-typescript/package.json

it should not

additionally:

Fixes rebase conflicts when stainless workflow runs integration tests
with
  record-if-missing mode on PRs. Previously, the workflow would:
  1. Commit all files in tests/integration/ (including non-recordings)
  2. Try to rebase and push to 'main' instead of the PR branch
  3. Fail with merge conflicts on PR-specific changes

  Changes:
- Add pr_head_ref and is_fork_pr parameters flowing through workflow
chain
- Use target-branch input instead of github.ref_name in recording
commits
- Detect and handle fork PRs by skipping push and uploading recordings
as artifacts
  - Add 7-day artifact retention for fork PR recordings
  - Support both workflow_call and direct pull_request trigger contexts

For same-repo PRs: recordings now commit/push to the PR branch correctly
For fork PRs: recordings upload as downloadable artifacts with
instructions


you can see a failing workflow:
5846590613
with the rebase issues.

---------

Signed-off-by: Charlie Doern <cdoern@redhat.com>
This commit is contained in:
Charlie Doern 2025-12-18 15:24:09 -05:00 committed by GitHub
parent 5d52cb28c2
commit e710622d4c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 62 additions and 11 deletions

View file

@ -52,6 +52,15 @@ on:
required: false
type: string
description: 'The SHA of the pull request head to checkout'
pr_head_ref:
required: false
type: string
description: 'The branch name of the pull request head (for recording commits)'
is_fork_pr:
required: false
type: boolean
default: false
description: 'Whether this is a fork PR (cannot push recordings to forks)'
test-all-client-versions:
required: false
type: boolean
@ -150,3 +159,5 @@ jobs:
setup: ${{ matrix.config.setup }}
inference-mode: ${{ matrix.config.inference_mode || 'replay' }}
suite: ${{ matrix.config.suite }}
target-branch: ${{ inputs.pr_head_ref || '' }}
is-fork-pr: ${{ inputs.is_fork_pr && 'true' || (github.event.pull_request.head.repo.full_name != github.repository && 'true' || 'false') }}