Werf (previously known as dapp) helps to implement and support Continuous Integration and Continuous Delivery
Branch: master
Clone or download
distorhead Merge pull request #1315 from flant/nameless_image_cleanup
Fix removing nameless images in repo
Latest commit aaa17bd Feb 15, 2019


Build Status GoDoc

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.



  • 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.


Install Dependencies

  1. Git command line utility.

    Minimal required version is 1.9.0.

    To optionally use Git Submodules minimal version is 2.14.0.

  2. 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

Way 1 (recommended): 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;
  • automatically updates werf binary (can be disabled).
mkdir ~/bin
cd ~/bin
curl -L https://raw.githubusercontent.com/flant/multiwerf/master/install.sh | bash
source <(multiwerf use 1.0 alpha)

Way 2: download binary

The latest release can be reached via this page.

curl -L https://dl.bintray.com/flant/werf/v1.0.0-alpha.13/werf-darwin-amd64-v1.0.0-alpha.13 -o /tmp/werf
chmod +x /tmp/werf
sudo mv /tmp/werf /usr/local/bin/werf
curl -L https://dl.bintray.com/flant/werf/v1.0.0-alpha.13/werf-linux-amd64-v1.0.0-alpha.13 -o /tmp/werf
chmod +x /tmp/werf
sudo mv /tmp/werf /usr/local/bin/werf

Download werf.exe.

Way 3: from source

go get github.com/flant/werf/cmd/werf

Docs and support

Official documentation

Getting started

Make your first werf application!