Skip to content

Add support for .dbalert.json files - #3602

Merged
shreyas-goenka merged 20 commits into
mainfrom
dbalert
Jan 5, 2026
Merged

Add support for .dbalert.json files#3602
shreyas-goenka merged 20 commits into
mainfrom
dbalert

Conversation

@shreyas-goenka

@shreyas-goenkashreyas-goenka commented Sep 15, 2025

Copy link
Copy Markdown
Contributor

Changes

Adds support for .dbalert.json files to define alert configurations separately from databricks.yml.

Key additions:

  • New file_path field for alerts in bundle config
  • LoadDBAlertFiles mutator to read and merge .dbalert.json files
  • Support for query_lines and custom_description_lines fields in .dbalert.json files.
  • Validation that only warehouse_id, display_name, and file_path can be set in YAML when using a file
  • Error handling for variable interpolations in .dbalert.json files

Tests

  • 3 acceptance tests covering successful file loading, disallowed field errors, and variable interpolation errors
  • Unit test for LoadDBAlertFiles mutator
  • Tests run with both terraform and direct deployment engines

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Sep 15, 2025

Copy link
Copy Markdown
Collaborator

Commit: 383c218

Run: 20725101337

Env🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux98238466321:46
🟨​aws windows143238666117:53
🟨​aws-ucws linux512253554028:01
🟨​aws-ucws windows107253753827:33
🟨​azure-ucws linux229353053931:02
🟨​azure-ucws windows734353153728:00
🟨​gcp linux210337366821:02
🟨​gcp windows75337566621:30
22 interesting tests: 14 KNOWN, 4 RECOVERED, 3 flaky, 1 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K🟨​K🟨​K🔄​f🔄​f💚​R💚​R
💚​TestAccept/bundle/deployment/bind/alert🙈​S🙈​S🙈​S🙈​S💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/alerts/basic💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/alerts/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/alerts/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions🟨​K🟨​K🟨​K🟨​K🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K🟨​K🟨​K
🟨​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
🟨​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/secret_scopes/permissions✅​p✅​p✅​p✅​p✅​p🔄​f🙈​s🙈​s
🔄​TestAccept/bundle/resources/secret_scopes/permissions/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p🔄​f
🔄​TestAccept/ssh/connection✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🟨​TestExport🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K
🟨​TestExportWithFileFlag🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K
🟨​TestImportDir💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportDirDoesNotOverwrite💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportDirWithOverwriteFlag💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportFileFormatAuto💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportFileFormatSource💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
Top 22 slowest tests (at least 2 minutes):
durationenvtestname
6:36aws-ucws linuxTestAccept/bundle/resources/synced_database_tables/basic
6:19gcp linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
6:12gcp windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
6:06gcp windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:41aws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:35aws-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:34aws-ucws windowsTestAccept/bundle/resources/synced_database_tables/basic
5:34aws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:33aws-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:25aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:24gcp linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:13aws-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:10aws-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
4:06azure-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
4:01azure-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
3:49azure-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
3:11azure-ucws linuxTestAccept/bundle/resources/synced_database_tables/basic
3:05azure-ucws windowsTestAccept/bundle/resources/synced_database_tables/basic
3:02azure-ucws windowsTestSecretsPutSecretStringValue
2:39aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
2:14gcp linuxTestAccept
2:10gcp windowsTestSecretsPutSecretStringValue

@github-actions

Copy link
Copy Markdown
Contributor

This PR has not received an update in a while. If you want to keep this PR open, please leave a comment below or push a new commit and auto-close will be canceled.

@shreyas-goenka
shreyas-goenka marked this pull request as ready for review December 8, 2025 02:42
@pieternpietern changed the title Add support for .dbalert.json filesAdd support for .dbalert.json filesDec 10, 2025

@pieternpietern left a comment

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.

Cool!

Please also include a round-trip acceptance tests that runs workspace export on the alert file and confirms that there is no drift between the original input and the workspace-observed output. This should run against a real workspace. This will confirm not just that we're doing the right thing locally, but also that the remote serialization code for alerts doesn't drift.

Comment threadbundle/config/mutator/load_dbalert_files.go
Comment threadbundle/config/mutator/load_dbalert_files.go Outdated
Comment threadbundle/config/mutator/load_dbalert_files.go
Comment threadbundle/config/mutator/load_dbalert_files.go Outdated
Comment threadbundle/config/mutator/load_dbalert_files.go Outdated
@shreyas-goenka

Copy link
Copy Markdown
ContributorAuthor

Updated alerts/with_file to include exporting the alert and asserting that it's content did not change.

warehouse_id: "0123456789012345"
display_name: "My alert"
file_path: ./alert.dbalert.json
# This field is not allowed when file_path is specified

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

For future: We should allow override of the query text even when using a file_path, unless there will be another way to accept parameters like {catalog} and {schema} in the alert file.

