Skip to content

GCP.Dataform reference

Source: src/GCP/Dataform/ProjectsLocationsFolder.ts

A Dataform folder used to organize repositories and nested folders.

Folders have no labels API, so Alchemy stamps ownership into displayName for list / nuke. Location is immutable. Display name updates in place; containingFolder is applied with MoveFolder.

ProjectsLocationsFolder: Creating a Folder

Section titled “ProjectsLocationsFolder: Creating a Folder”

Root folder

const folder = yield* GCP.Dataform.ProjectsLocationsFolder("Analytics", {
displayName: "analytics",
});

Nested folder

const child = yield* GCP.Dataform.ProjectsLocationsFolder("Models", {
displayName: "models",
containingFolder: folder.name,
});

Source: src/GCP/Dataform/RepositoriesReleaseConfig.ts

A Dataform release configuration — compiles a Git commitish on a schedule (or on demand) into a compilation result.

Release configs have no labels field, so Alchemy stamps ownership into codeCompilationConfig.vars. Changing releaseConfigId, repository, or location replaces the config. Commitish, schedule, disabled flag, vars, and the current compilation result update in place.

RepositoriesReleaseConfig: Creating a Release Config

Section titled “RepositoriesReleaseConfig: Creating a Release Config”

Compile main

const release = yield* GCP.Dataform.RepositoriesReleaseConfig("Prod", {
repository: repo.name,
gitCommitish: "main",
});

Nightly release

const release = yield* GCP.Dataform.RepositoriesReleaseConfig("Nightly", {
repository: repo.name,
gitCommitish: "main",
cronSchedule: "0 8 * * *",
timeZone: "America/Los_Angeles",
});

Source: src/GCP/Dataform/RepositoriesWorkflowConfig.ts

A Dataform workflow configuration — executes a release config’s compilation result on a schedule (or on demand).

Workflow configs have no labels field, so ownership is the parent repository’s Alchemy labels. Changing workflowConfigId, repository, or location replaces the config. Release config, schedule, disabled flag, and invocation options update in place.

RepositoriesWorkflowConfig: Creating a Workflow Config

Section titled “RepositoriesWorkflowConfig: Creating a Workflow Config”

Run a release

const workflow = yield* GCP.Dataform.RepositoriesWorkflowConfig("Hourly", {
repository: repo.name,
releaseConfig: release.name,
});

Disabled schedule

const workflow = yield* GCP.Dataform.RepositoriesWorkflowConfig("Hourly", {
repository: repo.name,
releaseConfig: release.name,
cronSchedule: "0 * * * *",
disabled: true,
});

Source: src/GCP/Dataform/RepositoriesWorkflowInvocation.ts

A Dataform workflow invocation — a single run of a compilation result (directly or via a workflow config).

Invocations have no update API and no labels. Identity is server-assigned; changing repository, compilationResult, workflowConfig, or invocationConfig replaces the invocation. list / nuke finds invocations under Alchemy-labeled repositories. A running invocation is cancelled before delete.

RepositoriesWorkflowInvocation: Creating a Workflow Invocation

Section titled “RepositoriesWorkflowInvocation: Creating a Workflow Invocation”

Invoke a compilation result

const run = yield* GCP.Dataform.RepositoriesWorkflowInvocation("Run", {
repository: repo.name,
compilationResult: compilation.name,
});

Invoke a workflow config

const run = yield* GCP.Dataform.RepositoriesWorkflowInvocation("Run", {
repository: repo.name,
workflowConfig: workflow.name,
});

Source: src/GCP/Dataform/RepositoriesWorkspace.ts

A Dataform Git workspace inside a repository.

Workspaces have no update API. Changing workspaceId, repository, location, or disableMoves replaces the workspace. Ownership for list / nuke is the parent repository’s Alchemy labels.

RepositoriesWorkspace: Creating a Workspace

Section titled “RepositoriesWorkspace: Creating a Workspace”

Generated name

const workspace = yield* GCP.Dataform.RepositoriesWorkspace("Dev", {
repository: repo.name,
});

Named workspace

const workspace = yield* GCP.Dataform.RepositoriesWorkspace("Dev", {
repository: repo.name,
workspaceId: "dev",
});

Source: src/GCP/Dataform/Repository.ts

A Dataform Git repository — the container for workspaces, release configs, workflow configs, and workflow invocations.

Changing repositoryId, location, or kmsKeyName replaces the repository. Display name, labels, Git remote, service account, npmrc secret, and compilation overrides update in place. containingFolder is applied with MoveRepository.

Generated name

const repo = yield* GCP.Dataform.Repository("Analytics", {
labels: { env: "test" },
});

Named repository

const repo = yield* GCP.Dataform.Repository("Analytics", {
repositoryId: "analytics",
location: "us-central1",
displayName: "analytics",
});

Source: src/GCP/Dataform/Team.ts

A Dataform team folder — a project-level container for repositories and folders with hierarchical access control.

Team folders have no labels API, so Alchemy stamps ownership into displayName for list / nuke. Location is immutable. Display name updates in place.

Generated display name

const team = yield* GCP.Dataform.Team("Analytics", {});

Named team folder

const team = yield* GCP.Dataform.Team("Analytics", {
location: "us-central1",
displayName: "analytics",
});