Skip to content

chore(python): update python-sdk seed (#14452) #43811

chore(python): update python-sdk seed (#14452)

chore(python): update python-sdk seed (#14452) #43811

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
inputs:
update_snapshots:
description: 'Automatically update test snapshots if they fail (applies to both regular tests and ETE tests)'
required: false
default: false
type: boolean
# Cancel previous workflows on previous push
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
DO_NOT_TRACK: "1"
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: "buildwithfern"
TURBO_REMOTE_CACHE_TIMEOUT: 10
TURBO_NO_UPDATE_NOTIFIER: "1"
TURBO_DAEMON: "false"
jobs:
compile:
runs-on: Seed
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Compile
run: pnpm compile
boundaries:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Check turbo boundaries
run: pnpm boundaries
depcheck:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Check dependencies
run: pnpm depcheck
validate-cli-dependencies:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Validate CLI dependencies
run: node scripts/validate-cli-dependencies.js
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Lint
run: pnpm lint:style
- name: Generate JSON Schema
run: |
pnpm fern:build
pnpm jsonschema
- name: Format
run: pnpm format:check
- name: Ensure no changes to git-tracked files
run: git --no-pager diff --exit-code
biome:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: check:biome
run: pnpm check:biome
test:
if: github.repository == 'fern-api/fern'
runs-on: Test
timeout-minutes: 25
steps:
- name: Checkout repo
uses: actions/checkout@v6
with:
lfs: true
- name: Install
uses: ./.github/actions/install
- name: Build CLI for install-dependencies
run: pnpm turbo run dist:cli:dev --filter=@fern-api/cli
- name: Install protobuf dependencies (buf + protoc-gen-openapi)
run: |
FERN_NO_VERSION_REDIRECTION=true node packages/cli/cli/dist/dev/cli.cjs install-dependencies
echo "$HOME/.fern/bin" >> $GITHUB_PATH
- name: Stop any stale turbo daemon
run: pnpm turbo daemon stop || true
- name: Run tests
if: ${{ !github.event.inputs.update_snapshots }}
timeout-minutes: 20
run: ./scripts/turbo-retry.sh pnpm test
- name: Run tests with snapshot updates
if: ${{ github.event.inputs.update_snapshots == 'true' }}
timeout-minutes: 20
run: ./scripts/turbo-retry.sh pnpm test:update
- name: Commit and push updated snapshots
if: ${{ github.event.inputs.update_snapshots == 'true' }}
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add .
if ! git diff --staged --quiet; then
git commit -m "chore: update test snapshots"
git push
else
echo "No snapshot changes to commit"
fi
- name: Ensure no changes to git-tracked files
if: ${{ !github.event.inputs.update_snapshots }}
run: git --no-pager diff --exit-code
test-ete:
if: github.repository == 'fern-api/fern'
runs-on: Test
timeout-minutes: 25
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Build CLI for install-dependencies
run: pnpm turbo run dist:cli:dev --filter=@fern-api/cli
- name: Install protobuf dependencies (buf + protoc-gen-openapi)
run: |
FERN_NO_VERSION_REDIRECTION=true node packages/cli/cli/dist/dev/cli.cjs install-dependencies
echo "$HOME/.fern/bin" >> $GITHUB_PATH
- name: Stop any stale turbo daemon
run: pnpm turbo daemon stop || true
- name: Build CLIs (dev + seed)
timeout-minutes: 10
run: |
./scripts/turbo-retry.sh pnpm turbo run dist:cli:dev dist:cli --filter=@fern-api/cli --filter=@fern-api/cli-v2 --filter=@fern-api/seed-cli
- name: Run ETE tests
if: ${{ !github.event.inputs.update_snapshots }}
timeout-minutes: 20
env:
FERN_ORG_TOKEN_DEV: ${{ secrets.FERN_ORG_TOKEN_DEV }}
run: |
FERN_TOKEN=${{ secrets.FERN_ORG_TOKEN_DEV }} pnpm --filter @fern-api/ete-tests test
- name: Run ETE tests with snapshot updates
if: ${{ github.event.inputs.update_snapshots == 'true' }}
timeout-minutes: 20
env:
FERN_ORG_TOKEN_DEV: ${{ secrets.FERN_ORG_TOKEN_DEV }}
run: |
FERN_TOKEN=${{ secrets.FERN_ORG_TOKEN_DEV }} pnpm --filter @fern-api/ete-tests test -- -u
- name: Commit and push updated snapshots
if: ${{ github.event.inputs.update_snapshots == 'true' }}
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add .
if ! git diff --staged --quiet; then
git commit -m "chore: update ETE test snapshots"
git push
else
echo "No snapshot changes to commit"
fi
- name: Ensure no changes to git-tracked files
if: ${{ !github.event.inputs.update_snapshots }}
run: git --no-pager diff --exit-code
live-test-dev:
environment: Fern Dev
if: ${{ github.ref == 'refs/heads/main' && github.repository == 'fern-api/fern' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Check API definition is valid
env:
FORCE_COLOR: "2"
FERN_ORG_TOKEN_DEV: ${{ secrets.FERN_ORG_TOKEN_DEV }}
AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }}
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
run: |
pnpm turbo run dist:cli:dev --filter @fern-api/cli
cli_path="$(pwd)/packages/cli/cli/dist/dev/cli.cjs"
./scripts/live-test.sh "$cli_path" "$FERN_ORG_TOKEN_DEV"
generate-docs-test-windows:
environment: Fern Dev
if: ${{ github.ref == 'refs/heads/main' && github.repository == 'fern-api/fern' }}
runs-on: windows-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: "20.x"
- name: Assert docs are generated
env:
FORCE_COLOR: "2"
FERN_TOKEN: ${{ secrets.FERN_ORG_TOKEN_DEV }}
AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }}
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
run: |
pnpm turbo run dist:cli:dev --filter @fern-api/cli
$cliPath = Join-Path $env:GITHUB_WORKSPACE "packages\cli\cli\dist\dev\cli.cjs"
if (-not (Test-Path $cliPath)) {
Write-Error "CLI path does not exist: $cliPath"
exit 1
}
cd windows
node $cliPath generate --docs --log-level trace
if ($LASTEXITCODE -ne 0) {
Write-Error "Command failed with exit code $LASTEXITCODE"
exit $LASTEXITCODE
}
live-test-dev-windows:
environment: Fern Dev
if: ${{ github.ref == 'refs/heads/main' && github.repository == 'fern-api/fern' }}
runs-on: windows-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Install
uses: ./.github/actions/install
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: "20.x"
- name: Check API definition is valid
env:
FORCE_COLOR: "2"
FERN_ORG_TOKEN_DEV: ${{ secrets.FERN_ORG_TOKEN_DEV }}
AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }}
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
run: |
pnpm turbo run dist:cli:dev --filter @fern-api/cli
$cliPath = Join-Path $env:GITHUB_WORKSPACE "packages\cli\cli\dist\dev\cli.cjs"
if (-not (Test-Path $cliPath)) {
Write-Error "CLI path does not exist: $cliPath"
exit 1
}
$scriptPath = Join-Path $env:GITHUB_WORKSPACE "scripts\live-test.ps1"
& $scriptPath -cli_path $cliPath -token $env:FERN_ORG_TOKEN_DEV