Comment threadbundle/config/mutator/load_dbalert_files_test.go
@shreyas-goenka
shreyas-goenka merged commit 32295be into mainJan 5, 2026
18 of 19 checks passed
@shreyas-goenka
shreyas-goenka deleted the dbalert branch January 5, 2026 21:58
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Commit: 32295be

Run: 20730438716

Env❌​FAIL🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux928241864946:15
🟨​aws windows143242264751:38
🟨​aws-ucws linux5212258752078:27
🟨​aws-ucws windows107259151868:54
❌​azure linux3753417648311:12
❌​azure windows312341964681:30
🟨​azure-ucws linux210358551959:13
🟨​azure-ucws windows75358751763:44
🟨​gcp linux210340065750:26
🟨​gcp windows75340265550:34
26 interesting tests: 18 KNOWN, 4 flaky, 3 FAIL, 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💚​R💚​R💚​R💚​R
🟨​TestAccept/bundle/deployment/bind/alert🙈​S🙈​S🙈​S🙈​S🟨​K🟨​K💚​R💚​R💚​R💚​R
🟨​TestAccept/bundle/resources/alerts/basic💚​R💚​R💚​R💚​R🟨​K🟨​K💚​R💚​R💚​R💚​R
🟨​TestAccept/bundle/resources/alerts/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R🟨​K🟨​K💚​R💚​R💚​R💚​R
🟨​TestAccept/bundle/resources/alerts/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R🟨​K🟨​K💚​R💚​R💚​R💚​R
❌​TestAccept/bundle/resources/alerts/with_file✅​p✅​p✅​p✅​p❌​F❌​F✅​p✅​p✅​p✅​p
❌​TestAccept/bundle/resources/alerts/with_file/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p❌​F❌​F✅​p✅​p✅​p✅​p
❌​TestAccept/bundle/resources/alerts/with_file/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p❌​F❌​F✅​p✅​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🟨​K🟨​K🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K🟨​K🟨​K
🟨​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/run/app-with-job✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🟨​TestExport🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K
🟨​TestExportWithFileFlag🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K
🟨​TestImportDir💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportDirDoesNotOverwrite💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportDirWithOverwriteFlag💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportFileFormatAuto💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🟨​TestImportFileFormatSource💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K💚​R🟨​K
🔄​TestFilerWorkspaceNotebook🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestFilerWorkspaceNotebook/scalaJupyterNb.ipynb🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
13:53gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
13:21gcp linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
11:47aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
11:37aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
11:33aws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
11:29aws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
11:16aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
10:59gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:39aws-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:25aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
9:37gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
9:03gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:41aws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
8:38azure-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
8:33azure windowsTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
8:21azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
8:13azure-ucws linuxTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_14.3_LTS
8:12gcp windowsTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
8:11aws-ucws linuxTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_15.4_LTS
8:10aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:07aws-ucws windowsTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_15.4_LTS
8:04gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:02gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:02aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:01azure linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:01aws windowsTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
8:00aws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:59aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:58aws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:55aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:55aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
7:54aws linuxTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
7:53aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
7:50azure-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:47aws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
7:46azure windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
7:45azure-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:44gcp linuxTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
7:43aws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
7:41azure linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:40azure-ucws linuxTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_15.4_LTS
7:36azure-ucws windowsTestSparkJarTaskDeployAndRunOnVolumes/Databricks_Runtime_14.3_LTS
7:36gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
7:35aws linuxTestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=direct
7:35gcp linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
7:35azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
7:33aws linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
7:33azure-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:32azure-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
7:32aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER

