Skip to content

Introduce app logs command - #3908

Merged
pkosiec merged 34 commits into
databricks:mainfrom
ericfeunekes:logs-subcommand
Dec 4, 2025
Merged

Introduce app logs command#3908
pkosiec merged 34 commits into
databricks:mainfrom
ericfeunekes:logs-subcommand

Conversation

@ericfeunekes

@ericfeunekesericfeunekes commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Changes

  • Add the databricks apps logs NAME command, including tail/follow/search/source/output-file flags wired via cmdgroup, file mirroring with 0600 perms, and validation against apps that lack a public URL. (cmd/workspace/apps)
  • Introduce the reusable libs/logstream helper with token refresh hooks, buffering, search/source filtering, structured error handling, context-driven deadlines, and a comprehensive unit suite so other commands can stream logs without bespoke WebSocket loops.

Why

This is a quality of life addition that allows the CLI to tail app logs without a need to navigate to the Apps UI.

Tests

  • go test ./libs/logstream
  • go test ./cmd/workspace/apps
  • go test ./cmd/auth

@pkosiecpkosiec left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you @ericfeunekes for your contribution! The new app logs command is super helpful. I tested the changes and it works well 👍

Before merge, please take a look at my comments. I can help you implementing the changes if you'd like to - feel free to ping me anytime. Thanks!

Comment threadcmd/auth/token.go Outdated
Comment threadcmd/auth/token_test.go Outdated
Comment threadcmd/auth/token_test.go
Comment threaddocs/logstream_SKILL.md Outdated
Comment threadcmd/workspace/apps/logs.go Outdated
Comment threadlibs/logstream/streamer.go Outdated
Comment threadlibs/logstream/streamer.go Outdated
Comment threadlibs/apps/logstream/streamer.go
Comment threadlibs/logstream/streamer.go Outdated
Comment threadlibs/apps/logstream/streamer.go
@ericfeunekes

ericfeunekes commented Nov 13, 2025

Copy link
Copy Markdown
ContributorAuthor

@pkosiec I think I've addressed each of your issues and tried to keep them on separate commits to make it easier to review

@pkosiecpkosiec self-assigned this Nov 14, 2025

@pkosiecpkosiec left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks a lot for implementing the comments, including the logs color formatting!

Image

We're almost there - I put some minor comments. There's one small issue with -f and -tail-lines flags, but other than that I don't see any major blockers 👍

Comment threadlibs/auth/token_loader_test.go Outdated
Comment threadlibs/auth/token_loader.go Outdated
Comment threadlibs/auth/token_loader_test.go Outdated
Comment threaddocs/logstream_SKILL.md Outdated
Comment threadlibs/logstream/streamer.go Outdated
Comment threadlibs/logstream/streamer.go Outdated
Comment threadlibs/apps/logstream/streamer.go
Comment threadlibs/logstream/streamer.go Outdated
Comment threadlibs/apps/logstream/streamer.go
Comment threadlibs/logstream/streamer.go Outdated
Comment threadcmd/workspace/apps/apps.go Outdated

@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.

Hi @ericfeunekes, thanks for the PR!

The token changes (cmd/auth/token_* and libs/auth/token_*) are not necessary. You can use the TokenSource function on the SDK configuration directly to get a fresh OAuth token. I confirmed that the following patch works: https://gist.github.com/pietern/41d02acc2907416244789c7408fb232f

Please move logstream to libs/apps to make it clearer that it is specific to apps.

Comment threadcmd/workspace/apps/apps.go Outdated
@pietern

Copy link
Copy Markdown
Contributor

Btw, when I stop an app during tail, the logs command doesn't stop or error.

@pietern

Copy link
Copy Markdown
Contributor

@ericfeunekes I forgot an important detail in the previous message.

Contributing to CLI requires a signed CLA, if that's something you're willing to do, please reach out with a request to sign CLA to dabs-feedback@databricks.com and we will take it from there.

Thanks!

@ericfeunekes
ericfeunekes requested a review from a team as a code ownerNovember 18, 2025 15:05
@andrewnester
andrewnester removed the request for review from a teamDecember 2, 2025 16:10
@pietern

Copy link
Copy Markdown
Contributor

@ericfeunekes Can you update the PR summary to match the current state of the PR?

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Dec 3, 2025

Copy link
Copy Markdown
Collaborator

Commit: 438f019

Run: 19924759106

Env🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🔄​aws linux34237463717:13
💚​aws windows7237663517:59
💚​aws-ucws linux7251752226:14
🔄​aws-ucws windows34251952023:42
💚​azure linux1437563518:23
💚​azure windows1437763318:46
💚​azure-ucws linux1451452030:55
💚​azure-ucws windows1451651828:07
💚​gcp linux1436863917:24
💚​gcp windows1437063719:38
9 interesting tests: 5 flaky, 2 SKIP, 2 RECOVERED
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🔄​TestAccept🔄​f💚​R💚​R🔄​f💚​R💚​R💚​R💚​R💚​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🔄​f💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🔄​f💚​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🔄​f🙈​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🔄​f
🙈​TestAccept/bundle/run/app-with-job🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
Top 20 slowest tests (at least 2 minutes):
durationenvtestname
6:47azure-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
6:10azure-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
6:08aws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:47aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:46aws-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:43gcp windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:43gcp linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:35gcp linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:30aws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:30aws-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:23aws-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:15aws-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
5:15azure-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
5:02gcp windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
4:05azure-ucws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
2:38azure-ucws linuxTestAccept/bundle/resources/synced_database_tables/basic
2:32azure linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
2:21aws-ucws linuxTestAccept/bundle/resources/synced_database_tables/basic
2:19azure-ucws windowsTestAccept/bundle/resources/synced_database_tables/basic
2:11aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform

