runner.environment-provision-gcp ​
Provision GCP/GCE environment for a runner group
Provision GCE runner environment for a runner group.
Layers:
- validate — check required config, set PROVISIONING
- service_account — create GCP service account, grant log/metrics roles
- network — verify VPC has internet egress; create firewall if needed
- instance_template — create GCE Instance Template (idempotent)
- register_github — register GitHub runner group (GITHUB only)
- finalize — sync cached fields, set ACTIVE
Overview ​
| Property | Value |
|---|---|
| Workflow type | Dag |
| Library | App-runners-gcp |
| Version | 1.0 |
Input Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
runner_group_uuid | uuid | Yes | — | Runner group UUID |
organization_uuid | uuid | Yes | — | Organization UUID |
workflow_run_id | string | No | — | Engine-stamped workflow run ID |
workflow_run_uuid | string | No | — | Engine-stamped correlation/run id (ADR-015/E1); tolerated on input |
registry_account_uuid | uuid | No | — | Optional registry account UUID for multi-cloud image registry resolution |
Output Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
runner_group_uuid | uuid | Yes | — | Runner group that was provisioned |
organization_uuid | uuid | No | — | Organization that owns the runner group |
workflow_run_uuid | string | No | — | Internal engine correlation/run identifier for this DAG execution, stamped by the engine (ADR-015/E1); not a reference to any business entity. |
registry_account_uuid | uuid | No | — | Registry account UUID echoed back from the input when the caller supplied one; the DAG start transition forwards the run's input into state_data. |
gce_mig_name | string | No | — | Managed Instance Group created for the runner group |
project_id | string | No | — | GCP project ID the runner group lives in |
zone | string | No | — | GCE zone for the runner group |
instance_template | string | No | — | Instance template name created for the runner group |
github_runner_group_id | string | No | — | Registered GitHub runner-group ID (GitHub integration only) |
failure_reason | string | No | — | Populated only when the workflow ends in FAILED |
failure_type | string | No | — | — |
failed_action | string | No | — | — |
failed_at_state | string | No | — | — |
failed_step | string | No | — | — |
failed_layer | string | No | — | — |
error | string | No | — | — |
error_type | string | No | — | — |
validate_gcp_environment | json | No | — | Output of the validate_gcp_environment DAG step |
create_gce_service_account | json | No | — | Output of the create_gce_service_account DAG step |
validate_gce_network | json | No | — | Output of the validate_gce_network DAG step |
create_gce_instance_template | json | No | — | Output of the create_gce_instance_template DAG step |
register_github_runner_group | json | No | — | Output of the register_github_runner_group DAG step |
finalize_gcp_environment | json | No | — | Output of the finalize_gcp_environment DAG step |
DAG Layers ​
| # | Layer | Steps | Compensation |
|---|---|---|---|
| 1 | validate | runner.validate_gcp_environment | — |
| 2 | service_account | runner.create_gce_service_account | — |
| 3 | network | runner.validate_gce_network | — |
| 4 | instance_template | runner.create_gce_instance_template | — |
| 5 | register_github | runner.register_github_runner_group | — |
| 6 | finalize | runner.finalize_gcp_environment | — |
Execution Flow ​
Sub-workflows ​
| Sub-workflow | Step name |
|---|---|
runner.validate_gcp_environment | validate_gcp_environment |
runner.create_gce_service_account | create_gce_service_account |
runner.validate_gce_network | validate_gce_network |
runner.create_gce_instance_template | create_gce_instance_template |
runner.register_github_runner_group | register_github_runner_group |
runner.finalize_gcp_environment | finalize_gcp_environment |
API Usage ​
bash
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "runner.environment-provision-gcp",
"initial_data": {
"runner_group_uuid": "value",
"organization_uuid": "value"
}
}