FAQ
===
.. raw:: html
Why use iapetus over X? 🤔
-------------------------
- **YAML and Go support**: Define workflows as code or config.
- **Plugin system**: Add any backend (Docker, Kubernetes, SSH, etc).
- **Easy assertions and dependencies**: Built-in checks and DAG execution.
- **Open source, no vendor lock-in**.
Can I use this in CI/CD? 🚦
--------------------------
Yes! iapetus is designed for automation and CI/CD. It runs anywhere Go runs, and integrates easily with GitHub Actions, GitLab CI, Jenkins, and more.
How do I contribute? 🤝
----------------------
- See :doc:`contributing` for setup, code style, and PR guidelines.
- All contributions—code, docs, tests, issues—are welcome!
Where to get help? 🆘
---------------------
- GitHub Issues (for bugs and feature requests)
- Discussions (for questions, ideas, and community support)
- This documentation (for usage, API, and troubleshooting)
Common errors and solutions 🛠️
-----------------------------
.. admonition:: Troubleshooting
:class: tip
- **"command not found"**: Check your command or Docker image. Make sure the binary exists in the container or shell.
- **"permission denied"**: Check file permissions and Docker access. Try running with elevated privileges if needed.
- **"Go not installed"**: Install Go from https://golang.org/dl/ and ensure it's in your PATH.
- **Docker errors**: Make sure Docker is installed, running, and your user has permission to run containers. See `iapetus.GetStatus()` for backend availability.
- **YAML parse errors**: Check indentation, use spaces not tabs, and quote strings with special characters.
- **Assertion failed**: Review the step's output and assertion logic. Use `output_contains` or custom assertions for flexible checks.
- **Timeouts**: Increase the `timeout` field if your step needs more time.
- **Retries not working**: Ensure `retries` is set at the step/task level.
How do I debug a failing workflow? 🐞
------------------------------------
- Check the output and error logs for each step.
- Use hooks for custom logging or metrics.
- Run with increased logging or in a local shell for easier troubleshooting.
- See :doc:`howto` for debugging tips.
How do I run steps in Docker? 🐳
------------------------------
- Set `backend: docker` and specify an `image` for your step or workflow.
- Make sure Docker is installed and running on your system.
- See the YAML Reference for examples.
How do I add a custom backend or assertion? 🔌
---------------------------------------------
- Implement the `Backend` interface in Go and register it with `iapetus.RegisterBackend()`.
- Add custom assertion functions in Go and attach them to your tasks.
- See the API Reference for plugin and assertion examples.
Where can I find more examples? 📚
----------------------------------
- See the :doc:`tutorial`, :doc:`howto`, and :doc:`yaml` pages.
- Explore the [GitHub repo](https://github.com/yindia/iapetus) for real-world workflows and code.
.. raw:: html