Werf (previously known as Dapp) is made to implement and support Continuous Integration and Continuous Delivery (CI/CD).
It helps DevOps engineers generate and deploy images by linking together:
- application code (with Git support),
- infrastructure code (with Ansible or shell scripts), and
- platform as a service (Kubernetes).
Werf simplifies development of build scripts, reduces commit build time and automates deployment.
It is designed to make engineer's work fast end efficient.
Contents
Features
- Complete application lifecycle management: build and cleanup images, deploy application into Kubernetes.
- Incremental rebuilds for git: reducing average build time for a sequence of git commits.
- Building images with Ansible or Shell scripts.
- Building multiple images from one description.
- Sharing a common cache between builds.
- Reducing image size by detaching source data and build tools.
- Running distributed builds with common registry.
- Advanced tools to debug built images.
- Tools for cleaning both local and remote Docker registry caches.
- Deploying to Kubernetes via helm, the Kubernetes package manager.
Installation
Install Dependencies
-
Git command line utility.
Minimal required version is 1.9.0.
To optionally use Git Submodules minimal version is 2.14.0.
-
Helm Kubernetes package manager. Helm is optional and only needed for deploy-related commands.
Helm client installation instructions.
Tiller backend installation instructions.
Minimal version is v2.7.0-rc1.
Install Werf
Download binary
The latest release can be reached via this page.
MacOS
curl -L https://dl.bintray.com/flant/werf/v1.0.0-alpha.8/werf-darwin-amd64-v1.0.0-alpha.8 -o /tmp/werf
chmod +x /tmp/werf
sudo mv /tmp/werf /usr/local/bin/werf
Linux
curl -L https://dl.bintray.com/flant/werf/v1.0.0-alpha.8/werf-linux-amd64-v1.0.0-alpha.8 -o /tmp/werf
chmod +x /tmp/werf
sudo mv /tmp/werf /usr/local/bin/werf
Windows
Download werf.exec.
Using Multiwerf
Multiwerf is a version manager for Werf, which:
- downloads werf binary builds;
- manages multiple versions of binaries installed on a single host, that can be used at the same time;
- enables autoupdates (optionally).
From source
go get github.com/flant/werf/cmd/werf
Getting started
Make your first werf application!