Skip to content

Commit c213591

Browse files
authored
Merge branch 'main' into denik/internet-sandbo
2 parents 69e2c71 + ca91a59 commit c213591

518 files changed

Lines changed: 17463 additions & 540 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agent/rules/testing.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
---
22
description: Rules for the testing strategy of this repo
3+
paths:
4+
- "**/*_test.go"
5+
- "acceptance/**"
6+
- "integration/**"
37
---
48

59
# Rules for the testing strategy of this repo
@@ -132,6 +136,12 @@ Available on `PATH` during test execution (from `acceptance/bin/`):
132136
- `gron.py`: flatten JSON into greppable discrete assignments (simpler than `jq` for searching JSON).
133137
- `jq` is also available for JSON processing.
134138

139+
**RULE: Prefer `gron.py | grep <field>` over inline `jq` paths for single-value lookups.** The gron output prints the JSON path inline, so the test log explains itself.
140+
141+
**RULE: Don't pass `--keep` to `print_requests.py` if a later `print_requests.py` call follows.** The buffer accumulates, so the second call double-prints the earlier requests.
142+
143+
**RULE: Route noisy or non-deterministic command output to `LOG.<name>` instead of `output.txt` or `/dev/null`.** `LOG.*` files are visible under `go test -v` but excluded from the diff — see `acceptance/selftest/log/`. Use `&> LOG.<name>` to capture both streams (then `contains.py` to assert invariants like `'!panic' '!internal error'`), or `2>>LOG.<name>` for cleanup-step stderr you'd otherwise drop to `/dev/null`.
144+
135145
### Update workflow
136146

137147
**RULE: Run `./task test-update` to regenerate outputs, then `./task fmt` and `./task lint`.** If fmt or lint modify files in `acceptance/`, there's an issue in the source files. Fix the source, regenerate, and verify fmt/lint pass cleanly.

.agent/skills/pr-checklist/SKILL.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ After the commands above pass, scrub the diff before pushing. The quick version:
4747

4848
Follow `.github/PULL_REQUEST_TEMPLATE.md` exactly. Use its section headings (`## Changes`, `## Why`, `## Tests`) in the same order, and fill each one in. Do not invent new sections (`## Summary`, `## Test plan`, etc.), do not drop sections, and do not leave the HTML comment placeholders in the final body — replace them with real content. If a section genuinely does not apply (e.g. a docs-only change has no test steps), say so explicitly under that heading rather than removing it.
4949

50+
**RULE: Be concise in the PR summary.** Overly verbose descriptions tend to be ignored by reviewers. Let the diff speak for itself and only describe at a high level what you have implemented/what components were touched.
51+
5052
When using `gh pr create`, read `.github/PULL_REQUEST_TEMPLATE.md` first and base `--body` on it.
5153

5254
If an agent (you) authored or substantially helped author the PR, disclose it on the last line of the body, e.g. `_This PR was written by Claude Code._` or `_PR description drafted with Claude Code._`. Be honest about the level of involvement — "written by" vs. "drafted with" vs. "reviewed by" — and keep it to a single italicized line so it doesn't crowd the template sections.

.github/OWNERS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
/libs/apps/ team:eng-apps-devex
2222
/acceptance/apps/ team:eng-apps-devex
2323

