Quick Start
Get a workflow running in under 2 minutes.
Your First Workflow
Create a file called ci.yaml:
jobs:
greet:
steps:
- name: hello
run: echo "Hello from trill!"
Run it:
trill run ci.yaml
You should see the TUI light up with your job running — jobs with multiple steps show their steps indented under the job in the tree. When a job finishes, you’ll get a success summary. If you’re piping output or running non-interactively, you’ll get plain text instead.
Add Parallel Jobs
Jobs run in parallel by default. Add a few more:
jobs:
lint:
steps:
- name: check
run: echo "Linting..." && sleep 1
test:
steps:
- name: run
run: echo "Testing..." && sleep 2
build:
steps:
- name: compile
run: echo "Building..." && sleep 1
All three jobs start at the same time. The workflow finishes when the slowest job completes.
Add Dependencies
Use depends_on to control execution order:
jobs:
setup:
steps:
- name: install
run: echo "Installing dependencies..."
lint:
depends_on: [setup]
steps:
- name: check
run: echo "Linting..."
test:
depends_on: [setup]
steps:
- name: run
run: echo "Running tests..."
deploy:
depends_on: [lint, test]
steps:
- name: ship
run: echo "Deploying..."
This creates a diamond dependency graph:
setup
/ \
lint test
\ /
deploy
lint and test run in parallel after setup. deploy waits for
both to finish.
Validate Without Running
Check your workflow for errors without executing it:
trill validate ci.yaml
This catches missing fields, unknown dependencies, and dependency cycles.
See the Execution Plan
Preview what would run:
trill run ci.yaml --dry-run
Shows the execution order, step commands, and any template expressions that will be resolved at runtime.
Next Steps
- Defining Workflows — Jobs, environment variables, outputs
- Defining Steps — Step types, approval gates, fields
- Debugging — Step through your workflow interactively