Skip to content
Proud to collaborate with Microsoft for Startups

github.workflow-dispatch-select-runner ​

Select runner group for workflow_dispatch by routing rules

Select the runner group for a workflow_dispatch based on routing rules.

Routing priority:

  1. inputs.runner_group_uuid → use that runner group directly
  2. inputs.runner_labels → find runner group with matching labels
  3. Fall back to repository/org default runner group

Inputs:

  • organization_uuid: Organization UUID (public) (required)
  • repository_full_name: Full name "owner/repo" (required)
  • runner_group_uuid: Explicit runner group UUID (optional)
  • runner_labels: Requested runner labels (optional, comma-separated)
  • payload: Full webhook payload (for future: repo config defaults)

Outputs (terminal state_data):

  • runner_group_uuid: Selected runner group UUID
  • backend_type: RunnerBackendType of the selected group
  • runner_group: Serialized runner group info (for workflow)
  • dispatch_skipped: True when the org only has warm-pool-enabled (ec2_vm) groups — idle registered runners claim the job directly, no ephemeral launch needed
  • skip_reason: "warm_pool_claims_directly" when dispatch_skipped is True

Overview ​

PropertyValue
Workflow typeAtomic
LibraryApp-github
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
organization_uuidstringYes—Organization UUID (public)
repository_full_namestringYes—Repository full name
runner_group_uuiduuidNo—Explicit runner group UUID
runner_labelsstringNo—Requested runner labels
payloaddictNo—Full webhook payload
workflow_run_idstringNo—Parent DAG run ID

Output Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuidstringNo—Selected runner group UUID
backend_typestringNo—Backend type of selected group
runner_groupdictNo—Serialized runner group info
dispatch_skippedbooleanNo—True when a warm-pool group claims the job directly (no dispatch)
skip_reasonstringNo—Why the dispatch was skipped
organization_uuidstringNo—Organization UUID (public)
repository_full_namestringNo—Repository full name
runner_labelsstringNo—Requested runner labels
payloaddictNo—Full webhook payload
workflow_run_idstringNo—Parent DAG run ID
failure_reasonstringNo——
failure_typestringNo——
failed_actionstringNo——
failed_at_statestringNo——
failed_stepstringNo——
failed_layerstringNo——
errorstringNo——
error_typestringNo——

States ​

StateInitialTerminalSuccessAuto-advanceDescription
pendingYesNo—execute—
completedNoYesYes——
failedNoYesNo——

State Diagram ​

Transitions ​

FromActionToDescription
pendingexecutecompleted—
* (any state)failfailed—

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "github.workflow-dispatch-select-runner",
  "initial_data": {
    "organization_uuid": "value",
    "repository_full_name": "value"
  }
}