Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
ac63b89
refactor: replace opaque CI_PROFILES_YML secret with committed templa…
devin-ai-integration[bot] Feb 26, 2026
c2a16d4
fix: guard secret-dependent steps for docker targets (postgres, click…
devin-ai-integration[bot] Feb 26, 2026
cf1f222
refactor: replace shell-based profiles generation with Python CLI scr…
devin-ai-integration[bot] Feb 26, 2026
451ebb3
refactor: use Jinja for-loop for elementary profile, remove legacy fa…
devin-ai-integration[bot] Feb 26, 2026
01ddcd5
feat: use StrictUndefined when secrets are present to catch typos
devin-ai-integration[bot] Feb 26, 2026
b0cc1f4
fix: add isinstance(decoded, dict) validation for secrets JSON
devin-ai-integration[bot] Feb 26, 2026
a051188
fix: add auth_type:oauth for databricks, catch binascii.Error
devin-ai-integration[bot] Feb 26, 2026
a92a5b4
fix: revert docker/cloud split in elementary — run all targets under …
devin-ai-integration[bot] Feb 26, 2026
22c5849
fix: add missing bigquery profile fields (location, priority)
devin-ai-integration[bot] Feb 26, 2026
ddf9761
Merge remote-tracking branch 'origin/master' into devin/ele-5262-1772…
devin-ai-integration[bot] Feb 26, 2026
23f04ab
fix: apply toyaml filter to all secret-backed credential fields
devin-ai-integration[bot] Feb 26, 2026
91f260c
fix: strip YAML document-end marker from toyaml filter for scalar values
devin-ai-integration[bot] Feb 26, 2026
074cb29
fix: make toyaml filter type-aware — preserve int/bool, only quote am…
devin-ai-integration[bot] Feb 26, 2026
49c6152
fix: toyaml filter — emit numeric strings as unquoted ints for port f…
devin-ai-integration[bot] Feb 26, 2026
5f4f41e
fix: return empty string instead of empty dict for undefined values i…
devin-ai-integration[bot] Feb 26, 2026
766a2c3
fix: add tests/profiles/** to workflow trigger paths
devin-ai-integration[bot] Feb 26, 2026
25f34a0
refactor: simplify _yaml_inline function per review feedback
devin-ai-integration[bot] Feb 26, 2026
dc7625d
fix: broaden workflow trigger to tests/** to catch all test file changes
devin-ai-integration[bot] Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/test-all-warehouses.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ on:
branches: ["master"]
paths:
- elementary/**
- tests/**
- .github/**
- pyproject.toml
# For fork PRs - requires approval before running (has access to secrets)
pull_request_target:
branches: ["master"]
paths:
- elementary/**
- tests/**
- .github/**
- pyproject.toml
workflow_dispatch:
Expand Down
13 changes: 10 additions & 3 deletions tests/profiles/generate_profiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,17 @@ def __bool__(self) -> bool:


def _yaml_inline(value: Any) -> str:
"""Dump *value* as a compact inline YAML scalar / mapping."""
"""Render *value* for inline YAML.

* Dicts (e.g. bigquery keyfile) → compact ``{key: val, …}``
* Undefined (docker-only, no secrets) → empty string ``''``
* Everything else → pass through as-is
"""
if isinstance(value, Undefined):
return "{}"
return yaml.dump(value, default_flow_style=True).strip()
return "''"
if isinstance(value, dict):
return yaml.dump(value, default_flow_style=True).strip()
return value


@click.command()
Expand Down
44 changes: 22 additions & 22 deletions tests/profiles/profiles.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,19 @@ elementary_tests:

snowflake: &snowflake
type: snowflake
account: {{ snowflake_account }}
user: {{ snowflake_user }}
password: {{ snowflake_password }}
role: {{ snowflake_role }}
database: {{ snowflake_database }}
warehouse: {{ snowflake_warehouse }}
account: {{ snowflake_account | toyaml }}
user: {{ snowflake_user | toyaml }}
password: {{ snowflake_password | toyaml }}
role: {{ snowflake_role | toyaml }}
database: {{ snowflake_database | toyaml }}
warehouse: {{ snowflake_warehouse | toyaml }}
schema: {{ schema_name }}
threads: 4

bigquery: &bigquery
type: bigquery
method: service-account-json
project: {{ bigquery_project }}
project: {{ bigquery_project | toyaml }}
dataset: {{ schema_name }}
keyfile_json: {{ bigquery_keyfile | toyaml }}
location: US
Expand All @@ -48,34 +48,34 @@ elementary_tests:

redshift: &redshift
type: redshift
host: {{ redshift_host }}
user: {{ redshift_user }}
password: {{ redshift_password }}
port: {{ redshift_port }}
dbname: {{ redshift_dbname }}
host: {{ redshift_host | toyaml }}
user: {{ redshift_user | toyaml }}
password: {{ redshift_password | toyaml }}
port: {{ redshift_port | toyaml }}
dbname: {{ redshift_dbname | toyaml }}
schema: {{ schema_name }}
threads: 4

databricks_catalog: &databricks_catalog
type: databricks
host: {{ databricks_host }}
http_path: {{ databricks_http_path }}
catalog: {{ databricks_catalog }}
host: {{ databricks_host | toyaml }}
http_path: {{ databricks_http_path | toyaml }}
catalog: {{ databricks_catalog | toyaml }}
schema: {{ schema_name }}
auth_type: oauth
client_id: {{ databricks_client_id }}
client_secret: {{ databricks_client_secret }}
client_id: {{ databricks_client_id | toyaml }}
client_secret: {{ databricks_client_secret | toyaml }}
threads: 4

athena: &athena
type: athena
s3_staging_dir: {{ athena_s3_staging_dir }}
s3_data_dir: {{ athena_s3_data_dir }}
region_name: {{ athena_region }}
s3_staging_dir: {{ athena_s3_staging_dir | toyaml }}
s3_data_dir: {{ athena_s3_data_dir | toyaml }}
region_name: {{ athena_region | toyaml }}
database: awsdatacatalog
schema: {{ schema_name }}
aws_access_key_id: {{ athena_aws_access_key_id }}
aws_secret_access_key: {{ athena_aws_secret_access_key }}
aws_access_key_id: {{ athena_aws_access_key_id | toyaml }}
aws_secret_access_key: {{ athena_aws_secret_access_key | toyaml }}
threads: 4

# The internal CLI dbt_project uses profile "elementary", so we alias the
Expand Down
Loading