registry.image.build-publish ​
Build an application container image and publish it to the deployment registry catalog.
Overview ​
| Property | Value |
|---|---|
| Workflow type | Dag |
| Library | App-registry |
| Version | 1.0 |
Input Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
organization_uuid | uuid | Yes | — | Organization UUID for catalog scope. |
connection_uuid | uuid | Yes | — | GCP connection used for build and registry. |
project_id | string | No | — | GCP project override. |
region | string | Yes | — | Artifact Registry region. |
repository_id | string | Yes | — | Artifact Registry repository id. |
image_name | string | Yes | — | Image path/name inside the repository. |
tag | string | Yes | — | Image tag to publish. |
source | json | Yes | — | Source descriptor, e.g. git repo/ref or archive URI. |
dockerfile | string | No | — | Dockerfile path. |
context_dir | string | No | — | Build context directory. |
build_args | json | No | — | Docker build args. |
substitutions | json | No | — | Cloud Build substitutions. |
service_account | string | No | — | Cloud Build service account. |
registry_repository_uuid | uuid | No | — | Existing catalog repository row to sync. |
workflow_run_id | string | No | — | Engine-stamped workflow_run_id when invoked as a DAG step (ADR-015 E1) |
Output Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
organization_uuid | uuid | No | — | Echoed organization UUID. |
connection_uuid | uuid | No | — | Echoed GCP connection UUID. |
project_id | string | No | — | Effective GCP project. |
image_reference | string | No | — | Published image tag reference. |
image_digest | string | No | — | Resolved digest when available. |
immutable_reference | string | No | — | Digest-pinned reference for Deploy rollout. |
build_id | string | No | — | Cloud Build id. |
build_status | string | No | — | Terminal Cloud Build status. |
build_log_url | string | No | — | Cloud Build logs URL. |
registry_repository_uuid | uuid | No | — | Catalog repository UUID. |
registry_image_uuid | uuid | No | — | Catalog image UUID. |
registry_image_version_uuid | uuid | No | — | Catalog image version UUID. |
ensure_artifact_repository | json | No | — | Output state_data from DAG step ensure_artifact_repository. |
start_cloud_build | json | No | — | Output state_data from DAG step start_cloud_build. |
wait_cloud_build | json | No | — | Output state_data from DAG step wait_cloud_build. |
sync_repository | json | No | — | Output state_data from DAG step sync_repository. |
resolve_published_image | json | No | — | Output state_data from DAG step resolve_published_image. |
failure_reason | string | No | — | Engine failure reason. |
failure_type | string | No | — | Engine failure type classification. |
failed_action | string | No | — | Action name that caused the failure. |
failed_at_state | string | No | — | State where failure occurred. |
failed_step | string | No | — | Failed DAG step name. |
failed_layer | integer | No | — | 1-based failed DAG layer number emitted by the engine. |
error | string | No | — | Error message. |
error_type | string | No | — | Error class. |
DAG Layers ​
| # | Layer | Steps | Compensation |
|---|---|---|---|
| 1 | ensure_registry | gcp.artifactregistry.repository.ensure | — |
| 2 | start_build | gcp.cloudbuild.image.build | — |
| 3 | wait_for_build | gcp.cloudbuild.build.wait | — |
| 4 | reconcile_catalog | registry.repository-sync | — |
| 5 | resolve_image | registry.image.resolve | — |
Execution Flow ​
Sub-workflows ​
| Sub-workflow | Step name |
|---|---|
gcp.artifactregistry.repository.ensure | ensure_artifact_repository |
gcp.cloudbuild.image.build | start_cloud_build |
gcp.cloudbuild.build.wait | wait_cloud_build |
registry.repository-sync | sync_repository |
registry.image.resolve | resolve_published_image |
API Usage ​
bash
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "registry.image.build-publish",
"initial_data": {
"organization_uuid": "value",
"connection_uuid": "value",
"region": "value",
"repository_id": "value"
}
}