Skip to content

Make bundle.engine setting higher priority than DATABRICKS_BUNDLE_ENGINE - #4782

Merged
denik merged 6 commits into
mainfrom
denik/DATABRICKS_BUNDLE_ENGINE_DEFAULT
Mar 18, 2026
Merged

Make bundle.engine setting higher priority than DATABRICKS_BUNDLE_ENGINE#4782
denik merged 6 commits into
mainfrom
denik/DATABRICKS_BUNDLE_ENGINE_DEFAULT

Conversation

@denik

@denikdenik commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Changes

  • Final priority: existing state > bundle.engine > DATABRICKS_BUNDLE_ENGINE
  • Simplify API, merge SettingFromEnv into ResolveEngineSetting

Why

This makes it possible to use env var as a default but let users opt our per-bundle or per-target level via config setting.

denikand others added 4 commits March 18, 2026 11:28
Add a new environment variable DATABRICKS_BUNDLE_ENGINE_DEFAULT that sets
the default deployment engine. Priority order:
state > DATABRICKS_BUNDLE_ENGINE > config > DATABRICKS_BUNDLE_ENGINE_DEFAULT
…tting
Remove the two-phase design where SettingFromEnv read env vars before
bundle load and ResolveEngineSetting merged them later. ResolveEngineSetting
now takes ctx and reads env vars directly, eliminating SettingFromEnv,
defaultFromEnv, and the DefaultType field from EngineSetting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The single-directory test was broken: the first deploy (terraform) created
remote state on the mock server, which persisted after `rm -fr .databricks`.
The second deploy found that remote state and the state-priority logic
overrode DATABRICKS_BUNDLE_ENGINE_DEFAULT=direct, causing it to use terraform.
Split into two subdirectories (direct/ and terraform/), each running a
single first deploy with no prior state. Each gets a fresh mock server.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rity
Remove the DATABRICKS_BUNDLE_ENGINE_DEFAULT env var entirely.
Change engine resolution priority to: bundle.engine config >
DATABRICKS_BUNDLE_ENGINE env var > built-in default (terraform).
This means an explicit bundle config always wins, and the env var
acts as a fallback when no config is present.
A side-effect of the new priority: an invalid DATABRICKS_BUNDLE_ENGINE
is silently ignored when bundle.engine is set in config.
Remove the engine_default acceptance tests (tested the removed env var).
Update engine_mismatch to drop cases that tested env-var-overrides-config
(no longer possible) and add a case showing the invalid env var is ignored
when config is set. Remove bundle validate from bad_env since ResolveEngineSetting
is not called during validate.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@denik
deniktemporarily deployed to test-trigger-is March 18, 2026 11:37 — with GitHub Actions Inactive
@denik
denik marked this pull request as ready for review March 18, 2026 11:42
@denik
deniktemporarily deployed to test-trigger-is March 18, 2026 11:44 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Mar 18, 2026

Copy link
Copy Markdown
Collaborator

Commit: 709267d

Run: 23243058529

Env🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
💚​aws linux892687976:20
💚​aws windows892707954:55
🔄​aws-ucws linux2793647128:35
🔄​aws-ucws windows2793667107:36
💚​azure linux2112717956:37
💚​azure windows2112737936:00
💚​azure-ucws linux2113707088:13
🔄​azure-ucws windows21113717067:23
💚​gcp linux2112677985:21
💚​gcp windows2112697965:28
18 interesting tests: 9 SKIP, 7 RECOVERED, 2 flaky
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🔄​TestAccept💚​R💚​R🔄​f🔄​f💚​R💚​R💚​R🔄​f💚​R💚​R
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
🙈​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/ssh/connect-serverless-gpu🙈​s🙈​s🔄​f🔄​f🙈​s🙈​s✅​p🔄​f🙈​s🙈​s
💚​TestAccept/ssh/connection💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
Top 20 slowest tests (at least 2 minutes):
durationenvtestname
4:00azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:50azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:48gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:46azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:39gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:19aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:14gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:06azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:04gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:00aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:55aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:50aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:49aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:46aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:43aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:18azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:15azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:14aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:13azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:13azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

