Skip to content

Commit 51d5258

Browse files
Merge remote-tracking branch 'origin/main' into jb/aitools-drop-positional
# Conflicts: # NEXT_CHANGELOG.md
2 parents 960a74d + e4a77e1 commit 51d5258

104 files changed

Lines changed: 2549 additions & 591 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.
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
name: update-schema-docs
2+
3+
# Regenerate bundle/schema/jsonschema_for_docs.json after every release and
4+
# publish it to the `docgen` branch.
5+
#
6+
# bundle/internal/schema/since_version.go derives `x-since-version` annotations
7+
# from the list of `v*` git tags that exist when the schema is generated. The
8+
# `docgen` branch is therefore stale by one release as soon as the next tag is
9+
# pushed; this workflow keeps it current.
10+
11+
on:
12+
push:
13+
tags:
14+
- "v[0-9]+.[0-9]+.[0-9]+*"
15+
16+
workflow_dispatch:
17+
18+
permissions:
19+
contents: write
20+
# Required by setup-jfrog (GOPROXY exchange).
21+
id-token: write
22+
23+
jobs:
24+
update-schema-docs:
25+
runs-on:
26+
group: databricks-protected-runner-group-large
27+
labels: linux-ubuntu-latest-large
28+
29+
steps:
30+
- name: Checkout main
31+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
32+
with:
33+
# Regen runs against `main`. fetch-depth: 0 + fetch-tags: true ensure
34+
# since_version.go can resolve `git show <tag>:bundle/schema/jsonschema.json`
35+
# for every historical release.
36+
ref: main
37+
fetch-depth: 0
38+
fetch-tags: true
39+
40+
- name: Setup JFrog
41+
uses: ./.github/actions/setup-jfrog
42+
43+
- name: Setup Go
44+
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
45+
with:
46+
go-version-file: go.mod
47+
cache-dependency-path: |
48+
go.sum
49+
bundle/internal/schema/*.*
50+
51+
- name: Determine release tag
52+
id: tag
53+
env:
54+
REF_TYPE: ${{ github.ref_type }}
55+
REF_NAME: ${{ github.ref_name }}
56+
run: |
57+
if [ "$REF_TYPE" = "tag" ]; then
58+
tag="$REF_NAME"
59+
else
60+
# git tag --list uses fnmatch (no `+`), so post-filter with grep
61+
# to match the same shape as the trigger above.
62+
tag=$(git tag --list 'v*' --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
63+
fi
64+
if [ -z "$tag" ]; then
65+
echo "Could not determine a release tag to publish for." >&2
66+
exit 1
67+
fi
68+
echo "tag=$tag" >> "$GITHUB_OUTPUT"
69+
echo "Publishing for tag $tag"
70+
71+
- name: Regenerate jsonschema_for_docs.json
72+
run: go tool -modfile=tools/task/go.mod task --force generate-schema-docs
73+
74+
# Fail loudly if regeneration touches anything other than the docs schema.
75+
# Anything else (annotations.yml, untracked files, ...) is a bug in the
76+
# generator, not something we want to silently publish.
77+
- name: Assert only jsonschema_for_docs.json changed on main
78+
run: |
79+
changed=$(git status --porcelain)
80+
expected=" M bundle/schema/jsonschema_for_docs.json"
81+
if [ -z "$changed" ]; then
82+
echo "Regeneration produced no diff against main."
83+
exit 0
84+
fi
85+
if [ "$changed" != "$expected" ]; then
86+
echo "Expected only bundle/schema/jsonschema_for_docs.json to be modified."
87+
echo "Actual git status --porcelain:"
88+
echo "$changed"
89+
exit 1
90+
fi
91+
92+
- name: Capture regenerated file
93+
run: |
94+
mkdir -p "$RUNNER_TEMP/regen"
95+
cp bundle/schema/jsonschema_for_docs.json "$RUNNER_TEMP/regen/jsonschema_for_docs.json"
96+
97+
- name: Check out docgen worktree
98+
run: |
99+
git fetch origin docgen
100+
git worktree add "$RUNNER_TEMP/docgen" origin/docgen
101+
102+
- name: Stage regenerated file on docgen
103+
working-directory: ${{ runner.temp }}/docgen
104+
run: |
105+
mkdir -p bundle/schema
106+
cp "$RUNNER_TEMP/regen/jsonschema_for_docs.json" bundle/schema/jsonschema_for_docs.json
107+
git add bundle/schema/jsonschema_for_docs.json
108+
109+
- name: Commit and push to docgen
110+
working-directory: ${{ runner.temp }}/docgen
111+
env:
112+
TAG: ${{ steps.tag.outputs.tag }}
113+
run: |-
114+
if git diff --cached --quiet; then
115+
echo "docgen already up to date for ${TAG}; nothing to commit."
116+
exit 0
117+
fi
118+
git config user.name "github-actions[bot]"
119+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
120+
git commit -m "Update jsonschema_for_docs.json for ${TAG}"
121+
git push origin HEAD:docgen

.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-04-29 13:09:01+0000"
2+
"timestamp": "2026-05-07 10:05:31+0000"
33
}

CHANGELOG.md

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

3+
## Release v0.299.1 (2026-05-07)
4+
5+
### CLI
6+
7+
* `databricks api` now works against unified hosts. Adds `--account` to scope a call to the account API and `--workspace-id` to override the workspace routing identifier per call. A `?o=<workspace-id>` query parameter on the path (the SPOG URL convention used by the Databricks UI) is also recognized as a per-call workspace override, so URLs pasted from the browser route correctly.
8+
* JSON output for single objects now uses standard `"key": "value"` spacing (matching list output and `encoding/json` defaults).
9+
10+
### Bundles
11+
* Validate that resource keys do not contain variable references ([#5169](https://github.com/databricks/cli/pull/5169))
12+
* engine/direct: Drop the deployment state entry on a recreate before the follow-up `Create`, so a `Create` failure no longer leaves a broken state with `invalid state: empty id` on the next `bundle plan` ([#5173](https://github.com/databricks/cli/pull/5173)).
13+
* `bundle debug list-targets`: skip nil entries in the targets map instead of panicking when a target is declared with a null value ([#5203](https://github.com/databricks/cli/pull/5203)).
14+
15+
### Dependency updates
16+
17+
* Added `github.com/jackc/pgx/v5` v5.9.1 (MIT) as a new dependency. Used by an experimental Postgres command added in this release; the package is dormant for users who do not invoke that command.
18+
19+
320
## Release v0.299.0 (2026-04-29)
421

522
### CLI

NEXT_CHANGELOG.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
# NEXT CHANGELOG
22

3-
## Release v0.299.1
3+
## Release v0.299.2
44

55
### CLI
66

77
* Promote the aitools skills-management surface (`install`, `update`, `uninstall`, `list`, `version`) from `databricks experimental aitools` to top-level `databricks aitools`. The old paths under `databricks experimental aitools` continue to work as silent backward-compat aliases. The `tools` subtree (`query`, `discover-schema`, `get-default-warehouse`, `statement …`) and the `skills` alias group remain under `databricks experimental aitools`.
88
* `databricks api` now works against unified hosts. Adds `--account` to scope a call to the account API and `--workspace-id` to override the workspace routing identifier per call. A `?o=<workspace-id>` query parameter on the path (the SPOG URL convention used by the Databricks UI) is also recognized as a per-call workspace override, so URLs pasted from the browser route correctly.
99
* JSON output for single objects now uses standard `"key": "value"` spacing (matching list output and `encoding/json` defaults).
10+
* `databricks auth describe` now reports where U2M (`databricks-cli`) tokens are stored: `plaintext` (`~/.databricks/token-cache.json`) or `secure` (OS keyring), and the source of the choice (env var, config setting, or default).
11+
* Marked the default profile in the interactive pickers shown by `databricks auth switch`, `databricks auth logout`, `databricks auth token`, and `databricks auth login`, and moved it to the top of the list. `databricks auth login` and `databricks auth logout` now offer the same selectors as `databricks auth token` and `databricks auth switch` respectively.
1012

1113
### Bundles
12-
* Validate that resource keys do not contain variable references ([#5169](https://github.com/databricks/cli/pull/5169))
13-
* engine/direct: Drop the deployment state entry on a recreate before the follow-up `Create`, so a `Create` failure no longer leaves a broken state with `invalid state: empty id` on the next `bundle plan` ([#5173](https://github.com/databricks/cli/pull/5173)).
14-
* engine/direct: vector search endpoints: trigger recreate when endpoint is recreated out of band ([#5127](https://github.com/databricks/cli/pull/5127))
14+
15+
* Propagate authentication environment (including `DATABRICKS_CONFIG_PROFILE`) to the `experimental.python` subprocess so bundle validate/deploy no longer fails with a multi-profile host ambiguity error when several profiles in `~/.databrickscfg` share the same host.
16+
* Fixed `--force-pull` on `bundle summary` and `bundle open` so the flag bypasses the local state cache and reads state from the workspace.
1517

1618
### Dependency updates
1719

18-
* Added `github.com/jackc/pgx/v5` v5.9.1 (MIT) as a new dependency. Used by an experimental Postgres command added in this release; the package is dormant for users who do not invoke that command.
20+
* Bump Go toolchain to 1.25.10 ([#5213](https://github.com/databricks/cli/pull/5213)).

acceptance/bin/echo_browser.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Fake browser that prints the URL it was asked to open and exits.
4+
5+
Used by acceptance tests that exercise commands which call libs/browser.Open
6+
but don't need to follow the URL (unlike auth tests, which use browser.py to
7+
close the OAuth callback loop). Setting BROWSER=echo_browser.py is portable
8+
across darwin/linux/windows because libs/browser routes through libs/exec.
9+
10+
Usage: echo_browser.py <url>
11+
"""
12+
13+
import sys
14+
15+
if len(sys.argv) < 2:
16+
sys.stderr.write("Usage: echo_browser.py <url>\n")
17+
sys.exit(1)
18+
19+
print(sys.argv[1])

acceptance/bundle/invariant/continue_293/test.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ EnvMatrixExclude.no_vector_search_endpoint = ["INPUT_CONFIG=vector_search_endpoi
1111

1212
# Dotted pipeline configuration keys are not supported on v0.293.0
1313
EnvMatrixExclude.no_pipeline_config_dots = ["INPUT_CONFIG=pipeline_config_dots.yml.tmpl"]
14+
15+
# The 1000-task scale case is covered by no_drift. Running it here adds ~1.5 min
16+
# per variant (two full deploys at 1000 tasks) without incremental coverage.
17+
EnvMatrixExclude.no_pydabs_1000_tasks = ["INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl"]

acceptance/bundle/invariant/migrate/test.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ EnvMatrixExclude.no_grant_ref = ["INPUT_CONFIG=schema_grant_ref.yml.tmpl"]
1919

2020
# SQL warehouses currently failing with migration with permanent drift. TODO: fix this.
2121
EnvMatrixExclude.no_sql_warehouse = ["INPUT_CONFIG=sql_warehouse.yml.tmpl"]
22+
23+
# The 1000-task scale case is covered by no_drift. Running it here adds ~1.5 min
24+
# per variant (deploy + migrate + plan at 1000 tasks) without incremental coverage.
25+
EnvMatrixExclude.no_pydabs_1000_tasks = ["INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl"]

acceptance/bundle/open/open

Lines changed: 0 additions & 2 deletions
This file was deleted.

acceptance/bundle/open/out.test.toml

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

acceptance/bundle/open/output.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ Deploying resources...
1717
Updating deployment state...
1818
Deployment complete!
1919

20-
=== Modify PATH so that real open is not run
21-
=== open after deployment. This will fail to open browser and complain, that's ok, we only want the message
20+
=== Use a fake browser that just prints the URL it would have opened
21+
=== open after deployment
2222
>>> [CLI] bundle open foo
2323
Opening browser at [DATABRICKS_URL]/jobs/[NUMID]?o=[NUMID]
24-
Error: exec: "open": cannot run executable found relative to current directory
24+
[DATABRICKS_URL]/jobs/[NUMID]?o=[NUMID]
2525

2626
=== test auto-completion handler
2727
>>> [CLI] __complete bundle open ,

0 commit comments

Comments
 (0)