Skip to content

Default to direct deployment engine for new deployments#5468

Open
denik wants to merge 6 commits into
mainfrom
denik/direct-default
Open

Default to direct deployment engine for new deployments#5468
denik wants to merge 6 commits into
mainfrom
denik/direct-default

Conversation

@denik
Copy link
Copy Markdown
Contributor

@denik denik commented Jun 8, 2026

Summary

The direct deployment engine is now Generally Available. This switches the default engine for new deployments from terraform to direct.

Existing deployments are unaffected: the engine is read from recorded state, and the new default only applies when there is no state and no explicit engine set (neither bundle.engine config nor DATABRICKS_BUNDLE_ENGINE).

To opt out of the direct engine, set engine: terraform under bundle in databricks.yml, or set DATABRICKS_BUNDLE_ENGINE=terraform.

Changes

  • bundle/config/engine/engine.go: Default changed from EngineTerraform to EngineDirect.
  • docs/direct.md: status updated from Public Preview to Generally Available (GA).
  • NEXT_CHANGELOG.md: added a Notable Changes entry with the opt-out path and a link to the migration docs.
  • acceptance/bundle/state/engine_default/: new acceptance test that deploys with the engine unset and no existing state, asserting the direct engine is used (via the request User-Agent).

Testing

  • Unit tests for bundle/config/..., bundle/statemgmt/..., bundle/phases/..., cmd/bundle/... pass.
  • New acceptance test passes on both engine matrix variants.

This pull request and its description were written by Isaac.

denik added 2 commits June 8, 2026 13:05
The direct deployment engine is now Generally Available. Switch the
default engine for new deployments from terraform to direct. Existing
deployments are unaffected: their engine is read from recorded state,
and the default only applies when no state and no explicit engine
(config or DATABRICKS_BUNDLE_ENGINE) is set.

Update docs/direct.md status to GA and add a Notable Changes entry.
Add an acceptance test that deploys with the engine unset and no state,
asserting the direct engine is used (via the request User-Agent).

Co-authored-by: Isaac
Direct is now the default for new bundles, so reframe the section
around opting out to Terraform rather than opting in to direct.

Co-authored-by: Isaac
@denik denik temporarily deployed to test-trigger-is June 8, 2026 11:07 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 8, 2026 11:07 — with GitHub Actions Inactive
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 8, 2026

Approval status: pending

/acceptance/bundle/ - needs approval

7 files changed
Suggested: @janniklasrose
Also eligible: @pietern, @lennartkats-db, @andrewnester, @shreyas-goenka, @anton-107

/bundle/ - needs approval

Files: bundle/config/engine/engine.go
Suggested: @janniklasrose
Also eligible: @pietern, @lennartkats-db, @andrewnester, @shreyas-goenka, @anton-107

General files (require maintainer)

Files: .gitignore, NEXT_CHANGELOG.md, docs/direct.md
Based on git history:

  • @simonfaltum -- recent work in ./, acceptance/bundle/migrate/basic/

Any maintainer (@andrewnester, @anton-107, @pietern, @shreyas-goenka, @simonfaltum, @renaudhartert-db) can approve all areas.
See OWNERS for ownership rules.

Set EnvMatrix.DATABRICKS_BUNDLE_ENGINE = [] so the env var is left
unset and the test runs a single time, instead of unsetting it in the
script and running two identical per-engine variants.

Co-authored-by: Isaac
@denik denik temporarily deployed to test-trigger-is June 8, 2026 11:09 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 8, 2026 11:09 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot
Copy link
Copy Markdown
Collaborator

eng-dev-ecosystem-bot commented Jun 8, 2026

Commit: 0364dc6

Run: 27138580421

Env 🟨​KNOWN 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 7 15 261 924 6:57
🟨​ aws windows 7 15 263 922 15:02
💚​ aws-ucws linux 7 15 357 838 7:37
💚​ aws-ucws windows 7 15 359 836 12:27
💚​ azure linux 1 17 264 922 7:39
💚​ azure windows 1 17 266 920 11:44
💚​ azure-ucws linux 1 17 362 834 8:14
💚​ azure-ucws windows 1 17 364 832 13:29
💚​ gcp linux 1 17 260 925 8:42
🔄​ gcp windows 2 1 17 260 923 13:10
24 interesting tests: 15 SKIP, 7 KNOWN, 2 flaky
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
🟨​ TestAccept 💚​R 🟨​K 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🔄​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ 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 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct 💚​R 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions 💚​R 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct 💚​R 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R 🟨​K 💚​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/replace_existing 🙈​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/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/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/grants/select 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
Top 28 slowest tests (at least 2 minutes):
duration env testname
6:53 azure-ucws windows TestAccept
6:10 azure windows TestAccept
5:51 aws-ucws windows TestAccept
4:59 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:58 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:52 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:33 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:23 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:12 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:05 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:01 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:00 azure linux TestAccept
3:00 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:58 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:56 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:53 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:53 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:52 aws linux TestAccept
2:51 gcp linux TestAccept
2:46 azure-ucws linux TestAccept
2:45 aws-ucws linux TestAccept
2:43 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:43 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:35 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:29 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:28 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:27 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:22 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

Deploying a fresh, never-migrated target with the engine unset now
defaults to direct instead of terraform. Update the migrate/basic
output and reword the section title accordingly.

Co-authored-by: Isaac
@denik denik temporarily deployed to test-trigger-is June 8, 2026 12:07 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 8, 2026 12:07 — with GitHub Actions Inactive
Keep the "different target, still on terraform" scenario intact by
deploying the prod target explicitly with terraform, instead of
relying on the (now direct) default. The subsequent debug states
reads terraform from the existing state, as before.

Co-authored-by: Isaac
@denik denik temporarily deployed to test-trigger-is June 8, 2026 12:10 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 8, 2026 12:10 — with GitHub Actions Inactive
This runtime lock file was accidentally committed; it fails the
whitespace check (no trailing newline) and is regenerated locally.
Untrack it and add it to .gitignore alongside the other .claude
runtime files.

Co-authored-by: Isaac
@denik denik temporarily deployed to test-trigger-is June 8, 2026 12:45 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 8, 2026 12:45 — with GitHub Actions Inactive
Sign up for free to 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.

2 participants