Coder Social home page Coder Social logo

alexey-mavrin / werf Goto Github PK

View Code? Open in Web Editor NEW

This project forked from werf/werf

0.0 0.0 0.0 48.36 MB

A solution for implementing efficient and consistent software delivery to Kubernetes facilitating best practices.

Home Page: https://werf.io

License: Apache License 2.0

Shell 0.71% Ruby 0.82% Python 1.15% Perl 0.41% Go 95.31% Smarty 0.01% HCL 0.17% Dockerfile 1.16% Mustache 0.12% Jinja 0.15%

werf's Introduction

GH Discussions Twitter Telegram chat
GoDoc Contributor Covenant

___

werf is a solution for implementing efficient and consistent software delivery to Kubernetes. It covers the entire life cycle of CI/CD and related artifacts, gluing commonly used tools (Git, Docker, Helm, K8s) and facilitating best practices.

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

Features

  • Full application lifecycle management: build and publish images, run tests, 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.

Building

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

Deploying

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

Cleaning up

  • Clean up container 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.

Production ready

werf is a mature, reliable tool you can trust. Read about release channels.

Documentation

Detailed documentation is available in multiple languages.

Many guides are provided for developers to quickly deploy apps to Kubernetes using werf.

Community & support

Please feel free to reach developers/maintainers and users via GitHub Discussions for any questions regarding werf.

Your issues are processed carefully if posted to issues at GitHub.

You're also welcome to:

  • follow @werf_io to stay informed about all important news, new articles, etc;
  • join our Telegram chat for announcements and ongoing talks: werf_io. (There is a Russian-speaking Telegram chat werf_ru as well.)

Featured in

Console - Developer Tool of the Week Scheme

Development

  1. Install go-task.
  2. task -l

License

Apache License 2.0, see LICENSE.

werf's People

Contributors

distorhead avatar alexey-igrychev avatar ilya-lesikov avatar z9r5 avatar flant-team-sysdev avatar zhbert avatar kirkonru avatar valent-ex avatar diafour avatar shurup avatar dependabot[bot] avatar cristaloleg avatar may-cat avatar alexey-gavrilov-flant avatar strangeman avatar kramarama avatar andrew-demb avatar kobel169 avatar lionskape avatar nyantechnolog avatar nickvolynkin avatar mrbeast avatar preved911 avatar dmolim avatar vadimdobryninflant avatar sabinich avatar kuzaxak avatar github-actions[bot] avatar dmitrykravchenko-flant avatar vranystepan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.