Skip to content
Proud to collaborate with Microsoft for Startups

runner.environment-provision-gcp ​

Provision GCP/GCE environment for a runner group

Provision GCE runner environment for a runner group.

Layers:

  1. validate — check required config, set PROVISIONING
  2. service_account — create GCP service account, grant log/metrics roles
  3. network — verify VPC has internet egress; create firewall if needed
  4. instance_template — create GCE Instance Template (idempotent)
  5. register_github — register GitHub runner group (GITHUB only)
  6. finalize — sync cached fields, set ACTIVE

Overview ​

PropertyValue
Workflow typeDag
LibraryApp-runners-gcp
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidYes—Runner group UUID
organization_uuiduuidYes—Organization UUID
workflow_run_idstringNo—Engine-stamped workflow run ID
workflow_run_uuidstringNo—Engine-stamped correlation/run id (ADR-015/E1); tolerated on input
registry_account_uuiduuidNo—Optional registry account UUID for multi-cloud image registry resolution

Output Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidYes—Runner group that was provisioned
organization_uuiduuidNo—Organization that owns the runner group
workflow_run_uuidstringNo—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_uuiduuidNo—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_namestringNo—Managed Instance Group created for the runner group
project_idstringNo—GCP project ID the runner group lives in
zonestringNo—GCE zone for the runner group
instance_templatestringNo—Instance template name created for the runner group
github_runner_group_idstringNo—Registered GitHub runner-group ID (GitHub integration only)
failure_reasonstringNo—Populated only when the workflow ends in FAILED
failure_typestringNo——
failed_actionstringNo——
failed_at_statestringNo——
failed_stepstringNo——
failed_layerstringNo——
errorstringNo——
error_typestringNo——
validate_gcp_environmentjsonNo—Output of the validate_gcp_environment DAG step
create_gce_service_accountjsonNo—Output of the create_gce_service_account DAG step
validate_gce_networkjsonNo—Output of the validate_gce_network DAG step
create_gce_instance_templatejsonNo—Output of the create_gce_instance_template DAG step
register_github_runner_groupjsonNo—Output of the register_github_runner_group DAG step
finalize_gcp_environmentjsonNo—Output of the finalize_gcp_environment DAG step

DAG Layers ​

#LayerStepsCompensation
1validaterunner.validate_gcp_environment—
2service_accountrunner.create_gce_service_account—
3networkrunner.validate_gce_network—
4instance_templaterunner.create_gce_instance_template—
5register_githubrunner.register_github_runner_group—
6finalizerunner.finalize_gcp_environment—

Execution Flow ​

Sub-workflows ​

Sub-workflowStep name
runner.validate_gcp_environmentvalidate_gcp_environment
runner.create_gce_service_accountcreate_gce_service_account
runner.validate_gce_networkvalidate_gce_network
runner.create_gce_instance_templatecreate_gce_instance_template
runner.register_github_runner_groupregister_github_runner_group
runner.finalize_gcp_environmentfinalize_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"
  }
}