chore(python): update python-sdk seed (#14452) #43811
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |