Code Monkey home page Code Monkey logo

multiwerf's Introduction

GH Discussions Twitter Telegram chat
GoDoc Contributor Covenant Artifact Hub

werf is a CNCF Sandbox CLI tool to implement full-cycle CI/CD to Kubernetes easily. werf integrates into your CI system and leverages familiar and reliable technologies, such as Git, Dockerfile, Helm, and Buildah.

What makes werf special:

  • Complete application lifecycle management: build and publish container images, test, deploy an application to Kubernetes, distribute release artifacts and clean up the container registry.
  • Ease of use: use Dockerfiles and Helm chart for configuration and let werf handle all the rest.
  • Advanced features: automatic build caching and content-based tagging, enhanced resource tracking and extra capabilities in Helm, a unique container registry cleanup approach, and more.
  • Gluing common technologies: Git, Buildah, Helm, Kubernetes, and your CI system of choice.
  • Production-ready: werf has been used in production since 2017; thousands of projects rely on it to build & deploy various apps.

Quickstart

The quickstart guide shows how to set up the deployment of an example application (a cool voting app in our case) using werf.

Installation

The installation guide helps set up and use werf both locally and in your CI system.

Documentation

Detailed usage and reference for werf are available in documentation in multiple languages.

Developers can get all the necessary knowledge about application delivery in Kubernetes (including basic understanding of K8s primitives) in the werf guides. They provide ready-to-use examples for popular frameworks, including Node.js (JavaScript), Spring Boot (Java), Django (Python), Rails (Ruby), and Laravel (PHP).

Community & support

Please feel free to reach developers/maintainers and users via GitHub Discussions for any questions regarding werf. You're also welcome on Stack Overflow: when you tag a question with werf, our team is notified and comes to help you.

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

For questions that may require a more detailed and prompt discussion, you can use:

  • #werf channel in the CNCF’s Slack workspace;
  • werf_io Telegram chat. (There is a Russian-speaking Telegram chat werf_ru as well.)

Follow @werf_io to stay informed about all important project's news, new articles, etc.

Contributing

This contributing guide outlines the process to help get your contribution accepted.

License

Apache License 2.0, see LICENSE.

Featured in

Console - Developer Tool of the Week Scheme

multiwerf's People

Contributors

alexey-igrychev avatar diafour avatar distorhead avatar grim-yawn avatar lionskape avatar z9r5 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multiwerf's Issues

Multiwerf-use does not work in MacOS

user@mac~/bin$ source <(multiwerf use 1.0 beta)
user@mac~/bin$ werf build --stages-storage :local
bash: werf: command not found
user@mac~/bin$ multiwerf use 1.0 beta
#
echo -e "\e[32m"'multiwerf v1.0.15. Self-update is delayed: 23h59m14s remains till next self-update'"\e[0m"
#
echo -e "\e[33m"'No valid versions found for 1.0/beta in local storage ~/.multiwerf'"\e[0m"
#
echo -e "\e[32m"'Detect version '"'"'v1.0.3-beta.9'"'"' as latest for channel 1.0/beta'"\e[0m"



# # update werf success
echo -e "\e[32m"'werf 1.0/beta: update successful, use v1.0.3-beta.9'"\e[0m"
#
# Function with path to chosen version of werf binary.
# To remove function use unset:
# unset -f werf
werf() {
if [[ $1 == "--path" ]] ; then echo '/Users/asidorovj/.multiwerf/v1.0.3-beta.9/werf-darwin-amd64-v1.0.3-beta.9' ; return ; fi
/Users/asidorovj/.multiwerf/v1.0.3-beta.9/werf-darwin-amd64-v1.0.3-beta.9 "$@"
}

# Please, source me: source <(multiwerf ...)

user@mac~/bin$
user@mac~/bin$
user@mac~/bin$
user@mac~/bin$ source <(multiwerf use 1.0 beta)
user@mac~/bin$ werf build --stages-storage :local
bash: werf: command not found

Implement garbage collection of old werf binaries

As a build-host admin I want to keep ~/.multiwerf folder from growing in size by werf-binaries auto updates. Multiwerf should have a GC procedure, which should be initiated automatically and clear ~/.multiwerf from old werf binaries.

'Use' command sometimes generate script with empty path to werf binary

Sometimes use command generate a script without path to werf binary. No warnings, no errors, multiwerf output looks good, but script is not valid:

multiwerf is /home/gitlab-runner/bin/multiwerf
werf 1.0/beta stays at v1.0.1-beta.9
werf () 
{ 
    if [[ $1 == "--path" ]]; then
        echo '';  # <-- path to werf binary should be here
        return;
    fi;
    "$@"  # <-- path to werf binary should be here
}

get.sh - storage.yandexcloud.net is blocked under corporate proxies

Hi team,

For some corporate proxies the domain storage.yandexcloud.net is blocked, because "reasons". This might hurt the adoption of the solution, as this is where get.sh is trying to fetch the binaries from.

I think as an alternative you could pull the release binaries from github.

The error looks like the following:

