Skip to content

Generate warning during bundle generate in case of missing include - #5868

Merged
janniklasrose merged 9 commits into
mainfrom
janniklasrose/bundle-generate-warn-missing-include
Jul 13, 2026
Merged

Generate warning during bundle generate in case of missing include#5868
janniklasrose merged 9 commits into
mainfrom
janniklasrose/bundle-generate-warn-missing-include

Conversation

@janniklasrose

@janniklasrosejanniklasrose commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Changes

bundle generate now emits a warning when the generated config file lands in a directory that no pattern in the root databricks.yml's include: section matches. Such a file is written to disk but silently ignored on deploy, so generate is effectively a no-op without a matching include: entry.

Why

Prevent user error/unexpected behaviour.

Design decisions

  • The check reuses the raw include patterns captured at load, not a re-read of databricks.yml. During config load, the pre-existing ProcessRootIncludesreplacesConfig.Include with the expanded list of loaded files, discarding the original patterns. It now records them on the bundle via newly-added SetIncludePatterns right before overwriting, and membership can be tested through the new Bundle.IsFileIncluded — so the check touches no disk and can't drift from the loader.
  • The logic lives on bundle, not config. Matching is filesystem resolution: it globs patterns against BundleRootPath, which only exists at the Bundle layer. config.Root is deliberately filesystem-agnostic (it just serializes to/from YAML). The patterns are config, but the operation is not.
  • IsFileIncluded globs against files currently on disk. The check runs after the file is written, so a freshly generated file is matched only if it now satisfies a pattern — exactly the question we're asking.
  • Nested includes are intentionally treated as "not included". DABs only honors the include section of the root databricks.yml; an include in any other file is ignored (with its own warning [ref]). So a file reachable only via a nested include genuinely won't deploy, and warning about it is correct.

Tests

  • bundle.IsFileIncluded unit test (glob, exact match, non-recursive, absolute pattern ignored, empty include).
  • Acceptance test acceptance/bundle/generate/include_warning covering matched (no warning) and unmatched (warning) cases; existing generate acceptance outputs updated.

This pull request and its description were written by Isaac, an AI coding agent.

