Skip to main content

Workflow structure

The workflow is the top-level definition that contains all jobs and their configurations. This page describes the fields available at the workflow level.

Fields​

id (required)​

Unique identifier for the workflow. This ID forms part of the resource name: /workspaces/{workspace-id}/workflows/{id}.

Type: string (non-empty)

Use the id when calling this workflow from other workflows with WorkflowCall. The ID must be unique within the workspace.

Example:

id: model-training-pipeline
Note

For workflow references and resource names, see Reusable workflows.

name (optional)​

Display name of the workflow.

Type: string

The name field is optional and does not need to be unique. Multiple workflows can share the same display name. Use name for human-readable display only. WorkflowCall references always use the id field.

Example:

id: model-training-pipeline
name: Model Training Pipeline

inputs (optional)​

Workflow input parameters that you provide when triggering the workflow. Reference inputs using ${{ .inputs.<name> }}.

Type: Map of input definitions

For input definition, types, defaults, and usage, see Inputs.

concurrency (optional)​

Controls concurrent execution of workflows. Use this field to prevent multiple workflow instances from running simultaneously.

Type: Concurrency object

Example:

concurrency:
group: model-deploy
cancel_in_progress: false

For detailed configuration, see Concurrency.

trigger (optional)​

Defines when the workflow runs, such as on a schedule with cron expressions, and whether other workflows can call it.

Type: Trigger object

For scheduling options, see Triggers. For callable workflows, see Reusable workflows.

env (optional)​

Global environment variables available to all jobs and steps in the workflow.

Type: Map of string to string

For scope, inheritance, and precedence rules, see Environment variables.

secrets (optional)​

Secrets from H2O Secure Store. Define secrets at the workflow level and reference them using ${{ .secrets.<as> }}.

Type: List of secret definitions

For secret definition, resource paths, and usage, see Secrets.

cancel_on_failure (optional)​

Cancel all running jobs when any job fails.

Type: bool

Default: true

For behavior details and interaction with continue_on_error, see Failure handling.

jobs (required)​

Map of job definitions, keyed by unique job ID. Each job contains steps that run sequentially.

Type: Map of job definitions

For job configuration, runners, dependencies, and execution order, see Jobs.

Complete example​

The following example shows a workflow with multiple configuration options:

id: ml-training-pipeline
name: ML Training Pipeline

inputs:
model_type:
type: string
required: true
description: Type of model to train
epochs:
type: int
default: 100

concurrency:
group: training-${{ .inputs.model_type }}

trigger:
schedule:
- cron: "0 0 * * *"
inputs:
model_type: "xgboost"

env:
EXPERIMENT_NAME: baseline-v1

secrets:
- name: workspaces/abc123/secrets/api-key
as: api_key

cancel_on_failure: true

jobs:
train:
name: Train Model
steps:
- name: Train
env:
MODEL: ${{ .inputs.model_type }}
API_KEY: ${{ .secrets.api_key }}
run: python train.py --model $MODEL --epochs ${{ .inputs.epochs }}

Feedback