Example DAGs
Hello World
name: hello world
steps:
- name: s1
command: echo hello world
- name: s2
command: echo done!
depends:
- s1
Conditional Steps
params: foo
steps:
- name: step1
command: echo start
- name: foo
command: echo foo
depends:
- step1
preconditions:
- condition: "$1"
expected: foo
- name: bar
command: echo bar
depends:
- step1
preconditions:
- condition: "$1"
expected: bar
File Output
steps:
- name: write hello to '/tmp/hello.txt'
command: echo hello
stdout: /tmp/hello.txt
Passing Output to Next Step
steps:
- name: pass 'hello'
command: echo hello
output: OUT1
- name: output 'hello world'
command: bash
script: |
echo $OUT1 world
depends:
- pass 'hello'
Running a Docker Container
steps:
- name: deno_hello_world
executor:
type: docker
config:
image: "denoland/deno:latest"
autoRemove: true
command: run https://raw.githubusercontent.com/denoland/deno-docs/main/by-example/hello-world.ts
See Docker Executor for more details.
Sending HTTP Requests
steps:
- name: get fake json data
executor: http
command: GET https://jsonplaceholder.typicode.com/comments
script: |
{
"timeout": 10,
"headers": {},
"query": {
"postId": "1"
},
"body": ""
}
Querying JSON Data with jq
steps:
- name: run query
executor: jq
command: '{(.id): .["10"].b}'
script: |
{"id": "sample", "10": {"b": 42}}
Expected Output:
{
"sample": 42
}
Formatting JSON Data with jq
steps:
- name: format json
executor: jq
script: |
{"id": "sample", "10": {"b": 42}}
Expected Output:
{
"10": {
"b": 42
},
"id": "sample"
}
Outputting Raw Values with jq
steps:
- name: output raw value
executor:
type: jq
config:
raw: true
command: '.id'
script: |
{"id": "sample", "10": {"b": 42}}
Expected Output:
sample
Sending Email Notifications
steps:
- name: Sending Email on Finish or Error
command: echo "hello world"
mailOn:
failure: true
success: true
smtp:
host: "smtp.foo.bar"
port: "587"
username: "<username>"
password: "<password>"
errorMail:
from: "foo@bar.com"
to: "foo@bar.com"
prefix: "[Error]"
attachLogs: true
infoMail:
from: "foo@bar.com"
to: "foo@bar.com"
prefix: "[Info]"
attachLogs: true
Sending Email
smtp:
host: "smtp.foo.bar"
port: "587"
username: "<username>"
password: "<password>"
steps:
- name: step1
executor:
type: mail
config:
to: <to address>
from: <from address>
subject: "Sample Email"
message: |
Hello world
Customizing Signal Handling on Stop
steps:
- name: step1
command: bash
script: |
for s in {1..64}; do trap "echo trap $s" $s; done
sleep 60
signalOnStop: "SIGINT"