Rohin/perf improvements #7601
This file contains 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: | |
branches: | |
- main | |
# Cancel previous workflows on previous push | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- name: Check dependencies | |
run: pnpm depcheck | |
- name: Lint | |
run: pnpm lint:style | |
# - name: generate (dev) JSON Schema | |
# run: pnpm generate-json-schema:dev | |
- name: Format | |
run: pnpm format:check | |
- name: Ensure no changes to git-tracked files | |
run: git --no-pager diff --exit-code | |
compile: | |
runs-on: CLI | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- name: Compile | |
run: pnpm compile | |
eslint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- name: lint:eslint | |
run: pnpm lint:eslint | |
test: | |
runs-on: Test | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- uses: bufbuild/[email protected] | |
with: | |
github_token: ${{ github.token }} | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: 'stable' | |
- name: Install protoc-gen-openapi | |
run: go install github.com/google/gnostic/cmd/[email protected] | |
- name: Compile | |
run: pnpm compile | |
- name: Run tests | |
run: pnpm test | |
- name: Ensure no changes to git-tracked files | |
run: git --no-pager diff --exit-code | |
ete-tests: | |
runs-on: CLI | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- name: Compile | |
run: pnpm compile | |
- name: Run ETE tests | |
env: | |
FERN_ORG_TOKEN_DEV: ${{ secrets.FERN_ORG_TOKEN_DEV }} | |
run: | | |
FERN_TOKEN=${{ secrets.FERN_ORG_TOKEN_DEV }} pnpm test:ete | |
- name: Ensure no changes to git-tracked files | |
run: git --no-pager diff --exit-code | |
live-test-dev: | |
environment: Fern Dev | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- 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 --filter @fern-api/cli dist:cli:dev | |
cli_path="$(pwd)/packages/cli/cli/dist/dev/cli.cjs" | |
./scripts/live-test.sh "$cli_path" "$FERN_ORG_TOKEN_DEV" | |
live-test-dev-windows: | |
environment: Fern Dev | |
if: github.ref == 'refs/heads/main' | |
runs-on: windows-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
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 --filter @fern-api/cli dist:cli:dev | |
$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 | |
ts-generator-changes: | |
runs-on: ubuntu-latest | |
outputs: | |
typescript: ${{ steps.filter.outputs.typescript }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
filters: | | |
typescript: | |
- 'generators/typescript/sdk/**' | |
node-version-tests: | |
runs-on: ubuntu-latest | |
needs: ts-generator-changes | |
if: ${{ needs.changes.outputs.typescript == 'true' }} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install | |
uses: ./.github/actions/install | |
- name: Load NVM | |
run: | | |
source /home/runner/.nvm/nvm.sh | |
shell: bash | |
- name: Run file tests | |
run: ./scripts/node-all-versions-test.sh | |
- name: Ensure no changes to git-tracked files | |
run: git --no-pager diff --exit-code | |
cloudflare-startup-tests: | |
runs-on: ubuntu-latest | |
needs: ts-generator-changes | |
if: ${{ needs.changes.outputs.typescript == 'true' }} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Run cloudflare startup test | |
run: ./scripts/cloudflare-startup-test.sh | |
- name: Ensure no changes to git-tracked files | |
run: git --no-pager diff --exit-code | |
browser-startup-tests: | |
runs-on: ubuntu-latest | |
needs: ts-generator-changes | |
if: ${{ needs.changes.outputs.typescript == 'true' }} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Run browser startup test | |
run: ./scripts/browser-startup-test.sh | |
- name: Ensure no changes to git-tracked files | |
run: git --no-pager diff --exit-code |