werf is a CI/CD tool for building your apps' images and deploying them to Kubernetes. It implements a GitOps approach and integrates with any existing CI systems (GitLab CI, GitHub Actions, etc.). Compatible with Helm. Written in Go.
werf alternatives and similar tools
Based on the "Deployment Automation" category.
Alternatively, view werf alternatives based on common mentions on social networks and blogs.
9.0 6.5 L3 werf VS FabricPython library and cli tool for streamlining the use of SSH for application deployment or systems administration tasks.
8.9 4.0 L4 werf VS CapistranoDeploy your application to any number of machines simultaneously, in sequence or as a rolling set via SSH (rake based).
6.5 8.7 L2 werf VS munkiWebserver-based repository of packages and package metadata, that allows macOS administrators to manage software installs.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of werf or a related project?
werf is an Open Source CLI tool written in Go, designed to simplify and speed up the delivery of applications. To use it, you need to describe the configuration of your application (in other words, how to build and deploy it to Kubernetes) and store it in a Git repo — the latter acts as a single source of truth. In short, that's what we call GitOps today.
- werf builds Docker images using Dockerfiles or an alternative fast built-in builder based on the custom syntax. It also deletes unused images from the Docker registry.
- werf deploys your application to Kubernetes using a chart in the Helm-compatible format with handy customizations and improved rollout tracking mechanism, error detection, and log output.
werf is not a complete CI/CD solution, but a tool for creating pipelines that can be embedded into any existing CI/CD system. It literally "connects the dots" to bring these practices into your application. We consider it a new generation of high-level CI/CD tools.
- Full application lifecycle management: build and publish images, deploy an application to Kubernetes, and remove unused images based on policies.
- The description of all rules for building and deploying an application (that may have any number of components) is stored in a single Git repository along with the source code (Single Source Of Truth).
- Build images using Dockerfiles.
- Alternatively, werf provides a custom builder tool with support for custom syntax, Ansible, and incremental rebuilds based on Git history.
- werf supports Helm compatible charts and complex fault-tolerant deployment processes with logging, tracking, early error detection, and annotations to customize the tracking logic of specific resources.
- werf is a CLI tool written in Go. It can be embedded into any existing CI/CD system to implement CI/CD for your application.
- Cross-platform development: Linux-based containers can be run on Linux, macOS, and Windows.
- Effortlessly build as many images as you like in one project.
- Build images using Dockerfiles or Stapel builder instructions.
- Build images concurrently on a single host (using file locks).
- Build images simultaneously.
- Build images distributedly.
- Content-based tagging.
- Advanced building process with Stapel:
- Incremental rebuilds based on git history.
- Build images with Ansible tasks or Shell scripts.
- Share a common cache between builds using mounts.
- Reduce image size by detaching source data and building tools.
- Build one image on top of another based on the same config.
- Debugging tools for inspecting the build process.
- Detailed output.
- Deploy an application to Kubernetes and check if it has been deployed correctly.
- Track the statuses of all application resources.
- Control the readiness of resources.
- Control the deployment process with annotations.
- Full visibility of both the deployment process and the final result.
- Logging and error reporting.
- Regular status reporting during the deployment phase.
- Debug problems effortlessly without unnecessary kubectl invocations.
- Prompt CI pipeline failure in case of a problem (i.e. fail fast).
- Instant detection of resource failures during the deployment process without having to wait for a timeout.
- Full compatibility with Helm 2.
- Ability to limit user permissions using RBAC definition when deploying an application (Tiller is compiled into werf and is run under the ID of the outside user that carries out the deployment).
- Parallel builds on a single host (using file locks).
- Distributed parallel deploys (coming soon) #1620.
- Сontinuous delivery of images with permanent tags (e.g., when using a branch-based tagging strategy).
- Clean up local and Docker registry by enforcing customizable policies.
- Keep images that are being used in the Kubernetes cluster. werf scans the following kinds of objects: Pod, Deployment, ReplicaSet, StatefulSet, DaemonSet, Job, CronJob, ReplicationController.
- Developing applications locally with werf #1940.
- (Kaniko-like) building in the userspace that does not require Docker daemon #1618.
- ~3-way-merge~ #1616.
- ~Content-based tagging~ #1184.
- ~Support for the most Docker registry implementations~ #2199.
- ~Parallel image builds~ #2200.
- ~Proven approaches and recipes for the most popular CI systems~ #1617.
- ~Distributed builds with the shared Docker registry~ #1614.
- ~Support for Helm 3~ #1606.
Documentation and support
Detailed documentaion is available in multiple languages.
Many guides are provided to quickly deploy your app into Kubernetes.
Russian-speaking users can also reach us in Telegram Chat.
Your issues are processed carefully if posted to issues at GitHub.
werf is a mature, reliable tool you can trust. Read about stability channels and release process.
You're also welcome to follow @werf_io to stay informed about all important news, articles, etc.
Apache License 2.0, see [LICENSE](LICENSE).
*Note that all licence references and agreements mentioned in the werf README section above are relevant to that project's source code only.