v0.2.8
v0.2.8
A dbt project runs here without being edited to say an emulator-specific
profile name.
docker pull ghcr.io/calvinchengx/databricks-emulator:0.2.8
A dbt_task's generated profile is keyed by the project's own name (#68)
dbt_task generates the dbt profile itself — that is the convenience, and it
is why a project can reach this emulator's warehouse without carrying
credentials. It filed that profile under a fixed key, databricks_emulator.
dbt resolves profile: from dbt_project.yml against profiles.yml, so a
project declaring any other name sent dbt looking for a profile that was never
written. The practical effect was that a project could only run here by
renaming its own profile — an edit that makes the project emulator-only, on
the one surface whose entire purpose is rehearsing what will later run against
Databricks. v0.2.7 gave a dbt_task back the evidence it produced; a consumer
moving its gold step onto Jobs then hit this on the very next step.
The name now travels from the project. projectProfileName reads the top-level
profile: out of the uploaded dbt_project.yml and keys the generated profile
by it, falling back to databricks_emulator when the key is absent — dbt
requires it, so that is a project dbt would reject on its own, and the fallback
keeps the generator total rather than adding a second error path.
Scanned, not parsed. This is one top-level scalar, and taking a YAML dependency
to read it would have been a larger change than the defect. Only a key at
column zero counts, so a profile: nested inside another block is never
mistaken for the project's.
The fixture is the witness. e2e/dbt-task's project now declares
profile: emulator_dbt_task, deliberately not the emulator's default: a
fixture named databricks_emulator would pass whether or not the name travels,
and prove nothing. That gate runs in CI, so the end-to-end half is witnessed
rather than argued. The unit half reads the profile the way the agent will —
Go quoted string, then JSON — and asserts on the key dbt will look up, not on
the source text, which would match a name that never reaches dbt.
Found by contoso-data-product's gold project, which names its profile
contoso_gold because that is what it is called everywhere else.
Upgrading
Nothing to change. A project that was edited to say databricks_emulator still
works, because that is what it declares; a project that says its own name now
works too.