Skip to content

Release @databricks/ai-sdk-provider #3

Release @databricks/ai-sdk-provider

Release @databricks/ai-sdk-provider #3

name: Release @databricks/ai-sdk-provider
on:
workflow_dispatch:
inputs:
production:
description: "Publish to npm? (If unchecked, will publish with --tag next)"
required: true
default: false
type: boolean
jobs:
release:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
environment:
name: ${{ inputs.production && 'npm' || 'npm-next' }}
url: https://www.npmjs.com/package/@databricks/ai-sdk-provider
defaults:
run:
working-directory: integrations/ai-sdk-provider
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
- name: Update npm
run: npm install -g npm@latest
- name: Install dependencies
run: rm -f package-lock.json && npm install
- name: Get package version
id: get-version
run: |
PKG_VERSION=$(node -p "require('./package.json').version")
echo "version=$PKG_VERSION" >> $GITHUB_OUTPUT
- name: Clean
run: npm run clean
- name: Build
run: npm run build
- name: Test
run: npm run test
- name: Lint
run: npm run lint
- name: Check package exports
run: npm run check-package
- name: Pack
run: npm pack
- name: Upload tarball artifact
uses: actions/upload-artifact@v5
with:
name: dist-ai-sdk-provider
path: integrations/ai-sdk-provider/*.tgz
- name: Create GitHub Release (draft)
if: inputs.production
uses: ncipollo/release-action@v1
with:
artifacts: "integrations/ai-sdk-provider/*.tgz"
draft: true
generateReleaseNotes: true
- name: Publish to npm
if: inputs.production
run: npm publish --access public --provenance --ignore-scripts
- name: Publish to npm (next tag)
if: ${{ !inputs.production }}
run: npm publish --access public --tag next --provenance --ignore-scripts
- name: Wait for registry propagation
run: sleep 15
- name: Smoke test (production)
if: inputs.production
run: |
PKG_VERSION=${{ steps.get-version.outputs.version }}
mkdir -p /tmp/smoke-test
cd /tmp/smoke-test
npm install @databricks/ai-sdk-provider@$PKG_VERSION
INSTALLED_VERSION=$(node -p "require('./node_modules/@databricks/ai-sdk-provider/package.json').version")
echo "Expected: $PKG_VERSION"
echo "Installed: $INSTALLED_VERSION"
if [ "$PKG_VERSION" != "$INSTALLED_VERSION" ]; then
echo "Version mismatch!"
exit 1
fi
echo "Smoke test passed!"
- name: Smoke test (next tag)
if: ${{ !inputs.production }}
run: |
mkdir -p /tmp/smoke-test
cd /tmp/smoke-test
npm install @databricks/ai-sdk-provider@next
INSTALLED_VERSION=$(node -p "require('./node_modules/@databricks/ai-sdk-provider/package.json').version")
echo "Installed @next version: $INSTALLED_VERSION"
echo "Smoke test passed!"
- name: Generate package link
run: |
PKG_VERSION=${{ steps.get-version.outputs.version }}
if [ "${{ inputs.production }}" == "true" ]; then
LINK="https://www.npmjs.com/package/@databricks/ai-sdk-provider/v/$PKG_VERSION"
echo "## :rocket: Package Released" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**@databricks/ai-sdk-provider v$PKG_VERSION** has been published to npm!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo ":link: [$LINK]($LINK)" >> $GITHUB_STEP_SUMMARY
else
LINK="https://www.npmjs.com/package/@databricks/ai-sdk-provider?activeTab=versions"
echo "## :test_tube: Package Released (next tag)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**@databricks/ai-sdk-provider v$PKG_VERSION** has been published to npm with --tag next!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo ":link: [$LINK]($LINK)" >> $GITHUB_STEP_SUMMARY
fi