@denik
denik enabled auto-merge March 18, 2026 13:12
@denik
denik added this pull request to the merge queueMar 18, 2026
Merged via the queue into main with commit 0ea2dd3Mar 18, 2026
23 checks passed
@denik
denik deleted the denik/DATABRICKS_BUNDLE_ENGINE_DEFAULT branch March 18, 2026 13:27
@pieternpietern mentioned this pull request Mar 18, 2026
1 task
pietern added a commit that referenced this pull request Mar 18, 2026
## Summary
* Add missing changelog entries for CLI and Bundles changes since
v0.294.0
* Fix `bundle.engine` priority description (config takes precedence over
env var per #4782)
* Add docs link for direct deployment engine
## Test plan
- [ ] Review changelog entries for accuracy
This pull request was AI-assisted by Isaac.
deco-sdk-taggingBot added a commit that referenced this pull request Mar 18, 2026
## Release v0.295.0
### Notable Changes
* Databricks Asset Bundles have been renamed to Declarative Automation Bundles (DABs). This is a non-breaking change; no code or configuration modifications are required. See the [FAQ](https://docs.databricks.com/aws/en/dev-tools/bundles/faqs#why-was-databricks-asset-bundles-renamed-to-declarative-automation-bundles).
* Add `bundle.engine` config setting to select the deployment engine (`terraform` or [`direct`](https://docs.databricks.com/aws/en/dev-tools/bundles/direct)). The `bundle.engine` setting takes precedence over the `DATABRICKS_BUNDLE_ENGINE` environment variable. When the configured engine doesn't match existing deployment state, a warning is issued and the existing engine is used ([#4749](#4749), [#4782](#4782))
### CLI
* Add `databricks auth switch` command for setting the default profile ([#4651](#4651))
* Add positional argument support to `auth logout` ([#4744](#4744))
* Strip trailing slash from host in `auth login`, `auth token`, and `configure` commands ([#4633](#4633))
### Bundles
* Standardize `personal_schemas` enum across bundle templates ([#4401](#4401))
* engine/direct: Fix permanent drift on experiment name field ([#4627](#4627))
* engine/direct: Fix permissions state path to match input config schema ([#4703](#4703))
* Add default project name and success message to default-scala template ([#4661](#4661))
* Skip enum validation for unresolved variable references ([#4752](#4752))
* engine/direct: Support references to/from grants ([#4774](#4774))
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Commit: 0ea2dd3

Run: 23247066491

Env💥​PANIC❌​FAIL🟨​KNOWN🤯​MISS🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
❌​aws linux371949675064:15
❌​aws windows371946875859:03
❌​aws-ucws linux233251769600119:26
❌​aws-ucws windows2313191728611150:06
❌​azure linux31211149774854:00
❌​azure windows3111147175653:11
💥​azure-ucws linux1534410719601120:00
❌​azure-ucws windows216310712614120:26
❌​gcp linux3111148275662:04
❌​gcp windows3111145476456:57
75 interesting tests: 33 MISS, 13 flaky, 12 RECOVERED, 9 KNOWN, 6 FAIL, 1 PANIC, 1 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🤯​M🟨​K🟨​K🟨​K
❌​TestAccept/bundle/apps/job_permissions❌​F❌​F🔄​f🔄​f❌​F❌​F❌​F🔄​f❌​F❌​F
❌​TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F🔄​f✅​p❌​F❌​F✅​p🔄​f❌​F❌​F
❌​TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F✅​p🔄​f❌​F❌​F❌​F✅​p❌​F❌​F
🔄​TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/integration_whl/custom_params✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p
❌​TestAccept/bundle/invariant/no_drift🙈​s🙈​s❌​F❌​F🙈​s🙈​s❌​F❌​F🙈​s🙈​s
❌​TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=schema_grant_ref.yml.tmpl❌​F❌​F❌​F❌​F
🤯​TestAccept/bundle/resources/clusters/run/spark_python_task✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-embed-credentials✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-embed-credentials/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-embed-credentials/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-name✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-parent-path✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-parent-path/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/change-parent-path/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/dataset-catalog-schema✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/dataset-catalog-schema/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/dataset-catalog-schema/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/delete-trashed-out-of-band✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/delete-trashed-out-of-band/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/delete-trashed-out-of-band/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/destroy✅​p✅​p✅​p✅​p🔄​f✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/destroy/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p🔄​f✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/destroy/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/detect-change✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/detect-change/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/detect-change/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/generate_inplace✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/generate_inplace/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/generate_inplace/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/nested-folders✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
💥​TestAccept/bundle/resources/dashboards/nested-folders/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p💥​P✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/nested-folders/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/simple✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🤯​TestAccept/bundle/resources/dashboards/simple/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M✅​p✅​p✅​p
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🔄​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S💚​R🔄​f🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R🔄​f
💚​TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
🔄​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S💚​R🔄​f🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=direct💚​R🔄​f
💚​TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
🔄​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S💚​R🔄​f🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R🔄​f
💚​TestAccept/bundle/resources/postgres_endpoints/recreate🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🟨​K🟨​K🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/postgres_projects/update_display_name/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K
💚​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S💚​R💚​R🙈​S🙈​S💚​R💚​R🙈​S🙈​S
💚​TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
❌​TestAccept/ssh/connect-serverless-gpu🙈​s🙈​s🔄​f🔄​f🙈​s🙈​s❌​F🔄​f🙈​s🙈​s
🔄​TestAccept/ssh/connection💚​R💚​R💚​R💚​R💚​R💚​R💚​R🔄​f💚​R💚​R
🤯​TestDbrAcceptance🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
🤯​TestInprocessMode🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
16:34azure-ucws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
14:54aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
14:35aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
14:18gcp linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
12:20aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
11:02gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
10:53gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
10:47aws-ucws linuxTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl
10:40azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
10:31gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:24azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
10:22azure-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
10:10aws-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
9:54azure-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
9:53gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
9:24azure-ucws linuxTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_15.4_LTS
9:21gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
9:20aws-ucws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
9:20azure linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
9:11azure-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
9:08aws windowsTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
9:06azure-ucws windowsTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
9:01aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:56azure windowsTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
8:55aws-ucws windowsTestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=direct
8:52aws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:48azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:44azure-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:39azure-ucws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:38gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:38aws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
8:35aws windowsTestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=direct
8:34gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
8:33gcp windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
8:32aws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:29azure-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
8:25aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:25gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:08gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
8:07aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:06aws linuxTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
8:05gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:05azure-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
8:05aws-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
8:01gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
7:53azure-ucws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
7:53gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:52aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
7:50gcp windowsTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
7:49aws windowsTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS

github-merge-queueBot pushed a commit that referenced this pull request Mar 18, 2026
## Why
The CLI's CODEOWNERS catch-all assigns 6 people to every PR outside a
few narrow paths. This creates review noise and diffuses responsibility.
We want targeted reviewer suggestions based on who actually worked on
the changed code recently.
## Changes
Before: Every PR touching core code auto-assigns all 6 CODEOWNERS. No
signal about who is best suited to review.
Now: A new GitHub Action analyzes git history of the changed files and
posts a PR comment with two sections:
- **Suggested reviewers** (1-3 people best suited based on
recency-weighted git history)
- **Eligible reviewers** (everyone from CODEOWNERS who could review,
minus the suggested ones)
This is additive only. CODEOWNERS and auto-assign stay unchanged.
How it works:
- Triggers on PR open, synchronize, and ready-for-review (skips drafts
and fork PRs)
- Classifies changed files by type (source=1.0, tests=0.3,
acceptance=0.2, generated=0.0)
- Scores contributors using recency-weighted commit history (half-life
150 days)
- Resolves git author names to GitHub logins via the GitHub API (no
hardcoded alias table to maintain)
- Parses `.github/CODEOWNERS` to find eligible reviewers for the changed
paths
- Updates the comment in-place on re-runs (no notification churn)
Implementation: a single Python script (`tools/suggest_reviewers.py`,
281 lines) and a minimal workflow YAML.
## Test plan
- [x] Action ran on this PR itself and posted a comment successfully
- [x] Verified script parses cleanly, passed `make checks`, passed `ruff
format`
- [x] Dry-run tested against 4 recent merged PRs with different
characteristics:
**PR #4784** (66 files, by pietern, big DABs rename):
```
## Suggested reviewers
- @denik -- recent work in `./`, `bundle/`, `cmd/bundle/generate/`
Confidence: high
## Eligible reviewers
@andrewnester, @anton-107, @lennartkats-db, @shreyas-goenka, @simonfaltum
```
Correctly identifies Denis as the clear top reviewer (2x second place
score). All 6 CODEOWNERS shown as eligible.
**PR #4782** (13 files, by denik, bundle engine priority):
```
## Suggested reviewers
- @andrewnester -- recent work in `bundle/schema/`, `bundle/internal/schema/`, `cmd/bundle/generate/`
- @pietern -- recent work in `bundle/schema/`, `cmd/bundle/generate/`, `bundle/internal/schema/`
- @shreyas-goenka -- recent work in `bundle/schema/`, `bundle/internal/schema/`, `cmd/bundle/`
Confidence: medium
## Eligible reviewers
@anton-107, @simonfaltum
```
Suggests 3 reviewers when scores are close. Remaining CODEOWNERS shown
as eligible.
**PR #4785** (2 files, by MarioCadenas, apps bug fix):
```
## Suggested reviewers
- @arsenyinfo -- recent work in `cmd/apps/`
- @pietern -- recent work in `cmd/apps/`
- @pkosiec -- recent work in `cmd/apps/`
Confidence: low
## Eligible reviewers
@databricks/eng-apps-devex
```
Correctly suggests apps-area contributors (not the catch-all
CODEOWNERS). Shows the apps team as eligible. Low confidence since only
2 files.
**PR #4774** (28 files, by denik, direct engine grants):
```
## Suggested reviewers
- @andrewnester -- recent work in `bundle/direct/dresources/`, `acceptance/bundle/invariant/`
- @shreyas-goenka -- recent work in `bundle/direct/dresources/`
Confidence: high
## Eligible reviewers
@anton-107, @pietern, @simonfaltum
```
Correctly identifies the two main bundle/direct contributors. High
confidence with clear score separation.
denik added a commit that referenced this pull request May 20, 2026
…INE (#4782)
## Changes
- Final priority: existing state > bundle.engine >
DATABRICKS_BUNDLE_ENGINE
- Simplify API, merge SettingFromEnv into ResolveEngineSetting
## Why
This makes it possible to use env var as a default but let users opt our
per-bundle or per-target level via config setting.
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
denik pushed a commit that referenced this pull request May 20, 2026
## Summary
* Add missing changelog entries for CLI and Bundles changes since
v0.294.0
* Fix `bundle.engine` priority description (config takes precedence over
env var per #4782)
* Add docs link for direct deployment engine
## Test plan
- [ ] Review changelog entries for accuracy
This pull request was AI-assisted by Isaac.
denik pushed a commit that referenced this pull request May 20, 2026
## Release v0.295.0
### Notable Changes
* Databricks Asset Bundles have been renamed to Declarative Automation Bundles (DABs). This is a non-breaking change; no code or configuration modifications are required. See the [FAQ](https://docs.databricks.com/aws/en/dev-tools/bundles/faqs#why-was-databricks-asset-bundles-renamed-to-declarative-automation-bundles).
* Add `bundle.engine` config setting to select the deployment engine (`terraform` or [`direct`](https://docs.databricks.com/aws/en/dev-tools/bundles/direct)). The `bundle.engine` setting takes precedence over the `DATABRICKS_BUNDLE_ENGINE` environment variable. When the configured engine doesn't match existing deployment state, a warning is issued and the existing engine is used ([#4749](#4749), [#4782](#4782))
### CLI
* Add `databricks auth switch` command for setting the default profile ([#4651](#4651))
* Add positional argument support to `auth logout` ([#4744](#4744))
* Strip trailing slash from host in `auth login`, `auth token`, and `configure` commands ([#4633](#4633))
### Bundles
* Standardize `personal_schemas` enum across bundle templates ([#4401](#4401))
* engine/direct: Fix permanent drift on experiment name field ([#4627](#4627))
* engine/direct: Fix permissions state path to match input config schema ([#4703](#4703))
* Add default project name and success message to default-scala template ([#4661](#4661))
* Skip enum validation for unresolved variable references ([#4752](#4752))
* engine/direct: Support references to/from grants ([#4774](#4774))
denik pushed a commit that referenced this pull request May 20, 2026
## Why
The CLI's CODEOWNERS catch-all assigns 6 people to every PR outside a
few narrow paths. This creates review noise and diffuses responsibility.
We want targeted reviewer suggestions based on who actually worked on
the changed code recently.
## Changes
Before: Every PR touching core code auto-assigns all 6 CODEOWNERS. No
signal about who is best suited to review.
Now: A new GitHub Action analyzes git history of the changed files and
posts a PR comment with two sections:
- **Suggested reviewers** (1-3 people best suited based on
recency-weighted git history)
- **Eligible reviewers** (everyone from CODEOWNERS who could review,
minus the suggested ones)
This is additive only. CODEOWNERS and auto-assign stay unchanged.
How it works:
- Triggers on PR open, synchronize, and ready-for-review (skips drafts
and fork PRs)
- Classifies changed files by type (source=1.0, tests=0.3,
acceptance=0.2, generated=0.0)
- Scores contributors using recency-weighted commit history (half-life
150 days)
- Resolves git author names to GitHub logins via the GitHub API (no
hardcoded alias table to maintain)
- Parses `.github/CODEOWNERS` to find eligible reviewers for the changed
paths
- Updates the comment in-place on re-runs (no notification churn)
Implementation: a single Python script (`tools/suggest_reviewers.py`,
281 lines) and a minimal workflow YAML.
## Test plan
- [x] Action ran on this PR itself and posted a comment successfully
- [x] Verified script parses cleanly, passed `make checks`, passed `ruff
format`
- [x] Dry-run tested against 4 recent merged PRs with different
characteristics:
**PR #4784** (66 files, by pietern, big DABs rename):
```
## Suggested reviewers
- @denik -- recent work in `./`, `bundle/`, `cmd/bundle/generate/`
Confidence: high
## Eligible reviewers
@andrewnester, @anton-107, @lennartkats-db, @shreyas-goenka, @simonfaltum
```
Correctly identifies Denis as the clear top reviewer (2x second place
score). All 6 CODEOWNERS shown as eligible.
**PR #4782** (13 files, by denik, bundle engine priority):
```
## Suggested reviewers
- @andrewnester -- recent work in `bundle/schema/`, `bundle/internal/schema/`, `cmd/bundle/generate/`
- @pietern -- recent work in `bundle/schema/`, `cmd/bundle/generate/`, `bundle/internal/schema/`
- @shreyas-goenka -- recent work in `bundle/schema/`, `bundle/internal/schema/`, `cmd/bundle/`
Confidence: medium
## Eligible reviewers
@anton-107, @simonfaltum
```
Suggests 3 reviewers when scores are close. Remaining CODEOWNERS shown
as eligible.
**PR #4785** (2 files, by MarioCadenas, apps bug fix):
```
## Suggested reviewers
- @arsenyinfo -- recent work in `cmd/apps/`
- @pietern -- recent work in `cmd/apps/`
- @pkosiec -- recent work in `cmd/apps/`
Confidence: low
## Eligible reviewers
@databricks/eng-apps-devex
```
Correctly suggests apps-area contributors (not the catch-all
CODEOWNERS). Shows the apps team as eligible. Low confidence since only
2 files.
**PR #4774** (28 files, by denik, direct engine grants):
```
## Suggested reviewers
- @andrewnester -- recent work in `bundle/direct/dresources/`, `acceptance/bundle/invariant/`
- @shreyas-goenka -- recent work in `bundle/direct/dresources/`
Confidence: high
## Eligible reviewers
@anton-107, @pietern, @simonfaltum
```
Correctly identifies the two main bundle/direct contributors. High
confidence with clear score separation.
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

@denik@eng-dev-ecosystem-bot@pietern