Databricks CLI
Go to file
shreyas-goenka 569bb1cf63
Add support for multi-arch Docker images (#1362)
## Changes
This PR follows instructions in
https://goreleaser.com/cookbooks/multi-platform-docker-images/ to create
a multi-arch docker CLI image. Thus customers can simply specify `docker
pull ghcr.io/databricks/cli:latest` to pull and run the image.

The current approach uses the `docker manifest` support in goreleaser to
create a multi-arch image. This has a couple of pros and cons. TLDR; The
changes as is in the PR are good to go and very low risk. The
information provided here is just FYI.

pros: 
Fewer configurations/workflows for us to manage/maintain. Goreleaser
makes sure the correct CLI binary is in place when building the CLI and
also takes care of publishing it to the Github Container Registry.

cons:
Goreleaser only supports [docker
manifest](https://docs.docker.com/reference/cli/docker/manifest/) to
create multi-arch images. This has a few minor disadvantages:
1. `goreleaser` pushes all intermediate images (arm64 and and64 specific
images) to the registry. This is required for the manifest to reference
them. See: https://github.com/goreleaser/goreleaser/issues/2606

Note: We have a migration path here, if someday we stop publishing
intermediate images, we can simply tag the "multi-arch" image as both
`latest-amd64` and `latest-arm64`. For now, these are separate images.
see: https://github.com/databricks/cli/pkgs/container/cli

2. `docker manifest` is technically an experimental command. Though it's
been out for multiple years now and the indirect dependency by
`goreleaser` should be fine. In any case, we can migrate by moving our
docker build process off goreleaser if we need to.

## Tests
Tested manually by publishing a new release for `v0.0.0-docker` in
ghcr.io.
1. Package: https://github.com/databricks/cli/pkgs/container/cli
2. Release workflow:
https://github.com/databricks/cli/actions/runs/8689359851

Tests the image itself by running it manually:
```
➜  cli git:(feature/multi-arch-docker) docker pull ghcr.io/databricks/cli:latest
latest: Pulling from databricks/cli
bca4290a9639: Already exists 
6d445556910d: Already exists 
Digest: sha256:82eabc500b541a89182aed4d3158c955e57c1e84d9616b76510aceb1d9024425
Status: Downloaded newer image for ghcr.io/databricks/cli:latest
ghcr.io/databricks/cli:latest

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview ghcr.io/databricks/cli:latest
➜  cli git:(feature/multi-arch-docker) docker run ghcr.io/databricks/cli --version
Databricks CLI v0.0.0-docker
```
2024-04-16 11:26:19 +00:00
.codegen Bump github.com/databricks/databricks-sdk-go from 0.36.0 to 0.37.0 (#1326) 2024-04-03 10:39:53 +00:00
.github Skip building docker images in release snapshot workflow (#1367) 2024-04-16 10:10:47 +00:00
.vscode Cleanup after previous PR comments (#724) 2023-09-04 07:07:17 +00:00
bundle Transform artifact files source patterns in build not upload stage (#1359) 2024-04-12 16:00:42 +00:00
cmd Do not prefill https:// in prompt for Databricks Host (#1364) 2024-04-15 17:31:00 +00:00
docker Add docker images for the CLI (#1353) 2024-04-12 15:22:30 +00:00
docs Rename bricks -> databricks (#389) 2023-05-16 18:35:39 +02:00
internal Fixed typo in error template for auth describe (#1341) 2024-04-08 11:19:13 +00:00
libs Do not emit warning on YAML anchor blocks (#1354) 2024-04-10 09:55:02 +00:00
.codegen.json Allow referencing bundle resources by name (#872) 2024-01-04 21:04:42 +00:00
.gitattributes Update Go SDK to v0.34.0 (#1256) 2024-03-06 09:53:44 +00:00
.gitignore Add a foundation for built-in templates (#685) 2023-08-25 09:03:42 +00:00
.goreleaser.yaml Add support for multi-arch Docker images (#1362) 2024-04-16 11:26:19 +00:00
.mockery.yaml Use mockery to generate mocks compatible with testify/mock (#1190) 2024-02-08 15:18:53 +00:00
CHANGELOG.md Release v0.217.1 (#1355) 2024-04-10 11:17:21 +00:00
Dockerfile Add docker images for the CLI (#1353) 2024-04-12 15:22:30 +00:00
LICENSE Trim trailing whitespace (#1206) 2024-02-15 16:23:48 +00:00
Makefile `make snapshot` to build file in `.databricks/databricks` (#927) 2023-10-27 10:50:41 +00:00
NOTICE Allow specifying CLI version constraints required to run the bundle (#1320) 2024-04-02 12:55:21 +00:00
README.md Fix typo in README.md (#510) 2023-06-21 20:26:09 +02:00
go.mod Bump golang.org/x/sync from 0.6.0 to 0.7.0 (#1346) 2024-04-08 15:11:59 +00:00
go.sum Bump golang.org/x/sync from 0.6.0 to 0.7.0 (#1346) 2024-04-08 15:11:59 +00:00
main.go Consolidate environment variable interaction (#747) 2023-09-11 08:18:43 +00:00
main_test.go Consolidate environment variable interaction (#747) 2023-09-11 08:18:43 +00:00

README.md

Databricks CLI

build

This project is in Public Preview.

Documentation about the full REST API coverage is available in the docs folder.

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 docs pages for installation instructions.

Authentication

This CLI follows the Databricks Unified Authentication principles.

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