mirror of https://github.com/databricks/cli.git
Merge remote-tracking branch 'origin' into feature/uc-volumes
This commit is contained in:
commit
8e25bb4a47
|
@ -49,4 +49,8 @@ type Bundle struct {
|
|||
|
||||
// Databricks CLI version constraints required to run the bundle.
|
||||
DatabricksCliVersion string `json:"databricks_cli_version,omitempty"`
|
||||
|
||||
// A stable generated UUID for the bundle. This is normally serialized by
|
||||
// Databricks first party template when a user runs bundle init.
|
||||
Uuid string `json:"uuid,omitempty"`
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@ func DefaultMutators() []bundle.Mutator {
|
|||
ComputeIdToClusterId(),
|
||||
InitializeVariables(),
|
||||
DefineDefaultTarget(),
|
||||
LoadGitDetails(),
|
||||
pythonmutator.PythonMutator(pythonmutator.PythonMutatorPhaseLoad),
|
||||
|
||||
// Note: This mutator must run before the target overrides are merged.
|
||||
|
|
|
@ -39,6 +39,7 @@ func Initialize() bundle.Mutator {
|
|||
mutator.MergePipelineClusters(),
|
||||
mutator.InitializeWorkspaceClient(),
|
||||
mutator.PopulateCurrentUser(),
|
||||
mutator.LoadGitDetails(),
|
||||
|
||||
mutator.DefineDefaultWorkspaceRoot(),
|
||||
mutator.ExpandWorkspaceRoot(),
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
package config_tests
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/databricks/cli/bundle"
|
||||
"github.com/databricks/cli/bundle/config/mutator"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGitAutoLoadWithEnvironment(t *testing.T) {
|
||||
b := load(t, "./environments_autoload_git")
|
||||
bundle.Apply(context.Background(), b, mutator.LoadGitDetails())
|
||||
assert.True(t, b.Config.Bundle.Git.Inferred)
|
||||
validUrl := strings.Contains(b.Config.Bundle.Git.OriginURL, "/cli") || strings.Contains(b.Config.Bundle.Git.OriginURL, "/bricks")
|
||||
assert.True(t, validUrl, fmt.Sprintf("Expected URL to contain '/cli' or '/bricks', got %s", b.Config.Bundle.Git.OriginURL))
|
||||
|
@ -17,6 +21,7 @@ func TestGitAutoLoadWithEnvironment(t *testing.T) {
|
|||
|
||||
func TestGitManuallySetBranchWithEnvironment(t *testing.T) {
|
||||
b := loadTarget(t, "./environments_autoload_git", "production")
|
||||
bundle.Apply(context.Background(), b, mutator.LoadGitDetails())
|
||||
assert.False(t, b.Config.Bundle.Git.Inferred)
|
||||
assert.Equal(t, "main", b.Config.Bundle.Git.Branch)
|
||||
validUrl := strings.Contains(b.Config.Bundle.Git.OriginURL, "/cli") || strings.Contains(b.Config.Bundle.Git.OriginURL, "/bricks")
|
||||
|
|
|
@ -14,6 +14,7 @@ import (
|
|||
|
||||
func TestGitAutoLoad(t *testing.T) {
|
||||
b := load(t, "./autoload_git")
|
||||
bundle.Apply(context.Background(), b, mutator.LoadGitDetails())
|
||||
assert.True(t, b.Config.Bundle.Git.Inferred)
|
||||
validUrl := strings.Contains(b.Config.Bundle.Git.OriginURL, "/cli") || strings.Contains(b.Config.Bundle.Git.OriginURL, "/bricks")
|
||||
assert.True(t, validUrl, fmt.Sprintf("Expected URL to contain '/cli' or '/bricks', got %s", b.Config.Bundle.Git.OriginURL))
|
||||
|
@ -21,6 +22,7 @@ func TestGitAutoLoad(t *testing.T) {
|
|||
|
||||
func TestGitManuallySetBranch(t *testing.T) {
|
||||
b := loadTarget(t, "./autoload_git", "production")
|
||||
bundle.Apply(context.Background(), b, mutator.LoadGitDetails())
|
||||
assert.False(t, b.Config.Bundle.Git.Inferred)
|
||||
assert.Equal(t, "main", b.Config.Bundle.Git.Branch)
|
||||
validUrl := strings.Contains(b.Config.Bundle.Git.OriginURL, "/cli") || strings.Contains(b.Config.Bundle.Git.OriginURL, "/bricks")
|
||||
|
@ -34,6 +36,7 @@ func TestGitBundleBranchValidation(t *testing.T) {
|
|||
})
|
||||
|
||||
b := load(t, "./git_branch_validation")
|
||||
bundle.Apply(context.Background(), b, mutator.LoadGitDetails())
|
||||
assert.False(t, b.Config.Bundle.Git.Inferred)
|
||||
assert.Equal(t, "feature-a", b.Config.Bundle.Git.Branch)
|
||||
assert.Equal(t, "feature-b", b.Config.Bundle.Git.ActualBranch)
|
||||
|
|
|
@ -35,6 +35,13 @@ var cachedUser *iam.User
|
|||
var cachedIsServicePrincipal *bool
|
||||
var cachedCatalog *string
|
||||
|
||||
// UUID that is stable for the duration of the template execution. This can be used
|
||||
// to populate the `bundle.uuid` field in databricks.yml by template authors.
|
||||
//
|
||||
// It's automatically logged in our telemetry logs when `databricks bundle init`
|
||||
// is run and can be used to attribute DBU revenue to bundle templates.
|
||||
var bundleUuid = uuid.New().String()
|
||||
|
||||
func loadHelpers(ctx context.Context) template.FuncMap {
|
||||
w := root.WorkspaceClient(ctx)
|
||||
return template.FuncMap{
|
||||
|
@ -57,6 +64,9 @@ func loadHelpers(ctx context.Context) template.FuncMap {
|
|||
"uuid": func() string {
|
||||
return uuid.New().String()
|
||||
},
|
||||
"bundle_uuid": func() string {
|
||||
return bundleUuid
|
||||
},
|
||||
// A key value pair. This is used with the map function to generate maps
|
||||
// to use inside a template
|
||||
"pair": func(k string, v any) pair {
|
||||
|
|
|
@ -32,6 +32,24 @@ func TestTemplatePrintStringWithoutProcessing(t *testing.T) {
|
|||
assert.Equal(t, `{{ fail "abc" }}`, cleanContent)
|
||||
}
|
||||
|
||||
func TestTemplateBundleUuidFunction(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
ctx = root.SetWorkspaceClient(ctx, nil)
|
||||
helpers := loadHelpers(ctx)
|
||||
r, err := newRenderer(ctx, nil, helpers, os.DirFS("."), "./testdata/bundle-uuid/template", "./testdata/bundle-uuid/library")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = r.walk()
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Len(t, r.files, 2)
|
||||
c1 := strings.Trim(string(r.files[0].(*inMemoryFile).content), "\n\r")
|
||||
assert.Equal(t, strings.Repeat(bundleUuid, 3), c1)
|
||||
c2 := strings.Trim(string(r.files[1].(*inMemoryFile).content), "\n\r")
|
||||
assert.Equal(t, strings.Repeat(bundleUuid, 5), c2)
|
||||
}
|
||||
|
||||
func TestTemplateRegexpCompileFunction(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
{{bundle_uuid}}{{bundle_uuid}}{{bundle_uuid}}
|
|
@ -0,0 +1 @@
|
|||
{{bundle_uuid}}{{bundle_uuid}}{{bundle_uuid}}{{bundle_uuid}}{{bundle_uuid}}
|
Loading…
Reference in New Issue