Skip to content

CI

CI #737

Workflow file for this run

name: CI
on:
push:
branches: ['*'] # Triggers on push to any branch.
pull_request:
branches: [main]
merge_group:
permissions:
id-token: write # Required for JFrog OIDC token exchange.
contents: read # Required for actions/checkout.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint (${{ matrix.shard }})
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
strategy:
fail-fast: false
matrix:
# Shards partition packages by the first letter after `@databricks/sdk-`.
# Together the four ranges cover a-z.
shard: ['[a-c]*', '[d-l]*', '[m-r]*', '[s-z]*']
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup JFrog CLI
uses: jfrog/setup-jfrog-cli@279b1f629f43dd5bc658d8361ac4802a7ef8d2d5 # v4.9.1
env:
JF_URL: https://databricks.jfrog.io
with:
oidc-provider-name: github-actions
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: '22'
cache: 'npm'
- name: Configure npm for JFrog
run: jf npmc --repo-resolve=db-npm
- name: Install dependencies
run: jf npm ci
- name: Run lint and format checks
run: npm run checks -- --filter='@databricks/sdk-${{ matrix.shard }}'
typecheck:
name: Type Check (${{ matrix.shard }})
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
strategy:
fail-fast: false
matrix:
shard: ['[a-c]*', '[d-l]*', '[m-r]*', '[s-z]*']
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup JFrog CLI
uses: jfrog/setup-jfrog-cli@279b1f629f43dd5bc658d8361ac4802a7ef8d2d5 # v4.9.1
env:
JF_URL: https://databricks.jfrog.io
with:
oidc-provider-name: github-actions
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: '22'
cache: 'npm'
- name: Configure npm for JFrog
run: jf npmc --repo-resolve=db-npm
- name: Install dependencies
run: jf npm ci
- name: Run type check
run: npm run typecheck -- --filter='@databricks/sdk-${{ matrix.shard }}'
test:
name: Test (Node.js ${{ matrix.node-version }})
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ['22', '24']
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup JFrog CLI
uses: jfrog/setup-jfrog-cli@279b1f629f43dd5bc658d8361ac4802a7ef8d2d5 # v4.9.1
env:
JF_URL: https://databricks.jfrog.io
with:
oidc-provider-name: github-actions
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Configure npm for JFrog
run: jf npmc --repo-resolve=db-npm
- name: Install dependencies
run: jf npm ci
- name: Run tests
run: npm test
test-browser:
name: Test (Browser, Node.js ${{ matrix.node-version }})
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ['22', '24']
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup JFrog CLI
uses: jfrog/setup-jfrog-cli@279b1f629f43dd5bc658d8361ac4802a7ef8d2d5 # v4.9.1
env:
JF_URL: https://databricks.jfrog.io
with:
oidc-provider-name: github-actions
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Configure npm for JFrog
run: jf npmc --repo-resolve=db-npm
- name: Install dependencies
run: jf npm ci
- name: Install Playwright browsers
run: npx playwright install chromium --with-deps
- name: Run browser tests
run: npm run test:browser
build:
name: Build (Node.js ${{ matrix.node-version }}, ${{ matrix.shard }})
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ['22', '24']
shard: ['[a-c]*', '[d-l]*', '[m-r]*', '[s-z]*']
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup JFrog CLI
uses: jfrog/setup-jfrog-cli@279b1f629f43dd5bc658d8361ac4802a7ef8d2d5 # v4.9.1
env:
JF_URL: https://databricks.jfrog.io
with:
oidc-provider-name: github-actions
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Configure npm for JFrog
run: jf npmc --repo-resolve=db-npm
- name: Install dependencies
run: jf npm ci
- name: Build
run: npm run build -- --filter='@databricks/sdk-${{ matrix.shard }}'
check-licenses:
name: Check Licenses
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: '22'
- name: Verify every published package ships a LICENSE
run: node scripts/check-licenses.mjs
# This job gates merging. It depends on all CI jobs so that branch protection
# only needs to reference this single check. When adding new jobs, append
# them to the "needs" list below and branch protection stays in sync.
ci-gate:
name: CI Gate
if: always()
needs: [lint, typecheck, test, test-browser, build, check-licenses]
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
steps:
- name: Check results
run: |
results="${{ join(needs.*.result, ' ') }}"
for r in $results; do
if [ "$r" != "success" ]; then
echo "One or more CI jobs failed or were cancelled."
exit 1
fi
done
echo "All CI jobs passed."