…generate-warn-missing-include
# Conflicts:
#	NEXT_CHANGELOG.md
#	acceptance/bundle/generate/spark_python_task_job/output.txt
Move the changelog entry from NEXT_CHANGELOG.md into a .nextchanges/ fragment
following the migration on main (#5534).
Co-authored-by: Isaac
ProcessRootIncludes overwrites Config.Include with the expanded list of loaded
files, so the bundle generate include check previously re-read and re-parsed
databricks.yml to recover the raw patterns.
Instead, ProcessRootIncludes now records the raw patterns on the bundle via
SetIncludePatterns before overwriting them, and membership is exposed via
Bundle.IsFileIncluded. warnIfNotIncluded no longer touches disk.
Co-authored-by: Isaac
@janniklasrose
janniklasrose marked this pull request as ready for review July 12, 2026 06:59
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 34bf80e

Run: 29285213688

Env💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
💚​aws linux4423010845:08
💚​aws windows4423210827:10
💚​aws-ucws linux4431610015:26
💚​aws-ucws windows443189997:15
💚​azure linux4423010835:07
💚​azure windows4423210817:05
💚​azure-ucws linux443189986:05
💚​azure-ucws windows443209967:11
💚​gcp linux4422910854:48
💚​gcp windows4423110836:58
8 interesting tests: 4 RECOVERED, 4 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
💚​TestAccept💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🙈​TestAccept/bundle/invariant/no_drift🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestFetchRepositoryInfoAPI_FromRepo💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/root💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/subdir💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
Top 10 slowest tests (at least 2 minutes):
durationenvtestname
6:17aws windowsTestAccept
6:12aws-ucws windowsTestAccept
6:09azure windowsTestAccept
6:05gcp windowsTestAccept
6:03azure-ucws windowsTestAccept
3:01azure linuxTestAccept
3:00aws linuxTestAccept
2:58azure-ucws linuxTestAccept
2:52gcp linuxTestAccept
2:46aws-ucws linuxTestAccept

@@ -0,0 +1 @@
* `bundle generate` now warns when the generated configuration file is not matched by any pattern in the `include` section of `databricks.yml` ([#5868](https://github.com/databricks/cli/pull/5868)).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still need the * prefix or the PR markdown link suffix?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prefix is optional (gets added if missing) but we can be stricter (and if you want multiple lines you just add multiple files).

PR link suffix could be inferred by filename but not everyone will use the PR number as filename (especially if creating it before raising the PR)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought there was some code to turn #1234 into a markdown link somewhere.

If not then disregard.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is task links, but it only runs local - if you don't commit it the checks task will fail. We don't rewrite commits in CI currently. See #5912

@@ -0,0 +1 @@
* `bundle generate` now warns when the generated configuration file is not matched by any pattern in the `include` section of `databricks.yml` ([#5868](https://github.com/databricks/cli/pull/5868)).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought there was some code to turn #1234 into a markdown link somewhere.

If not then disregard.

@janniklasrose
janniklasrose added this pull request to the merge queueJul 13, 2026
Merged via the queue into main with commit 56ec1f5Jul 13, 2026
24 checks passed
@janniklasrose
janniklasrose deleted the janniklasrose/bundle-generate-warn-missing-include branch July 13, 2026 21:48
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 56ec1f5

Run: 29287716668

Env❌​FAIL🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
💚​aws linux44529101343:47
🔄​aws windows234485102651:47
🔄​aws-ucws linux65299882378:14
🔄​aws-ucws windows342944841100:45
🔄​azure linux444519101444:07
💚​azure windows44480102748:54
🔄​azure-ucws linux35289685873:51
🔄​azure-ucws windows46283687693:37
🔄​gcp linux334512101950:51
❌​gcp windows22134463101863:18
48 interesting tests: 22 FAIL, 20 flaky, 3 RECOVERED, 2 SKIP, 1 KNOWN
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept💚​R🔄​f💚​R🔄​f💚​R💚​R🔄​f💚​R🔄​f🟨​K
🔄​TestAccept/bundle/config-remote-sync/cli_defaults✅​p🙈​s✅​p🙈​s🔄​f🙈​s✅​p🙈​s✅​p🙈​s
🔄​TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/deploy/spark-jar-task✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/invariant/migrate🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p🔄​f🙈​s🙈​s
🔄​TestAccept/bundle/invariant/migrate/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=job_with_depends_on.yml.tmpl✅​p✅​p✅​p🔄​f
🔄​TestAccept/bundle/invariant/no_drift🙈​S🙈​S🔄​f💚​R🙈​S🙈​S💚​R💚​R🙈​S🙈​S
🔄​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=model_serving_endpoint.yml.tmpl/READPLAN=🔄​f✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/dashboards/change-name✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/jobs/alert-task✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/jobs/alert-task/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p
❌​TestAccept/bundle/resources/jobs/double-underscore-keys✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/resources/jobs/double-underscore-keys/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/resources/jobs/double-underscore-keys/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/resources/jobs/fail-on-active-runs✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/resources/jobs/fail-on-active-runs/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/resources/jobs/shared-root-path✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/resources/jobs/shared-root-path/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
🔄​TestAccept/bundle/resources/postgres_synced_tables/recreate🙈​s🙈​s🔄​f✅​p🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
🔄​TestAccept/bundle/resources/postgres_synced_tables/recreate/DATABRICKS_BUNDLE_ENGINE=terraform🔄​f✅​p
🔄​TestAccept/bundle/resources/schemas/auto-approve🙈​s🙈​s✅​p✅​p🙈​s🙈​s🔄​f✅​p🙈​s🙈​s
🔄​TestAccept/bundle/resources/schemas/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🔄​f✅​p
🔄​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S💚​R🔄​f🙈​S🙈​S💚​R💚​R🙈​S🙈​S
🔄​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name/DATABRICKS_BUNDLE_ENGINE=direct✅​p🔄​f✅​p✅​p
🙈​TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
❌​TestAccept/bundle/templates/default-python/combinations/serverless✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=no/PY=no/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=no/PY=no/READPLAN=1🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=no/PY=yes/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=no/PY=yes/READPLAN=1🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=yes/PY=no/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=yes/PY=no/READPLAN=1🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=yes/PY=yes/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/NBOOK=yes/PY=yes/READPLAN=1🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/NBOOK=no/PY=no/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/NBOOK=no/PY=no/READPLAN=1🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/NBOOK=no/PY=yes/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/NBOOK=no/PY=yes/READPLAN=1🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/NBOOK=no/PY=yes/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
❌​TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/NBOOK=yes/PY=yes/READPLAN=🙈​s🙈​s✅​p✅​p🙈​s🙈​s✅​p✅​p🙈​s❌​F
🔄​TestAccept/bundle/templates/default-python/integration_classic✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p
🔄​TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_BUNDLE_ENGINE=direct/UV_PYTHON=3.13✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestFetchRepositoryInfoAPI_FromRepo💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/root💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/subdir💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
12:46gcp windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
11:42gcp linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:22aws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:45gcp linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:10gcp windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:08gcp linuxTestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
7:57aws linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:54aws-ucws linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:47azure windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:34gcp linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
7:30gcp windowsTestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
7:29aws linuxTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
7:29gcp linuxTestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
7:27aws-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:22azure-ucws linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:18azure-ucws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:15azure linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:09aws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:08azure-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
7:08aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
7:05aws-ucws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:00aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
6:57aws-ucws linuxTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
6:53azure-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
6:45aws-ucws windowsTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1
6:45aws-ucws windowsTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
6:43aws linuxTestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
6:34aws-ucws windowsTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=
6:30azure linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:27gcp linuxTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
6:25azure-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
6:24azure-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:02aws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:00azure windowsTestAccept
5:57azure linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:49gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
5:44aws windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:44aws-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct
5:43aws-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:42aws-ucws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
5:41azure-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct
5:18gcp windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:11azure windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
5:09gcp windowsTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
5:06azure-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
4:57gcp windowsTestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct
4:47aws windowsTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
4:42gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:42azure-ucws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
4:33gcp linuxTestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct

deco-sdk-taggingBot added a commit that referenced this pull request Jul 15, 2026
## Release v1.8.0
### Notable Changes
* Auto-migrate a bundle from terraform to the direct engine when `bundle.engine` is `"direct"` (or `DATABRICKS_BUNDLE_ENGINE=direct`) and the post-deploy dry-run migration is clean; a warning is emitted if the dry-run surfaces errors or warnings so the automatic migration is skipped.
### CLI
* experimental `ssh connect`: bare `python`/`pip` in an interactive session now resolve to the environment interpreter (`$DATABRICKS_VIRTUAL_ENV`) instead of the system or cluster-libraries interpreter, so packages installed in the environment are importable without extra setup. The interactive shell is now non-login (`bash -i`) and the server seeds a `~/.bashrc` snippet that re-prepends the environment's bin directory to `PATH` ([#5888](#5888)).
* When Claude Code runs the CLI without the Databricks AI tooling installed, the CLI now prints a one-line recommendation on stderr to run `databricks aitools install`. The recommendation is shown at most once per hour per Claude session, and never for human callers or `aitools` commands.
* Fixed `databricks auth describe` misattributing a profile selected via `DATABRICKS_CONFIG_PROFILE` as `(from bundle)` when run inside a bundle root ([#5904](#5904)).
### Bundles
* `bundle generate` now warns when the generated configuration file is not matched by any pattern in the `include` section of `databricks.yml` ([#5868](#5868)).
* direct: Match UC Auto Upgrade managed property defaults with a wildcard pattern instead of enumerating each key ([#5877](#5877)).
* Recognize `ssh://` template URLs in `databricks bundle init` ([#5891](#5891)).
* `databricks bundle init` now reports an actionable error when given a template URL with an unsupported protocol (`http://`, `git://`, `ftp://`, `ftps://`) instead of failing with a confusing "not a bundle template" message ([#5902](#5902)).
* Added an `env:` section to `scripts.<name>` for declaring environment variables that may reference `${bundle.*}`, `${workspace.*}`, and `${var.*}` ([#4179](#4179), [#5299](#5299)).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@janniklasrose@eng-dev-ecosystem-bot@pietern