https://github.com/yindia/iapetus
Automate, test, and orchestrate anything that runs in a shell, container, or cloud. No YAML hell. No vendor lock-in. 100% open source.
https://github.com/yindia/iapetus
cicd dag golang integration-testing workflow-engine
Last synced: about 1 month ago
JSON representation
Automate, test, and orchestrate anything that runs in a shell, container, or cloud. No YAML hell. No vendor lock-in. 100% open source.
- Host: GitHub
- URL: https://github.com/yindia/iapetus
- Owner: yindia
- License: apache-2.0
- Created: 2024-12-28T12:41:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-22T11:33:29.000Z (12 months ago)
- Last Synced: 2025-06-22T12:30:14.868Z (12 months ago)
- Topics: cicd, dag, golang, integration-testing, workflow-engine
- Language: Go
- Homepage: https://iapetus.readthedocs.io/en/latest/index.html
- Size: 8.81 MB
- Stars: 18
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# iapetus π
[](https://pkg.go.dev/github.com/yindia/iapetus)
[](https://goreportcard.com/report/github.com/yindia/iapetus)
[](https://codecov.io/gh/yindia/iapetus)
[](LICENSE)
π **Open-source workflow engine for DevOps, CI/CD, and automation**
β‘οΈ Automate, test, and orchestrate anythingβshell, container, or cloud
---
## β¨ Why iapetus?
- β‘οΈ **Lightning-fast**: Parallel, dependency-aware execution
- π **Pluggable**: Bash, Docker, and custom backends
- π§ͺ **Assertions**: Output, exit code, JSON, regex, and more
- π **YAML or Go**: Use as config or code
- π‘οΈ **Battle-tested**: For CI/CD, DevOps, and E2E testing
---
## π Demo

---
## β‘οΈ Quickstart
```sh
git clone https://github.com/yindia/iapetus.git
cd iapetus/example/yaml
go run main.go
```
---
## π Example: YAML Workflow
```yaml
name: hello-world
steps:
- name: say-hello
command: echo
args: ["Hello, iapetus!"]
raw_asserts:
- output_contains: iapetus
```
---
## π» Example: Go API
```go
task := iapetus.NewTask("say-hello", 2*time.Second, nil).
AddCommand("echo").
AddArgs("Hello, iapetus!").
AssertOutputContains("iapetus")
workflow := iapetus.NewWorkflow("hello-world", zap.NewNop()).AddTask(*task)
workflow.Run()
```
---
## π§© Features
- π **Parallel, dependency-aware execution**
- β
**Built-in & custom assertions**
- β±οΈ **Retries, timeouts, env vars, container images**
- π **Plugin backends**: Bash, Docker, and more
- πͺ **Hooks for logging, metrics, and custom logic**
- π **Beautiful logs and error reporting**
---
## π€ Contributing
We welcome PRs, issues, and feedback! See [Contributing Guide](https://iapetus.readthedocs.io/en/latest/contributing.html).
---
π **Star iapetus if you love it!**
[](https://www.star-history.com/#yindia/iapetus&Date)