24+
# Sandbox
25+
/cmd/sandbox/ @pietern @akshaysingla-db @shuochen0311
26+
/acceptance/cmd/sandbox/ @pietern @akshaysingla-db @shuochen0311
27+
2428
# Auth
2529
/cmd/auth/ team:platform
2630
/libs/auth/ team:platform
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: Bump vulnerable dependencies
2+
3+
on:
4+
schedule:
5+
# Run daily at 05:30 UTC, just after the Go toolchain bumper.
6+
- cron: "30 5 * * *"
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: write
11+
pull-requests: write
12+
13+
# Required by setup-jfrog (GOPROXY exchange).
14+
id-token: write
15+
16+
jobs:
17+
bump-vuln-deps:
18+
runs-on:
19+
group: databricks-protected-runner-group-large
20+
labels: linux-ubuntu-latest-large
21+
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
25+
26+
- name: Setup JFrog
27+
uses: ./.github/actions/setup-jfrog
28+
29+
- name: Setup Go
30+
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
31+
with:
32+
# vulnbump lives in the tools module, which is what this job compiles.
33+
go-version-file: tools/go.mod
34+
35+
- name: Build vulnbump
36+
run: go -C tools/vulnbump build -o "$RUNNER_TEMP/vulnbump" .
37+
38+
- name: Bump vulnerable dependencies
39+
id: bump
40+
run: |
41+
set -euo pipefail
42+
43+
# govulncheck is pinned as a tool dependency in tools/go.mod; -modfile
44+
# resolves it from there while it scans the root module (the working
45+
# directory). Only the root module ships; tools/ and
46+
# bundle/internal/tf/codegen are build- and CI-only, so they are not
47+
# scanned. Its vulnerability database is fetched from vuln.go.dev at
48+
# runtime, so the pinned binary still uses the latest advisories.
49+
#
50+
# -scan module reports every advisory affecting a required module,
51+
# regardless of whether the vulnerable symbol is reachable. In JSON
52+
# mode govulncheck exits 0 on success whether or not it finds anything,
53+
# and non-zero only on a real error; a failure must abort the job
54+
# rather than be silently mistaken for "no vulnerabilities".
55+
scan="$(mktemp)"
56+
go tool -modfile=tools/go.mod govulncheck -scan module -format json > "$scan"
57+
58+
summary_file="$(mktemp)"
59+
"$RUNNER_TEMP/vulnbump" . < "$scan" > "$summary_file"
60+
61+
if git diff --quiet; then
62+
echo "No vulnerable dependencies to bump."
63+
echo "needed=false" >> "$GITHUB_OUTPUT"
64+
else
65+
echo "needed=true" >> "$GITHUB_OUTPUT"
66+
{
67+
echo "summary<<SUMMARY_EOF"
68+
cat "$summary_file"
69+
echo "SUMMARY_EOF"
70+
} >> "$GITHUB_OUTPUT"
71+
fi
72+
73+
- name: Show diff
74+
if: steps.bump.outputs.needed == 'true'
75+
run: git diff
76+
77+
- name: Create pull request
78+
if: steps.bump.outputs.needed == 'true'
79+
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
80+
with:
81+
# A fixed branch means a daily run updates the existing open PR in
82+
# place rather than opening a new one; no branch-suffix is needed.
83+
branch: auto/bump-vuln-deps
84+
commit-message: "Bump dependencies with known vulnerabilities"
85+
title: "Bump dependencies with known vulnerabilities"
86+
body: |
87+
Bump dependencies flagged by `govulncheck -scan module` to their fixed versions.
88+
89+
Each CVE links to its Go advisory page.
90+
91+
${{ steps.bump.outputs.summary }}
92+
93+
Vulnerabilities in the Go standard library are left to the `Bump Go toolchain` workflow.
94+
95+
If a bump promotes a new direct dependency, double-check its license annotation in `go.mod` and `NOTICE`.
96+
reviewers: simonfaltum,andrewnester,anton-107,denik,janniklasrose,pietern,shreyas-goenka
97+
labels: dependencies

.github/workflows/push.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,58 @@ jobs:
318318
run: |
319319
go tool -modfile=tools/task/go.mod task test-pipelines
320320
321+
test-sandbox:
322+
needs:
323+
- cleanups
324+
- testmask
325+
326+
# Only run if the target is in the list of targets from testmask
327+
if: ${{ contains(fromJSON(needs.testmask.outputs.targets), 'test-sandbox') }}
328+
name: "task test-sandbox (${{matrix.os.name}})"
329+
runs-on: ${{ matrix.os.runner }}
330+
331+
defaults:
332+
run:
333+
shell: bash
334+
335+
permissions:
336+
id-token: write
337+
contents: read
338+
339+
env:
340+
TASK_CONCURRENCY: ${{ matrix.os.name == 'windows' && '1' || '' }}
341+
342+
strategy:
343+
fail-fast: false
344+
matrix:
345+
os:
346+
- name: linux
347+
runner:
348+
group: databricks-protected-runner-group-large
349+
labels: linux-ubuntu-latest-large
350+
351+
- name: windows
352+
runner:
353+
group: databricks-protected-runner-group-large
354+
labels: windows-server-latest-large
355+
356+
- name: macos
357+
runner:
358+
labels: macos-latest
359+
360+
steps:
361+
- name: Checkout repository and submodules
362+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
363+
364+
- name: Setup build environment
365+
uses: ./.github/actions/setup-build-environment
366+
with:
367+
cache-key: test-sandbox
368+
369+
- name: Run tests
370+
run: |
371+
go tool -modfile=tools/task/go.mod task test-sandbox
372+
321373
# This job groups the result of all the above test jobs.
322374
# It is a required check, so it blocks auto-merge and the merge queue.
323375
#
@@ -333,6 +385,7 @@ jobs:
333385
- test-exp-aitools
334386
- test-exp-ssh
335387
- test-pipelines
388+
- test-sandbox
336389

337390
if: ${{ always() }}
338391
name: test-result

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ go.work.sum
7373
.codegen/openapi.json
7474

7575
.claude/settings.local.json
76+
.claude/scheduled_tasks.lock
7677
.cursor/cli.json
7778
tools/gofumpt
7879
.claude/worktrees/

