Commit Graph

1495 Commits

Author SHA1 Message Date
Shreyas Goenka 30d683a7bf
merge 2025-01-09 16:49:38 +05:30
Shreyas Goenka a2a3ae7154
address comments 2025-01-09 16:34:06 +05:30
Shreyas Goenka 2a0dbdec3e
remove fail reader 2025-01-09 16:30:14 +05:30
Denis Bilenko 2a4fdd911e
Add a test showing bug in merge if variables are used for keys (#2101)
Since merge happens first, before variable resolution, the two jobs are
seen as different.

I also updated override/job_cluster/script to include more of the
output.
2025-01-09 10:14:47 +00:00
Denis Bilenko b808d4d6f1
Add test for overriding list variable (#2099)
- Add override for "libraries".
- Remove complexvar - it serves no purpose - we already have map
variable ‘cluster’.
2025-01-09 09:03:03 +00:00
Denis Bilenko b0706ccdc1
Use -update instead of TESTS_OUTPUT=OVERWRITE (#2097)
It's easier to remember and type and also validated and part of help:

```
  % go test ./acceptance -updat 2>&1 | grep updat
  flag provided but not defined: -updat
    -update
```
2025-01-09 09:00:05 +00:00
Denis Bilenko df17e4b4ea
Convert some resolve variables tests to acceptance test (#2100) 2025-01-08 17:44:52 +00:00
Pieter Noordhuis 42b34c7bef
Update runner for the create-xyz-pr jobs in the release workflow (#2098)
## Changes

I missed these in #2077 and they failed because of it on the v0.238.0
release.
2025-01-08 15:50:44 +00:00
Pieter Noordhuis b48fa70984
[Release] Release v0.238.0 (#2096)
Bundles:
* Fix finding Python within virtualenv on Windows
([#2034](https://github.com/databricks/cli/pull/2034)).
* Include missing field descriptions in JSON schema
([#2045](https://github.com/databricks/cli/pull/2045)).
* Add validation for volume referenced from `artifact_path`
([#2050](https://github.com/databricks/cli/pull/2050)).
* Handle `${workspace.file_path}` references in source-linked
deployments ([#2046](https://github.com/databricks/cli/pull/2046)).
* Set the write bit for files written during template initialization
([#2068](https://github.com/databricks/cli/pull/2068)).
2025-01-08 14:47:38 +00:00
Pieter Noordhuis 23f05f5d67
Set the write bit for files written during template initialization (#2068)
## Changes

This used to work because the permission bits for built-in templates
were hardcoded to 0644 for files and 0755 for directories.

As of #1912 (and the PRs it depends on), built-in templates are no
longer pre-materialized to a temporary directory and read directly from
the embedded filesystem. This built-in filesystem returns 0444 as the
permission bits for the files it contains. These bits are carried over
to the destination filesystem.

This change updates template materialization to always set the owner's
write bit. It doesn't really make sense to write read-only files and
expect users to work with these files in a VCS (note: Git only stores
the executable bit).

The regression shipped as part of v0.235.0 and will be fixed as of
v0.238.0.

## Tests

Unit tests.
2025-01-08 13:18:28 +00:00
Ilya Kuznetsov 0289becea8
Handle `${workspace.file_path}` references in source-linked deployments (#2046)
## Changes

1. Updates `workspace.file_path` during source-linked deployment to
address cases like this
https://github.com/databricks/bundle-examples/blob/main/default_python/resources/default_python_pipeline.yml#L13
2. Updates `workspace.file_path` in `metadata.json`
3. Prints warning for users when `workspace.file_path` is explicitly set
but deploy is running in source-linked mode

## Tests

Unit test
2025-01-08 12:43:56 +00:00
Denis Bilenko 185bbd28e4
Add acceptance tests (#2081)
## Changes
- New kind of test is added - acceptance tests. See acceptance/README.md
for explanation.
- A few tests are converted to acceptance tests by moving databricks.yml
to acceptance/ and adding corresponding script files.

As these tests run against compiled binary and can capture full output
of the command, they can be useful to support major changes such as
refactoring internal logging / diagnostics or complex variable
interpolation.

These are currently run as part of 'make test' but the intention is to
run them as part of integration tests as well.

### Benefits

- Full binary is tested, exactly as users get it.
  - We're not testing custom set of mutators like many existing tests.
- Not mocking anything, real SDK is used (although the HTTP endpoint is
not a real Databricks env).
- Easy to maintain: output can be updated automatically.
- Can easily set up external env, such as env vars, CLI args,
.databrickscfg location etc.

### Gaps

The tests currently share the test server and there is global place to
define handlers. We should have a way for tests to override / add new
handlers.

## Tests
I manually checked that output of new acceptance tests matches previous
asserts.
2025-01-08 12:41:08 +00:00
Denis Bilenko 8fd793b605
Clean up TestMain from integration tests to fix caching (#2090)
## Changes
- Remove TestMain from integration tests and related checks.
- This fixes "go test" caching for integration tests.

The test_main.go files were added in
https://github.com/databricks/cli/pull/2009 to make sure integration
tests are not run as part of go test ./.... We recommend running make
test to run tests, which includes the packages to test (and excludes
integration).

## Tests
To test that caching works I ran a test twice:

```
+ CLOUD_ENV=aws
+ go test --timeout 3h -v -run TestDefaultPython/3.9 ./integration/bundle/
…
PASS
ok      github.com/databricks/cli/integration/bundle    (cached)
```
2025-01-08 11:59:22 +00:00
Gleb Kanterov 02c7df39f6
Add 'experimental/python' support (#2052)
## Changes
Add `experimental/python` section replacing `experimental/pydabs`.

Add 2 new mutators into existing pipeline:
- `ApplyPythonMutator(load_resources)` - loads resources from Python
code
- `ApplyPythonMutator(apply_mutators)` - transforms existing resources
defined in Python/YAML

Example:
```yaml
experimental:
  python:
    resources:
    - "resources:load_resources"
    mutators:
    - "mutators:add_email_notifications"
```

## Tests
Unit tests and manually

---------

Co-authored-by: Pieter Noordhuis <pieter.noordhuis@databricks.com>
2025-01-08 09:29:45 +00:00
Denis Bilenko 43420d01ad
Run push.yml periodically with clean cache (#2092)
This ensures that our build still works with clean cache and also
populates build/test cache, speeding up test runs.
2025-01-07 18:10:49 +01:00
Denis Bilenko e6552231eb
Use different cache keys for different jobs (#2091)
Otherwise all those jobs compete for the same key and build cache ends
up disabled for ubuntu tests.
2025-01-07 17:13:12 +01:00
Denis Bilenko e2cd8c2f34
Enable perfsprint linter and apply autofix (#2071)
https://github.com/catenacyber/perfsprint
2025-01-07 10:49:23 +00:00
Pieter Noordhuis 3629c9e406
Enable integration workflows (#2086)
## Changes

This reverts commit 31552852ff.

These workflows were disabled in #2085.

They should work again now that we're using self-hosted runners (see
#2077).

## Tests

(inline)
2025-01-06 16:07:15 +00:00
Pieter Noordhuis c262b30ef4
Migrate workflows that need write access to use hosted runners (#2077)
## Changes

Migrate workflows to Databricks-hosted GitHub Actions runners.

The GitHub-hosted runners can no longer be used because of security
hardening.
2025-01-06 15:34:42 +00:00
Pieter Noordhuis 31552852ff
Disable integration workflows (#2085)
See https://github.com/databricks/cli/issues/2084.
2025-01-06 14:30:48 +00:00
Shreyas Goenka f394606614
Merge remote-tracking branch 'origin' into refactor-bundle-init-squashed 2025-01-06 19:15:04 +05:30
Shreyas Goenka ad28ce1d37
fix aliasing 2025-01-06 18:58:45 +05:30
Shreyas Goenka 38d47e62f2
fix aliasing 2025-01-06 18:54:50 +05:30
Shreyas Goenka 57a75190cc
cleanup a bit 2025-01-06 18:49:28 +05:30
Denis Bilenko 8af98accee
Set gotestsum --format to github-actions when running on github (#2082)
This gives grouping and ability to open individual test logs.
2025-01-06 14:12:34 +01:00
Shreyas Goenka 4743095adc
lint 2025-01-06 18:42:34 +05:30
Shreyas Goenka 8202aafc78
more test 2025-01-06 18:38:22 +05:30
Shreyas Goenka 0a68fb34f9
- 2025-01-06 18:30:18 +05:30
Shreyas Goenka 4755db4d70
custom rename to avoid break 2025-01-06 18:27:15 +05:30
Shreyas Goenka 71057774f0
- 2025-01-06 18:12:12 +05:30
Shreyas Goenka 39dfe05a73
add test for the get method 2025-01-06 18:03:11 +05:30
Shreyas Goenka 8607e0808c
add unit tests for resolver 2025-01-06 17:53:25 +05:30
Shreyas Goenka 2b1c5cbe63
skip test on windows 2025-01-06 16:50:38 +05:30
Shreyas Goenka 00266cb8b3
fix another bug 2025-01-06 15:54:13 +05:30
Shreyas Goenka 9f83fe0362
fix test 2025-01-06 15:40:11 +05:30
Shreyas Goenka af89580f8e
fix tests and lint 2025-01-06 13:41:28 +05:30
Pieter Noordhuis 4f3cf6ac2c
Limit comment about integration tests to PRs from forks (#2075)
## Changes

The comment block appears on all PRs, even if the integration tests are
automatically triggered. This is quite noisy. This change limits those
comments to PRs from forks.

## Tests

Have to try by merging...
2025-01-03 14:12:55 +00:00
Shreyas Goenka ed24f2880b
more test 2025-01-03 18:32:43 +05:30
Shreyas Goenka 2965c30268
add unit tests for reader 2025-01-03 18:29:50 +05:30
Shreyas Goenka d238dd833c
add resolver 2025-01-03 17:28:22 +05:30
Denis Bilenko ab6b1f1d77
Upgrade golang.org/x/net from v0.26.0 to v0.33.0 (#2073)
Fixes https://github.com/databricks/cli/security/dependabot/20
2025-01-03 11:32:03 +00:00
Shreyas Goenka a743139f83
remove final telemetry bits 2025-01-03 16:31:49 +05:30
Shreyas Goenka daa2b919aa
undo test changes 2025-01-03 16:30:22 +05:30
Shreyas Goenka 070ae2f8e9
Refactor `bundle init` 2025-01-03 16:28:35 +05:30
shreyas-goenka 9abb11decb
Enable TestBundleInitOnMlopsStacks (#2072)
## Changes
This test was broken due to upstream change:
https://github.com/databricks/mlops-stacks/pull/187

Fixed in upstream change:
https://github.com/databricks/mlops-stacks/pull/188

## Tests
Test passes now
2025-01-03 10:35:20 +00:00
Denis Bilenko 8e8399da83
Enable linter 'mirror' and autofix existing issues (#2070)
https://github.com/butuzov/mirror
2025-01-03 10:13:12 +00:00
Denis Bilenko 39d1e8093f
Enable intrange linter and apply autofix (#2069)
New construct in Go1.22+ for integer iteration:
https://github.com/ckaznocha/intrange?tab=readme-ov-file#intrange
2025-01-03 09:25:07 +00:00
Andrew Nester 60782b57bd
Added close stale issues workflow (#634)
## Changes
Added workflows for closing stale issues.

It adds a Github Action that warns and then auto closes stale issues.
2025-01-02 14:23:00 +01:00
shreyas-goenka 7beb0fb8b5
Add validation mutator for volume `artifact_path` (#2050)
## Changes
This PR:
1. Incrementally improves the error messages shown to the user when the
volume they are referring to in `workspace.artifact_path` does not
exist.
2. Performs this validation in both `bundle validate` and `bundle
deploy` compared to before on just deployments.
3. It runs "fast" validations on `bundle deploy`, which earlier were
only run on `bundle validate`.


## Tests
Unit tests and manually. Also, existing integration tests provide
coverage (`TestUploadArtifactToVolumeNotYetDeployed`,
`TestUploadArtifactFileToVolumeThatDoesNotExist`)

Examples:
```
.venv➜  bundle-playground git:(master) ✗ cli bundle validate
Error: cannot access volume capital.whatever.my_volume: User does not have READ VOLUME on Volume 'capital.whatever.my_volume'.
  at workspace.artifact_path
  in databricks.yml:7:18
```

and

```
.venv➜  bundle-playground git:(master) ✗ cli bundle validate
Error: volume capital.whatever.foobar does not exist
  at workspace.artifact_path
     resources.volumes.foo
  in databricks.yml:7:18
     databricks.yml:12:7

You are using a volume in your artifact_path that is managed by
this bundle but which has not been deployed yet. Please first deploy
the volume using 'bundle deploy' and then switch over to using it in
the artifact_path.
```
2025-01-02 17:23:15 +05:30
shreyas-goenka 509f5aba6a
Snooze mlops-stacks integration test (#2063)
## Changes
https://github.com/databricks/mlops-stacks/pull/187 broke mlops-stacks
deployments for non-UC projects. Snoozing the test until upstream is
fixed.

## Tests
The test is skipped on my local machine. CI run will verify it's also
skipped on Github Actions runners.
2025-01-02 11:39:11 +00:00