Socrates is a simple automation server, inspired by Jenkins. It can run tasks in any code language and present them in a friendly dashboard to non-technical users.
For Evaluation and Testing:
- Download the
docker-compose.yaml
file from the root of the repository. - Run
docker-compose up
and wait until all components are healthy.
- Define Parameterized Blocks of code in any language to be run in Docker.
- Define Static and Dynamic parameters to be used by all Blocks.
- Create Instances of code that can be run individually.
- Create Steps and DAG Flows using Instances of code.
- Save Artifacts and Outputs, managed by Minio S3.
- Schedule any component and view it in a timeline.
- Connect a Github repository with or without a Webhook, automatically update all the code in the server.
- Manage a friendly Developer Portal, give your jobs custom names and folders.
- Can be run on Docker or on Kubernetes
Socrates's main components are the basic terms that define how to work with the server.
Component | Description |
---|---|
Block | A Block is a component made of a Code in a specific Language. It might have parameters, defaults, and a Pre-Code in Shell to execute before the main. It may also be directly attached to a file in Github. |
Instance | An Instance is attached to a Block. It is essentially a Parameterized Block, with its own execution History. Multiple Instance can exist for the same Block. It can be run individually, inside a Flow or be scheduled. |
Steps Flow | Steps Flow is a pipeline of one or more Instances arranged in Steps. They share ENV Variables (parameters) and Outputs to the next Steps. It has its own execution history and can be drilled down to individual Instances. |
DAG Flow | DAG Flow is a pipeline of one or more Instances arranged in a Graph. They share ENV Variables (parameters), and pass Outputs to the next Nodes in the Branch. It has its own execution history and can be drilled down to individual Instances. |
Parameters | Each Block and its Instance have "parameters" which always include defaults. These are basically translated as Strings (Environment Variables) inside the execution of any code language in its virtual machine. Parameters can also be Dynamic. |
Apache 2.0