curl -L https://raw.githubusercontent.com/werf/multiwerf/master/get.sh | bash -x                                                                                                                                                                    i30662@LVVD9DBEMD6M
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3582  100  3582    0     0  17645      0 --:--:-- --:--:-- --:--:-- 17645
+ set -e -o nounset
+ http_client=curl
+ PROGRAM=multiwerf
++ uname
++ tr '[:upper:]' '[:lower:]'
+ OS=darwin
++ uname -m
+ ARCH=x86_64
+ DL_URL_BASE=https://storage.yandexcloud.net/multiwerf/targets/releases
+ '[' x86_64 = x86_64 ']'
+ ARCH=amd64
+ check_os_arch
+ supported='linux-amd64 linux-arm64 darwin-amd64 darwin-arm64'
+ echo 'linux-amd64 linux-arm64 darwin-amd64 darwin-arm64'
+ tr ' ' '\n'
+ grep -q darwin-amd64
+ detect_downloader
++ curl --version
+ tmp=
+ return
+ VERSION=latest
+ MULTIWERF_BIN_NAME=multiwerf-darwin-amd64-latest
+ echo 'Downloading multiwerf-darwin-amd64-latest...'
Downloading multiwerf-darwin-amd64-latest...
+ download_file https://storage.yandexcloud.net/multiwerf/targets/releases/latest/multiwerf-darwin-amd64-latest multiwerf-darwin-amd64-latest
+ '[' curl = curl ']'
+ curl -Ls https://storage.yandexcloud.net/multiwerf/targets/releases/latest/multiwerf-darwin-amd64-latest -o multiwerf-darwin-amd64-latest
+ return
+ echo 'Checking hash sum...'
Checking hash sum...
+ download_file https://storage.yandexcloud.net/multiwerf/targets/releases/latest/SHA256SUMS multiwerf.sha256sums
+ '[' curl = curl ']'
+ curl -Ls https://storage.yandexcloud.net/multiwerf/targets/releases/latest/SHA256SUMS -o multiwerf.sha256sums
+ return
+ sha256check multiwerf-darwin-amd64-latest multiwerf.sha256sums
+ BIN_FILE=multiwerf-darwin-amd64-latest
+ SHA_FILE=multiwerf.sha256sums
+ SHA_SUM=multiwerf.sha256sums.sum
+ grep multiwerf-darwin-amd64-latest multiwerf.sha256sums
+ sha_cmd=sha256sum
+ '[' darwin = darwin ']'
+ sha_cmd='shasum -a 256'
+ shasum -a 256 -c multiwerf.sha256sums.sum
shasum: multiwerf.sha256sums.sum: no properly formatted SHA checksum lines found
+ rm -f multiwerf.sha256sums.sum multiwerf.sha256sums multiwerf-darwin-amd64-latest
+ return 1
+ echo 'multiwerf-darwin-amd64-latest sha256 hash is not verified. Please download and check hash manually.'
multiwerf-darwin-amd64-latest sha256 hash is not verified. Please download and check hash manually.
+ exit 1

Error while installing to macOS on Apple M1 chip

multiwerf installation is not currently supported on darwin-arm64.

❯ curl -L https://raw.githubusercontent.com/werf/multiwerf/master/get.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3557  100  3557    0     0   9120      0 --:--:-- --:--:-- --:--:--  9120

multiwerf installation is not currently supported on darwin-arm64.

See https://github.com/werf/multiwerf for more information.

Downloading multiwerf-darwin-arm64-latest...
Checking hash sum...
shasum: multiwerf.sha256sums.sum: no properly formatted SHA checksum lines found
multiwerf-darwin-arm64-latest sha256 hash is not verified. Please download and check hash manually.

MultiWerf on Chocolatey

Just wondering if we're able to get this package uploaded to Chocolatey.

This gives us better accessibility to fetching packages via the public feed.

Flag to override a path to werf binary for development purposes

scenario:

CI configuration have this command:

source <(multiwerf use 1.0 beta)

We have werf binary build from developer branch in /tmp/werf. We want that CI process uses this binary and put messages about used binary in logs.

So, we edit CI configuration:

source <(multiwerf use 1.0 beta --werf-path=/tmp/werf)

It is desired that multiwerf output clearly state that some external binary is used and that this flag should be used only for development purposes.

Signed binaries support

  • Check SHA256SUMS when downloading a new werf release.
  • Check SHA256SUMS when downloading a new multiwerf release.
  • Public sign keys should be embedded into multiwerf binary itself.
  • Change multiwerf and werf docs: add info that multiwerf is the only secure way to install werf.

Force debug werf binary

As a werf developer I want to have an ability to substitute werf binary for the host globally for debug purposes without changing of user configurations (e.g. .gitlab-ci.yml).

Installation script fails on MacOS

Unable to install multiwerf on mac os:

get_latest_version leaves '\r' at the end of version:

VERSION=$'v1.0.12\r'

Current workaround that works for me:

version="$(curl -sI "${url}" | grep "Location:" | sed 's%.*multiwerf/%%;s%/view.*%%' | tr -d '\r' )"

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.