shreyas-goenka added a commit that referenced this pull request Jan 7, 2026
## Changes
Adds support for `databricks bundle generate alert` command to generate
bundle configuration from existing SQL alerts.
## Why
This allows users to import existing alerts into bundles
## Usage
### Generate configuration from existing alert
```bash
databricks bundle generate alert --existing-id <alert-id>
```
This creates:
- `resources/<alert-name>.alert.yml` - Bundle configuration with alert
settings
- `src/<alert-name>.dbalert.json` - Complete alert definition
### Update existing bundle resource
```bash
databricks bundle generate alert --resource my_alert --force
```
## Tests
- Added acceptance tests for successful generation and error cases
Note: It should be merged after:
#3602
pietern added a commit that referenced this pull request Jan 8, 2026
- Remove #4135 (already released in v0.281.0)
- Update #4081 reference to #4101 (use PR instead of issue)
- Add #4108 (bundle generate alert command)
- Add #3602 (.dbalert.json files support)
- Add #4169 (SYSTEM_TEAMFOUNDATIONCOLLECTIONURI for Azure DevOps OIDC)
- Move domain_friendly_name entry from CLI to Bundles section
- Normalize formatting (backticks, verb tense, wording consistency)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
pietern added a commit that referenced this pull request Jan 8, 2026
## Changes
- Remove #4135 (already released in v0.281.0)
- Update #4081 reference to #4101 (use PR instead of issue)
- Add #4108 (bundle generate alert command)
- Add #3602 (.dbalert.json files support)
- Add #4169 (SYSTEM_TEAMFOUNDATIONCOLLECTIONURI for Azure DevOps OIDC)
- Move domain_friendly_name entry from CLI to Bundles section
- Normalize formatting (backticks, verb tense, wording consistency)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
deco-sdk-taggingBot added a commit that referenced this pull request Jan 8, 2026
## Release v0.282.0
### Notable Changes
* engine/direct: New plan format (v2) ([#4201](#4201))
### CLI
* Skip non-exportable objects (e.g., `MLFLOW_EXPERIMENT`) during `workspace export-dir` instead of failing ([#4101](#4101))
### Bundles
* Allow `domain_friendly_name` to be used in `name_prefix` in development mode ([#4173](#4173))
* Add missing schema grants privileges ([#4139](#4139))
* Add support for `bundle generate alert` command ([#4108](#4108))
* Add support for `.dbalert.json` files ([#3602](#3602))
* Pass `SYSTEM_TEAMFOUNDATIONCOLLECTIONURI` from env to the Terraform provider for Azure DevOps OIDC auth ([#4169](#4169))
* Add `ipykernel` to the `default` template to enable Databricks Connect notebooks in Cursor/VS Code ([#4164](#4164))
* Add interactive SQL warehouse picker to `default-sql` and `dbt-sql` bundle templates ([#4170](#4170))
* Add `name`, `target` and `mode` fields to the deployment metadata file ([#4180](#4180))
* engine/direct: Fix app deployment failure when app is in `DELETING` state ([#4176](#4176))
* engine/direct: Changes in config that match remote changes no longer trigger an update ([#4201](#4201))
denik pushed a commit that referenced this pull request May 20, 2026
## Changes
Adds support for `.dbalert.json` files to define alert configurations
separately from `databricks.yml`.
**Key additions:**
- New `file_path` field for alerts in bundle config
- `LoadDBAlertFiles` mutator to read and merge `.dbalert.json` files
- Support for `query_lines` and `custom_description_lines` fields in
.dbalert.json files.
- Validation that only `warehouse_id`, `display_name`, and `file_path`
can be set in YAML when using a file
- Error handling for variable interpolations in `.dbalert.json` files
## Tests
- 3 acceptance tests covering successful file loading, disallowed field
errors, and variable interpolation errors
- Unit test for `LoadDBAlertFiles` mutator
- Tests run with both `terraform` and `direct` deployment engines
denik pushed a commit that referenced this pull request May 20, 2026
## Changes
Adds support for `databricks bundle generate alert` command to generate
bundle configuration from existing SQL alerts.
## Why
This allows users to import existing alerts into bundles
## Usage
### Generate configuration from existing alert
```bash
databricks bundle generate alert --existing-id <alert-id>
```
This creates:
- `resources/<alert-name>.alert.yml` - Bundle configuration with alert
settings
- `src/<alert-name>.dbalert.json` - Complete alert definition
### Update existing bundle resource
```bash
databricks bundle generate alert --resource my_alert --force
```
## Tests
- Added acceptance tests for successful generation and error cases
Note: It should be merged after:
#3602
denik pushed a commit that referenced this pull request May 20, 2026
## Changes
- Remove #4135 (already released in v0.281.0)
- Update #4081 reference to #4101 (use PR instead of issue)
- Add #4108 (bundle generate alert command)
- Add #3602 (.dbalert.json files support)
- Add #4169 (SYSTEM_TEAMFOUNDATIONCOLLECTIONURI for Azure DevOps OIDC)
- Move domain_friendly_name entry from CLI to Bundles section
- Normalize formatting (backticks, verb tense, wording consistency)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
denik pushed a commit that referenced this pull request May 20, 2026
## Release v0.282.0
### Notable Changes
* engine/direct: New plan format (v2) ([#4201](#4201))
### CLI
* Skip non-exportable objects (e.g., `MLFLOW_EXPERIMENT`) during `workspace export-dir` instead of failing ([#4101](#4101))
### Bundles
* Allow `domain_friendly_name` to be used in `name_prefix` in development mode ([#4173](#4173))
* Add missing schema grants privileges ([#4139](#4139))
* Add support for `bundle generate alert` command ([#4108](#4108))
* Add support for `.dbalert.json` files ([#3602](#3602))
* Pass `SYSTEM_TEAMFOUNDATIONCOLLECTIONURI` from env to the Terraform provider for Azure DevOps OIDC auth ([#4169](#4169))
* Add `ipykernel` to the `default` template to enable Databricks Connect notebooks in Cursor/VS Code ([#4164](#4164))
* Add interactive SQL warehouse picker to `default-sql` and `dbt-sql` bundle templates ([#4170](#4170))
* Add `name`, `target` and `mode` fields to the deployment metadata file ([#4180](#4180))
* engine/direct: Fix app deployment failure when app is in `DELETING` state ([#4176](#4176))
* engine/direct: Changes in config that match remote changes no longer trigger an update ([#4201](#4201))
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.

5 participants

@shreyas-goenka@eng-dev-ecosystem-bot@pietern@denik@dustinvannoy-db