@pietern

Copy link
Copy Markdown
Contributor

@ericfeunekes Thanks for signing the CLA. This PR can proceed.

Can you update the PR summary to match the current state of the PR?

@pkosiecpkosiec changed the title Improve apps logs streaming helpersIntroduce app logs commandDec 4, 2025
Eric Feunekesand others added 17 commits December 4, 2025 10:49
This reverts commit 402e72743d9a9bd6dbdc7c24f1f20d62cededf11.
Replace custom token acquisition logic with SDK's built-in TokenSource
function as suggested by @pietern. This simplifies the implementation
by delegating token lifecycle management to the SDK configuration.
Changes:
- Use cfg.GetTokenSource() instead of auth.AcquireToken()
- Remove custom token_loader abstraction (libs/auth/token_loader.go)
- Revert cmd/auth/token.go to original implementation
- Remove tokenAcquireTimeout constant (handled by SDK)
This addresses review feedback from @pietern on Nov 17, 2025.
Reference: https://gist.github.com/pietern/41d02acc2907416244789c7408fb232f
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Relocate logstream from libs/logstream to libs/apps/logstream to make
it clearer that this package is specific to Databricks Apps functionality.
Changes:
- Move libs/logstream/streamer.go to libs/apps/logstream/streamer.go
- Move libs/logstream/streamer_test.go to libs/apps/logstream/streamer_test.go
- Update import in cmd/workspace/apps/logs.go
This addresses review feedback from @pietern on Nov 17, 2025.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Group individual const declarations into a single const block for better
code organization and readability.
Changes:
- Convert six individual const declarations to const block
- Apply alignment formatting
This addresses review feedback from @pkosiec on Nov 14, 2025.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When using --tail-lines with -f (follow), the buffer was flushing too
early, showing all historical logs instead of just the last N lines.
The tail buffer maintains a rolling window of the last N lines, but it
was flushing as soon as it reached N lines when following, rather than
waiting for the prefetch window to collect all historical logs first.
Fix: Always respect the flush deadline (prefetch window) regardless of
follow mode. This allows historical logs to stream in and the rolling
buffer to maintain only the truly last N lines before flushing.
Example with --tail-lines 10 -f:
- Before: Shows lines 1-10, then 11-1000+ (all logs)
- After: Shows lines 991-1000, then new logs (correct)
This addresses review feedback from @pkosiec on Nov 14, 2025.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace magic number (30 seconds) with defaultHandshakeTimeout constant
for better code maintainability.
Changes:
- Add defaultHandshakeTimeout = 30 * time.Second to const block
- Use constant in newLogStreamDialer instead of inline value
This addresses review feedback from @pkosiec on Nov 12/14, 2025.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When following app logs (--follow) and the app stops or is deleted,
the logs command now detects this and exits gracefully instead of
retrying indefinitely.
Implementation:
- Added AppStatusChecker callback to logstream.Config
- Check app status before each reconnect attempt in follow mode
- Also check when connection closes normally during follow
- Exit with clear error message when app is stopped/deleting/error state
This addresses @pietern's comment about the command not stopping when
the app is stopped during tail.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

An authorized user can trigger integration tests manually by following the instructions below:

Trigger:
go/deco-tests-run/cli

Inputs:

  • PR number: 3908
  • Commit SHA: 438f0192ea9e783e9c10053e0635a162fcd781d8

Checks will be approved automatically on success.

@pkosiecpkosiec left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome work @ericfeunekes! Thanks a lof for your contribution!

I rebased the PR, updated its title and desc to merge it soon! 🚀

@pkosiec
pkosiec added this pull request to the merge queueDec 4, 2025
Merged via the queue into databricks:main with commit 27ba2abDec 4, 2025
19 checks passed
github-merge-queueBot pushed a commit that referenced this pull request Dec 4, 2025
## Changes
See #3908. This is worth calling out in the changelog.
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Commit: 27ba2ab

Run: 19926535549

