Tork
![](https://img.shields.io/badge/license-MIT-green.svg)
A Golang based high-performance, scalable and distributed workflow engine.
Features:
Documentation
See https://www.tork.run
Quick Start
-
Ensure you have Docker with API Version >= 1.42 (use docker version | grep API
to check).
-
Download the binary for your system from the releases page.
Hello World
Start in standalone
mode:
./tork run standalone
Submit a job in another terminal:
# hello.yaml
---
name: hello job
tasks:
- name: say hello
image: ubuntu:mantic #docker image
run: |
echo -n hello world
- name: say goodbye
image: ubuntu:mantic
run: |
echo -n bye world
JOB_ID=$(curl \
-s \
-X POST \
--data-binary @hello.yaml \
-H "Content-type: text/yaml" \
http://localhost:8000/jobs | jq -r .id)
Query for the status of the job:
curl -s http://localhost:8000/jobs/$JOB_ID | jq .
{
"id": "ed0dba93d262492b8cf26e6c1c4f1c98",
"state": "COMPLETED",
...
"execution": [
{
...
"state": "COMPLETED",
}
],
}
A slightly more interesting example
The following job:
- Downloads a remote video file using a
pre
task to a shared /tmp
volume.
- Converts the first 5 seconds of the downloaded video using
ffmpeg
.
- Uploads the converted video to a destination using a
post
task.
# convert.yaml
---
name: convert a video
inputs:
source: https://upload.wikimedia.org/wikipedia/commons/1/18/Big_Buck_Bunny_Trailer_1080p.ogv
tasks:
- name: convert the first 5 seconds of a video
image: jrottenberg/ffmpeg:3.4-alpine
run: |
ffmpeg -i /tmp/input.ogv -t 5 /tmp/output.mp4
volumes:
- /tmp
pre:
- name: download the remote file
image: alpine:3.18.3
env:
SOURCE_URL: "{{ inputs.source }}"
run: |
wget \
$SOURCE_URL \
-O /tmp/input.ogv
post:
- name: upload the converted file
image: alpine:3.18.3
run: |
wget \
--post-file=/tmp/output.mp4 \
https://devnull-as-a-service.com/dev/null
Submit the job in another terminal:
JOB_ID=$(curl \
-s \
-X POST \
--data-binary @convert.yaml \
-H "Content-type: text/yaml" \
http://localhost:8000/jobs | jq -r .id)
More examples
Check out the examples folder.
REST API
See the REST API documentation.
Web UI
Tork Web is a web based tool for interacting with Tork.
![](https://github.com/runabol/tork/raw/v0.0.9/docs/tork-web-v2.png)
License
Copyright (c) 2023-present Arik Cohen. Tork is free and open-source software licensed under the MIT License.