.release_metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"timestamp": "2026-06-04 14:30:32+0000"
2+
"timestamp": "2026-06-10 15:15:08+0000"
33
}

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# Version changelog
22

3+
## Release v1.3.0 (2026-06-10)
4+
5+
### Notable Changes
6+
* The `direct` deployment engine is now Generally Available and the default for new deployments. To opt out, set `engine: terraform` under `bundle` in your `databricks.yml` or set `DATABRICKS_BUNDLE_ENGINE=terraform`. Existing deployments keep their current engine; see https://docs.databricks.com/aws/en/dev-tools/bundles/direct to migrate.
7+
8+
### CLI
9+
* Added the `databricks quickstart` command, a short introduction to the CLI that prints a human-friendly guide interactively and an agent-oriented version when run non-interactively ([#5464](https://github.com/databricks/cli/pull/5464)).
10+
* Add `databricks version --check` to report whether a newer CLI version is available and print the upgrade command for the detected install method ([#5469](https://github.com/databricks/cli/pull/5469)).
11+
* `databricks auth describe` now verifies credentials against both the workspace and account endpoints before reporting a failure, fixing false "Unable to authenticate" errors for account console profiles ([#5479](https://github.com/databricks/cli/issues/5479)).
12+
* `databricks auth login` no longer prompts for workspace selection when logging in to an account console host (`https://accounts.*`). Pass `--workspace-id` explicitly to store a workspace ID on such a profile ([#5504](https://github.com/databricks/cli/pull/5504)).
13+
* `databricks auth profiles --skip-validate` no longer makes any network calls; the host metadata fetch is skipped along with validation ([#5530](https://github.com/databricks/cli/pull/5530)).
14+
15+
### Bundles
16+
* Set the default `data_security_mode` to `DATA_SECURITY_MODE_AUTO` in bundle templates ([#5452](https://github.com/databricks/cli/pull/5452)).
17+
* Mark vector search index index_subtype as backend_default to prevent drift after deployment ([#5454](https://github.com/databricks/cli/pull/5454)).
18+
* `bundle deployment migrate`: handle resources added to or removed from `databricks.yml` since the last Terraform deploy ([#5463](https://github.com/databricks/cli/pull/5463)).
19+
* Add the `genie_spaces` bundle resource for managing Databricks Genie spaces as code, plus `bundle generate genie-space` to import an existing space. Direct deployment engine only ([#5282](https://github.com/databricks/cli/pull/5282)).
20+
* Fix spurious recreate of schemas and volumes whose names use mixed case ([#5531](https://github.com/databricks/cli/pull/5531)).
21+
22+
323
## Release v1.2.1 (2026-06-04)
424

525
### Bundles

NEXT_CHANGELOG.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
# NEXT CHANGELOG
22

3-
## Release v1.3.0
3+
## Release v1.4.0
44

55
### Notable Changes
66

77
### CLI
88

99
### Bundles
10-
* Set the default `data_security_mode` to `DATA_SECURITY_MODE_AUTO` in bundle templates ([#5452](https://github.com/databricks/cli/pull/5452)).
1110

1211
### Dependency updates
1312

Taskfile.yml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,25 @@ tasks:
658658
--packages ./acceptance/... \
659659
-- -timeout=${LOCAL_TIMEOUT:-30m} -run "TestAccept/pipelines"
660660
661+
test-sandbox:
662+
desc: Run sandbox unit and acceptance tests
663+
sources:
664+
- cmd/sandbox/**
665+
- acceptance/cmd/sandbox/**
666+
cmds:
667+
- |
668+
{{.GO_TOOL}} gotestsum \
669+
--format ${GOTESTSUM_FORMAT:-pkgname-and-test-fails} \
670+
--no-summary=skipped \
671+
--packages ./cmd/sandbox/... \
672+
-- -timeout=${LOCAL_TIMEOUT:-30m}
673+
- |
674+
{{.GO_TOOL}} gotestsum \
675+
--format ${GOTESTSUM_FORMAT:-pkgname-and-test-fails} \
676+
--no-summary=skipped \
677+
--packages ./acceptance/... \
678+
-- -timeout=${LOCAL_TIMEOUT:-30m} -run "TestAccept/cmd/sandbox"
679+
661680
# --- Integration tests ---
662681

663682
integration:
@@ -799,8 +818,7 @@ tasks:
799818
generates:
800819
- acceptance/bundle/refschema/out.fields.txt
801820
cmds:
802-
- cmd: go test ./acceptance -run TestAccept/bundle/refschema -update &> /dev/null
803-
ignore_error: true # -update returns non-zero exit code on changes
821+
- go test ./acceptance -run TestAccept/bundle/refschema -update
804822

805823
generate-schema:
806824
desc: Generate bundle JSON schema

0 commit comments

Comments
 (0)