Env🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux73140762450:31
🟨​aws windows73140962244:56
🔄​aws-ucws linux210156650361:20
💚​aws-ucws windows10157050162:03
🔄​azure linux33340662246:09
💚​azure windows4341062045:50
🔄​azure-ucws linux543560501127:31
🔄​azure-ucws windows643561499125:08
🔄​gcp linux33339062953:38
💚​gcp windows4339462743:03
21 interesting tests: 10 flaky, 7 KNOWN, 3 RECOVERED, 1 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K💚​R💚​R🔄​f💚​R💚​R💚​R🔄​f💚​R
🔄​TestAccept/bundle/integration_whl/interactive_cluster✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f🔄​f✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f🔄​f✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER✅​p✅​p✅​p✅​p✅​p✅​p🔄​f🔄​f✅​p✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION✅​p✅​p✅​p✅​p✅​p✅​p🔄​f🔄​f✅​p✅​p
🔄​TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER✅​p✅​p✅​p✅​p🔄​f✅​p🔄​f✅​p✅​p✅​p
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/permissions/factcheck✅​p✅​p✅​p✅​p✅​p✅​p🔄​f🔄​f🙈​s🙈​s
🔄​TestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🔄​f🔄​f
🟨​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/run/app-with-job💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🔄​TestFsCpSourceIsDirectoryButTargetIsFile✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestFsCpSourceIsDirectoryButTargetIsFile/uc-volumes_to_dbfs🙈​s🙈​s🔄​f✅​p🙈​s🙈​s✅​p✅​p🙈​s🙈​s
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
22:52azure-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
17:28aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
14:22azure windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
12:12gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
11:37azure-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
11:12azure-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
11:01gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
10:58gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:42azure-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
10:25aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
10:10azure-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
9:58gcp linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
9:55azure windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
9:37azure-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
9:24aws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
9:01aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
8:59azure-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:51aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:44azure linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:34azure-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:29gcp linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
8:23gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:21azure-ucws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
8:15aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:11azure windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
8:06azure windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
8:05aws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:02aws windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
7:59aws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
7:58aws-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:56gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:54aws-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:54gcp windowsTestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=terraform
7:53azure-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:53gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
7:49aws-ucws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
7:47aws-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:43gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:41gcp windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
7:39gcp windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
7:38azure-ucws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:37aws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
7:37azure windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:33gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:30azure-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
7:26aws-ucws linuxTestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=terraform
7:23aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
7:22aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
7:16azure windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:16aws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform

deco-sdk-taggingBot added a commit that referenced this pull request Dec 4, 2025
## Release v0.279.0
### Notable Changes
* New deployment engine for DABs that does not require Terraform is available to try in experimental mode. Not recommended for production workloads yet. Documentation at [docs/direct.md](docs/direct.md).
### CLI
* Introduce `databricks apps logs` command to tail app logs from the CLI ([#3908](#3908))
### Bundles
* Add support for alerts to DABs ([#4004](#4004))
* Allow `file://` URIs in job libraries to reference runtime filesystem paths (e.g., JARs pre-installed on clusters via init scripts). These paths are no longer treated as local files to upload. ([#3884](#3884))
* Pipeline catalog changes now trigger in-place updates instead of recreation (Terraform provider v1.98.0 behavior change) ([#4082](#4082))
### Dependency updates
* Bump Terraform provider to v1.98.0 ([#4082](#4082))
denik pushed a commit that referenced this pull request May 20, 2026
## Changes
- Add the `databricks apps logs NAME` command, including
tail/follow/search/source/output-file flags wired via `cmdgroup`, file
mirroring with 0600 perms, and validation against apps that lack a
public URL. (`cmd/workspace/apps`)
- Introduce the reusable `libs/logstream` helper with token refresh
hooks, buffering, search/source filtering, structured error handling,
context-driven deadlines, and a comprehensive unit suite so other
commands can stream logs without bespoke WebSocket loops.
## Why
This is a quality of life addition that allows the CLI to tail app logs
without a need to navigate to the Apps UI.
## Tests
- go test ./libs/logstream
- go test ./cmd/workspace/apps
- go test ./cmd/auth
<!-- If your PR needs to be included in the release notes for next
release,
add a separate entry in NEXT_CHANGELOG.md as part of your PR. -->
---------
Co-authored-by: Eric Feunekes <eric.feunekes@pwc.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Pawel Kosiec <pawel.kosiec@databricks.com>
denik pushed a commit that referenced this pull request May 20, 2026
## Changes
See #3908. This is worth calling out in the changelog.
denik pushed a commit that referenced this pull request May 20, 2026
## Release v0.279.0
### Notable Changes
* New deployment engine for DABs that does not require Terraform is available to try in experimental mode. Not recommended for production workloads yet. Documentation at [docs/direct.md](docs/direct.md).
### CLI
* Introduce `databricks apps logs` command to tail app logs from the CLI ([#3908](#3908))
### Bundles
* Add support for alerts to DABs ([#4004](#4004))
* Allow `file://` URIs in job libraries to reference runtime filesystem paths (e.g., JARs pre-installed on clusters via init scripts). These paths are no longer treated as local files to upload. ([#3884](#3884))
* Pipeline catalog changes now trigger in-place updates instead of recreation (Terraform provider v1.98.0 behavior change) ([#4082](#4082))
### Dependency updates
* Bump Terraform provider to v1.98.0 ([#4082](#4082))
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.

4 participants

@ericfeunekes@pietern@eng-dev-ecosystem-bot@pkosiec