Databricks CLI
Go to file
shreyas-goenka 06b71fe5da
Add synchronous logger for telemetry (#2432)
## Changes
This PR adds a synchronous telemetry logger for the CLI with a max
timeout of 3 seconds. Due to the 3-second timeout configuration, this is
only meant to be used in long-running commands.

This is a short-term solution. Eventually, we'd like to transition to a
daemon process to upload the telemetry logs to amortise the costs of
configuring authentication and maintaining a warm pool of HTTP
connections, as well as a better UX for the end user.

Note that users can set the `DATABRICKS_CLI_DISABLE_TELEMETRY`
environment variable to disable telemetry collection.

## Why
To collect telemetry, which was previously inaccessible to us, and
answer questions like which templates customers like to use and which
DABs features would be safe to deprecate.

## Tests
Unit and acceptance tests. 

Also manually verified that the telemetry upload works:
```
(artifact-playground) ➜  cli git:(sync-logger) cli selftest send-telemetry --debug
15:58:20 Info: start pid=40386 version=0.0.0-dev+a2825ca89a23 args="cli, selftest, send-telemetry, --debug"
15:58:20 Debug: Loading DEFAULT profile from /Users/shreyas.goenka/.databrickscfg pid=40386 sdk=true
15:58:20 Info: completed execution pid=40386 exit_code=0
15:58:21 Debug: POST /telemetry-ext
> {
>   "items": null,
>   "protoLogs": [
>     "{\"frontend_log_event_id\":\"82d29b3a-d5ff-48f3-8a21-dae6e08d2999\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)",
>     "{\"frontend_log_event_id\":\"d6be8220-7db8-45d9-97d6-4c09c25e2664\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)"
>   ],
>   "uploadTime": 1741186700967
> }
< HTTP/2.0 200 OK
< {
<   "errors": null,
<   "numProtoSuccess": 2,
<   "numSuccess": 0
< } pid=40386 sdk=true
```
2025-03-12 13:05:10 +00:00
.codegen Move `WorkspaceClient` to `libs/command` (#2444) 2025-03-07 16:47:19 +00:00
.github Update uv to 0.6.5 (#2449) 2025-03-11 10:30:03 +00:00
.vscode Update VSCode settings to resolve files named `script` as shell scripts (#2419) 2025-03-05 10:02:40 +00:00
acceptance Add synchronous logger for telemetry (#2432) 2025-03-12 13:05:10 +00:00
bundle Adapt docsgen output for new documentation framework (#2262) 2025-03-07 18:11:08 +00:00
cmd Add synchronous logger for telemetry (#2432) 2025-03-12 13:05:10 +00:00
docker Followup improvements to the Docker setup script (#1369) 2024-04-18 20:52:11 +00:00
docs Removed autogenerated docs for the CLI commands (#1392) 2024-04-23 13:25:25 +00:00
experimental/python Setup CI for Python code (#2448) 2025-03-11 10:29:36 +00:00
integration Convert python_wheel_test.go to acceptance test (#2471) 2025-03-12 10:51:31 +00:00
internal Add the `auth.ProcessEnv` function (#2404) 2025-03-04 14:47:11 +00:00
libs Add synchronous logger for telemetry (#2432) 2025-03-12 13:05:10 +00:00
.codegen.json Enable Automated tagging workflow (#2361) 2025-03-06 15:30:01 +00:00
.git-blame-ignore-revs Add .git-blame-ignore-revs with linter-related mass change commits (#2000) 2024-12-12 10:54:00 +01:00
.gitattributes Bump github.com/databricks/databricks-sdk-go from 0.56.1 to 0.57.0 (#2321) 2025-02-10 12:50:52 +00:00
.gitignore add .idea to .gitignore (#2375) 2025-02-25 12:17:50 +00:00
.golangci.yaml Fix incorrect TestingT.Errorf usage and enable linting for this (#2182) 2025-01-20 08:07:42 +00:00
.goreleaser.yaml Address goreleaser deprecation warning (#1872) 2024-10-31 12:09:23 +00:00
.mockery.yaml Use mockery to generate mocks compatible with testify/mock (#1190) 2024-02-08 15:18:53 +00:00
.package.json Enable Automated tagging workflow (#2361) 2025-03-06 15:30:01 +00:00
CHANGELOG.md [Release] Release v0.243.0 (#2435) 2025-03-05 15:42:40 +00:00
Dockerfile Followup improvements to the Docker setup script (#1369) 2024-04-18 20:52:11 +00:00
LICENSE Trim trailing whitespace (#1206) 2024-02-15 16:23:48 +00:00
Makefile Disable ruff cache (#2430) 2025-03-05 08:45:51 +01:00
NEXT_CHANGELOG.md Fixed "can't evaluate field Name in type interface{}" for `databricks queries list` (#2451) 2025-03-10 08:05:15 +00:00
NOTICE acc: Allow mixing custom stubs with default server impl (#2334) 2025-02-11 15:03:41 +00:00
README.md Add privacy notice to README (#1841) 2024-10-28 18:19:55 +00:00
go.mod build(deps): bump golang.org/x/text from 0.22.0 to 0.23.0 (#2456) 2025-03-11 13:38:14 +01:00
go.sum build(deps): bump golang.org/x/text from 0.22.0 to 0.23.0 (#2456) 2025-03-11 13:38:14 +01:00
main.go Add regression tests for CLI error output (#1566) 2024-07-10 06:38:06 +00:00
main_test.go Fix ability to import the CLI repository as module (#1671) 2024-08-12 14:20:04 +00:00
ruff.toml Enable Automated tagging workflow (#2361) 2025-03-06 15:30:01 +00:00
tagging.py Enable Automated tagging workflow (#2361) 2025-03-06 15:30:01 +00:00

README.md

Databricks CLI

build

This project is in Public Preview.

Documentation is available at https://docs.databricks.com/dev-tools/cli/databricks-cli.html.

Installation

This CLI is packaged as a dependency-free binary executable and may be located in any directory. See https://github.com/databricks/cli/releases for releases and the Databricks documentation for detailed information about installing the CLI.


Homebrew

We maintain a Homebrew tap for installing the Databricks CLI. You can find instructions for how to install, upgrade and downgrade the CLI using Homebrew here.


Docker

You can use the CLI via a Docker image by pulling the image from ghcr.io. You can find all available versions at: https://github.com/databricks/cli/pkgs/container/cli.

docker pull ghcr.io/databricks/cli:latest

Example of how to run the CLI using the Docker image. More documentation is available at https://docs.databricks.com/dev-tools/bundles/airgapped-environment.html.

docker run -e DATABRICKS_HOST=$YOUR_HOST_URL -e DATABRICKS_TOKEN=$YOUR_TOKEN ghcr.io/databricks/cli:latest current-user me

Authentication

This CLI follows the Databricks Unified Authentication principles.

You can find a detailed description at https://github.com/databricks/databricks-sdk-go#authentication.

Privacy Notice

Databricks CLI use is subject to the Databricks License and Databricks Privacy Notice, including any Usage Data provisions.