Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 109 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
name: CD

on:
release:
types: [published]

permissions:
contents: read

jobs:
publish:
name: Publish to npm
runs-on: ubuntu-latest
timeout-minutes: 10
environment: release
# Only run if the release tag follows the package-scoped pattern: @deepnote/package-name@version
if: startsWith(github.event.release.tag_name, '@deepnote/')

steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Extract package info from tag
id: package_info
env:
TAG: ${{ github.event.release.tag_name }}
run: |
# Extract package name and version from tag (format: @deepnote/package-name@version)
if [[ ! "$TAG" =~ ^(@deepnote/[^@]+)@(.+)$ ]]; then
echo "Error: Tag must follow format @deepnote/package-name@version"
exit 1
fi

PACKAGE_NAME="${BASH_REMATCH[1]}"
TAG_VERSION="${BASH_REMATCH[2]}"

echo "package_name=$PACKAGE_NAME" >> $GITHUB_OUTPUT
echo "tag_version=$TAG_VERSION" >> $GITHUB_OUTPUT

echo "Detected package: $PACKAGE_NAME"
echo "Detected version: $TAG_VERSION"

- name: Setup Node.js
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: '18'
cache: 'yarn'
registry-url: 'https://registry.npmjs.org/'

- name: Install dependencies
run: yarn install --frozen-lockfile

- name: Validate package version
env:
PACKAGE_NAME: ${{ steps.package_info.outputs.package_name }}
TAG_VERSION: ${{ steps.package_info.outputs.tag_version }}
run: |
# Map package name to directory
case "$PACKAGE_NAME" in
"@deepnote/sql-parser") PACKAGE_PATH="packages/sql-parser" ;;
"@deepnote/sqlint") PACKAGE_PATH="packages/sqlint" ;;
"@deepnote/sql-language-server") PACKAGE_PATH="packages/server" ;;
*) echo "Error: Unknown package $PACKAGE_NAME"; exit 1 ;;
esac

if [[ ! -f "$PACKAGE_PATH/package.json" ]]; then
echo "Error: Package not found at $PACKAGE_PATH"
exit 1
fi

PACKAGE_VERSION=$(node -p "require('./$PACKAGE_PATH/package.json').version")

if [[ "$PACKAGE_VERSION" != "$TAG_VERSION" ]]; then
echo "Error: Version mismatch!"
echo " Tag version: $TAG_VERSION"
echo " Package version: $PACKAGE_VERSION"
exit 1
fi

echo "Version validation passed: $TAG_VERSION"

- name: Build dependencies and package
env:
PACKAGE_NAME: ${{ steps.package_info.outputs.package_name }}
run: |
case "$PACKAGE_NAME" in
"@deepnote/sql-parser")
cd packages/sql-parser && yarn build
;;
"@deepnote/sqlint")
cd packages/sql-parser && yarn build
cd ../sqlint && yarn build
;;
"@deepnote/sql-language-server")
yarn npm:prepublish
;;
esac

- name: Publish to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
PACKAGE_NAME: ${{ steps.package_info.outputs.package_name }}
run: |
case "$PACKAGE_NAME" in
"@deepnote/sql-parser") cd packages/sql-parser ;;
"@deepnote/sqlint") cd packages/sqlint ;;
"@deepnote/sql-language-server") cd packages/server ;;
esac
npm publish --access public
4 changes: 2 additions & 2 deletions packages/server/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "sql-language-server",
"name": "@deepnote/sql-language-server",
"version": "1.7.0",
"main": "dist/src/index.js",
"bin": {
Expand Down Expand Up @@ -48,7 +48,7 @@
"mysql2": "^2.3.0",
"node-ssh-forward": "^0.6.3",
"pg": "^8.9.0",
"sqlint": "^1.7.0",
"@deepnote/sqlint": "^1.7.0",
"sqlite3": "^5.0.3",
"vscode-languageclient": "^6.1.3",
"vscode-languageserver": "8.0.0-next.8",
Expand Down
2 changes: 1 addition & 1 deletion packages/server/src/cache.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Diagnostic as SQLintDiagnostic } from 'sqlint'
import { Diagnostic as SQLintDiagnostic } from '@deepnote/sqlint'
import { Diagnostic, Range } from 'vscode-languageserver'
import { stubLogger } from './logger'

Expand Down
2 changes: 1 addition & 1 deletion packages/server/src/createDiagnostics.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { parse, ParseError } from '@deepnote/sql-parser'
import { PublishDiagnosticsParams, Diagnostic } from 'vscode-languageserver'
import { DiagnosticSeverity } from 'vscode-languageserver-types'
import { lint, ErrorLevel, LintResult, RawConfig } from 'sqlint'
import { lint, ErrorLevel, LintResult, RawConfig } from '@deepnote/sqlint'
import cache, { LintCache } from './cache'
import { stubLogger } from './logger'

Expand Down
4 changes: 2 additions & 2 deletions packages/server/src/createServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import {
Position,
CodeActionKind,
} from 'vscode-languageserver-types'
import { lint, LintResult } from 'sqlint'
import { RawConfig } from 'sqlint'
import { lint, LintResult } from '@deepnote/sqlint'
import { RawConfig } from '@deepnote/sqlint'
import cache from './cache'
import { complete } from './complete'
import createDiagnostics from './createDiagnostics'
Expand Down
2 changes: 1 addition & 1 deletion packages/sqlint/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "sqlint",
"name": "@deepnote/sqlint",
"version": "1.7.0",
"main": "dist/src/index",
"bin": "bin/cli.js",
Expand Down
Loading