-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy-databricks-delta.sh
More file actions
executable file
·80 lines (70 loc) · 2.95 KB
/
Copy pathdeploy-databricks-delta.sh
File metadata and controls
executable file
·80 lines (70 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env bash
set -euo pipefail
if [[ "$#" -ne 2 ]]; then
echo "usage: $0 <profile> <target>" >&2
exit 1
fi
profile="$1"
target="$2"
bundle_engine="${DATABRICKS_BUNDLE_ENGINE:-direct}"
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
bundle_root="$repo_root/platform/databricks/delta"
# shellcheck source=/dev/null
source "$repo_root/scripts/load-source-config.sh"
load_convex_sync_source_config "$repo_root"
read_env_file_value() {
local key="$1"
local env_file="$repo_root/.env"
if [[ ! -f "$env_file" ]]; then
return 1
fi
local line
line="$(grep -E "^${key}=" "$env_file" | tail -n 1 || true)"
if [[ -z "$line" ]]; then
return 1
fi
printf '%s' "${line#*=}"
}
deployment_url="${CONVEX_DEPLOYMENT_URL:-$(read_env_file_value CONVEX_DEPLOYMENT_URL || true)}"
if [[ -z "$deployment_url" ]]; then
echo "CONVEX_DEPLOYMENT_URL is required" >&2
exit 1
fi
source_id="${CONVEX_SOURCE_ID:-$deployment_url}"
source_slug="${CONVEX_SYNC_SOURCE_SLUG:-default}"
source_slug_sql="${CONVEX_SYNC_SOURCE_SQL:-${source_slug//-/_}}"
table_name="${CONVEX_TABLE_NAME:-}"
deployment_slug="${DATABRICKS_DELTA_DEPLOYMENT_SLUG:-${source_slug}-${target}}"
job_name="${DATABRICKS_DELTA_JOB_NAME:-convex-sync-kit-${deployment_slug}-delta-extract}"
secret_scope="${DATABRICKS_DELTA_SECRET_SCOPE:-convex-sync-kit}"
secret_key="${DATABRICKS_DELTA_SECRET_KEY:-convex-deploy-key}"
catalog="${DATABRICKS_DELTA_CATALOG:-workspace}"
control_schema="${DATABRICKS_DELTA_CONTROL_SCHEMA:-convex_sync_kit_${source_slug_sql}_delta_control}"
bronze_schema="${DATABRICKS_DELTA_BRONZE_SCHEMA:-convex_sync_kit_${source_slug_sql}_delta_bronze}"
silver_schema="${DATABRICKS_DELTA_SILVER_SCHEMA:-convex_sync_kit_${source_slug_sql}_delta_silver}"
checkpoint_table="${DATABRICKS_DELTA_CHECKPOINT_TABLE:-connector_checkpoint}"
pipeline_name="${DATABRICKS_DELTA_AUTOCDC_PIPELINE_NAME:-convex-sync-kit-${deployment_slug}-autocdc}"
pipeline_file="${DATABRICKS_DELTA_AUTOCDC_PIPELINE_FILE:-${deployment_slug}-bronze-to-silver.sql}"
"$repo_root/scripts/ensure-databricks-delta-secret.sh" "$profile" "$secret_scope" "$secret_key"
bundle_args=(
--var "convex_deployment_url=$deployment_url"
--var "source_slug=$source_slug"
--var "deployment_slug=$deployment_slug"
--var "job_name=$job_name"
--var "convex_deploy_key_secret_scope=$secret_scope"
--var "convex_deploy_key_secret_key=$secret_key"
--var "source_id=$source_id"
--var "table_name=$table_name"
--var "catalog=$catalog"
--var "control_schema=$control_schema"
--var "bronze_schema=$bronze_schema"
--var "silver_schema=$silver_schema"
--var "checkpoint_table=$checkpoint_table"
--var "autocdc_pipeline_name=$pipeline_name"
--var "autocdc_pipeline_file=$pipeline_file"
)
(
cd "$bundle_root"
DATABRICKS_BUNDLE_ENGINE="$bundle_engine" databricks bundle validate -p "$profile" -t "$target" "${bundle_args[@]}"
DATABRICKS_BUNDLE_ENGINE="$bundle_engine" databricks bundle deploy -p "$profile" -t "$target" "${bundle_args[@]}"
)