Windows support!

60% code coverage by tests

Corrected 3-way-merge mode dates

Corrected 3wm mode default dates: use onlyNewReleases mode since 01.12.2019, enabled mode — since 15.12.2019.

https://werf.io/v1.0-alpha/documentation/reference/deploy_process/resources_update_methods_and_adoption.html#selecting-resources-update-method

Git work tree switch strikes back: rework and speedup git work tree cache

  • One work tree belongs only to one git repo on localhost. Multiple repos (as in gitlab with parallel builds) will have multiple uniq work trees, one per repo.
  • Optimized work tree switch procedure in the case when work tree is already in the desired commit state.
  • New cache files structure:
~/.werf/local_cache/git_worktrees/2/local/REPO_ID_HASH/
worktree # actual work tree directory in the state corresponding to some commit
current_commit # file contains commit hash corresponding to the worktree state
git_dir # path to the git dir to which this work tree belongs

REPO_ID is unique per each local repo clone.

During switch from OLD_COMMIT to NEW_COMMIT procedure ~/.werf/local_cache/git_worktrees/3/local/REPO_ID_HASH/current_commit file will be removed, then worktree state will be switched in the dir ~/.werf/local_cache/git_worktrees/3/local/REPO_ID_HASH/worktree, then ~/.werf/local_cache/git_worktrees/3/local/REPO_ID_HASH/current_commit will be created with the NEW_COMMIT hash.

Only a single process can work with ~/.werf/local_cache/git_worktrees/3/local/REPO_ID_HASH cache at the same time.

Update kubedog

Synchronize trackers statuses when Added, Failed or Ready signals received: should fix incorrect status table indicators.

Installation

Linux amd64

Darwin amd64

Windows amd64

Correct 3-way-merge modes dates

Use WERF_THREE_WAY_MERGE_MODE=onlyNewRelease by default starting with 01.12.2019. Use WERF_THREE_WAY_MERGE_MODE=enabled by default starting with 15.12.2019.

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix three-way-merge dates in alpha

By default 3wm is disabled till 25.11.2019. Starting with 25.11.2019 werf will use onlyNewReleases 3wm mode by default (3 way merge will be used only for new releases). Starting with 15.12.2019 werf will use enabled 3wm mode by default (for old and new releases).

Installation

Linux amd64

Darwin amd64

Windows amd64

Beta release!

Three way merge

Update option to use 3 way merge patch, ability to adopt existing resources.

Three-way-merge modes:

  • disabled;
  • onlyNewReleases;
  • enabled.

By default 3wm is disabled till 25.11.2019.

Starting with 25.11.2019 werf will use onlyNewReleases 3wm mode by default (3 way merge will be used only for new releases). Starting with 15.12.2019 werf will use enabled 3wm mode by default (for old and new releases).

Documentaion is available at the page: https://werf.io/documentation/reference/deploy_process/resources_update_methods_and_adoption.html.

Helm update

v2.16.0: https://github.com/helm/helm/releases/tag/v2.16.0.

Other

Fix panic in deploy (https://github.com/flant/werf/issues/1900).

Installation

Linux amd64

Darwin amd64

Windows amd64

Alpha release!

Three way merge

Fix owner release refs inconsistent state on helm rollback.

Three way merge and resources adoption note in documentation.

Other

[stapel image] Reject remote git url validation.

Installation

Linux amd64

Darwin amd64

Windows amd64

Revert three way merge and helm update

Installation

Linux amd64

Darwin amd64

Windows amd64

Three way merge

Update option to use 3 way merge patch, ability to adopt existing resources.

Three-way-merge modes:

  • disabled;
  • onlyNewReleases;
  • enabled.

By default 3wm is disabled till 15.11.2019.

Starting with 15.11.2019 werf will use onlyNewReleases 3wm mode by default (3 way merge will be used only for new releases). Starting with 05.12.2019 werf will use enabled 3wm mode by default (for old and new releases).

Documentaion is available at the page: https://werf.io/documentation/reference/deploy_process/resources_update_methods_and_adoption.html.

Helm update

v2.16.0: https://github.com/helm/helm/releases/tag/v2.16.0.

Installation

Linux amd64

Darwin amd64

Windows amd64

[3-way-merge] Fix before-hook-creation delete policy hook delete timeout

Installation

Linux amd64

Darwin amd64

Windows amd64

Three way merge

  • Helm hooks delete timeouts (FIX).
  • Update helm to v2.16.0.

Docs and werf.io

  • werf.io landing markup fixes.
  • Added note about bash limitations for users with versions before 4, for example, it can be MacOS users with default bash or gitlab-runner mounted from MacOS.

Infra

Add script for boostraping tests infrastructure.

Installation

Linux amd64

Darwin amd64

Windows amd64

Rework werf.io landing page

Installation

Linux amd64

Darwin amd64

Windows amd64

Rework werf.io landing page

Installation

Linux amd64

Darwin amd64

Windows amd64

Revert new changes introduced in v1.0.4-beta.14 (three way merge and helm update to v2.15.2)

Installation

Linux amd64

Darwin amd64

Windows amd64

Three way merge and resources adoption

Update option to use 3 way merge patch, ability to adopt existing resources.

Documentaion is available at the page: https://werf.io/documentation/reference/deploy_process/resources_update_methods_and_adoption.html

Installation

Linux amd64

Darwin amd64

Windows amd64

Docs

[docs] Describe werf resources manifests validation (NEW) [docs] Resources update methods and adoption info (NEW) [docs] Refactor differences with helm page [docs] Fix broken auto-generated markup

Installation

Linux amd64

Darwin amd64

Windows amd64

Backport docs to v1.0.4

[docs] Publications: add articles about –images-repo-mode [docs] Fix example of copying file with ansible [docs] Up auto annotations docs [docs] Update Gemfile to fix rubyzip vulnerability [docs] Publications: add articles about chart dependencies [docs] Reference/Build process: add section How stapel builder processes CMD and ENTRYPOINT [docs] Actualize Deployment manifests [docs] Fix minikube setup guide: docker registry proxy not worked anymore [docs] Deploy process/Differences with Helm: refactor [docs] Add publication https://habr.com/ru/company/flant/blog/469541/ [docs] Configuration/Adding docker instructions: upd [docs] Add publication https://medium.com/flant-com/building-and-deploying-lots-of-microservices-using-werf-and-gitlab-ci-3ce2b7d19450 [docs] Add publication https://medium.com/flant-com/rewriting-your-app-to-golang-2839e8920ace [docs] Configuration/Adding source code from git repositories: upd [docs] Fix broken auto-generated markup

Installation

Linux amd64

Darwin amd64

Windows amd64

Introducing deploy updates using 3-way-merge patches

Three-way-merge modes:

  • disabled;
  • onlyNewReleases;
  • enabled.

By default 3wm is disabled.

Starting with 15.11.2019 werf will use onlyNewReleases 3wm mode (3 way merge will be used only for new releases). Starting with 05.12.2019 werf will use enabled 3wm mode (for old and new releases). To set 3wm use env var WERF_THREE_WAY_MERGE_MODE=disabled|enabled|onlyNewReleases (or --three-way-merge-mode cli option). More docs will be available soon.

Introducing resources adoption during deploy

It is forbidden to describe a resource in the chart that already exists in the cluster by default.

To adopt already existing resource set annotation werf.io/allow-adoption-by-release=RELEASENAME to the resource in the chart template and deploy this chart with werf.

Werf CI (github actions) and tests

[ci] Cache integration tests tools [ci] Update Github Actions workflow [ci] Cache go modules and test tools

[tests] Test simple repair-patch cases [tests] Integration Guides Suite: go tests [tests] Integration Cleanup Suite: go tests [tests] Deploy tracking tests [tests] Integration Build/Stapel Image/Git Suite

Fixes, docs and other

[ansible] Fix error: ‘LiveStdoutListener’ object has no attribute ‘_reader’ (refs https://github.com/flant/werf/issues/1713)

[git] Refactor remote git repo clone path; fix ‘invalid cross-device link’ error (fixes https://github.com/flant/werf/issues/1038)

[stages purge] Remove containers that use werf images with force option [images cleanup] Support env variable for ‘–without-kube’ option

Override project name with $WERF_PROJECT_NAME variable.

[docs] Configuration/Adding docker instructions: upd [docs] Add publication https://medium.com/flant-com/building-and-deploying-lots-of-microservices-using-werf-and-gitlab-ci-3ce2b7d1 9450 [docs] Add publication https://medium.com/flant-com/rewriting-your-app-to-golang-2839e8920ace [docs] Configuration/Adding source code from git repositories: upd

Installation

Linux amd64

Darwin amd64

Windows amd64

[3-way-merge] Fix false-positive repair-patches (part 2)

  • Manually cut out repair patch fields: $setElementsOrder, $retainKeys, spec.strategy.rollingUpdate=null.
  • Validate chart templates, write log warnings, add object annotation debug.werf.io/validation-messages.
  • Improved repair-patch creation to filter out invalid non-existing fields defined in the chart template.

Other fixes

[stapel builder] Fix mount arbitrary file using mount[].fromPath [docs] Fix minikube setup guide: docker registry proxy not worked anymore

Installation

Linux amd64

Darwin amd64

Windows amd64

[3-way-merge] Fix false-positive repair-patches (part 2)

  • Manually cut out repair patch fields: $setElementsOrder, $retainKeys, spec.strategy.rollingUpdate=null.
  • Validate chart templates, write log warnings, add object annotation debug.werf.io/validation-messages.
  • Improved repair-patch creation to filter out invalid non-existing fields defined in the chart template.

Other fixes

[stapel builder] Fix mount arbitrary file using mount[].fromPath [docs] Fix minikube setup guide: docker registry proxy not worked anymore

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix bugs introduced by ansible update

[stapel] Fix ‘APTPKG_5.0 not defined in file libapt-pkg.so.5.0 with link time reference’

https://github.com/flant/werf/issues/1820

Tests

[github actions] Run integration tests on 1.11-1.16 k8s clusters Guides/Deploy into kubernetes: Actualize

Docs

Actualize Deployment manifests (apps/v1 instead of apps/v1beta1)

Installation

Linux amd64

Darwin amd64

Windows amd64

Docs

[3-way-merge] Describe werf.io/set-resources-only-on-creation and werf.io/set-replicas-only-on-creation

https://werf.io/documentation/reference/deploy_process/experimental_three_way_merge.html#deal-with-hpa https://werf.io/documentation/reference/deploy_process/experimental_three_way_merge.html#deal-with-vpa

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix introduced bugs

‘Argument list too long error’

Docs

[3-way-merge] Describe werf.io/set-resources-only-on-creation and werf.io/set-replicas-only-on-creation

https://werf.io/documentation/reference/deploy_process/experimental_three_way_merge.html#deal-with-hpa https://werf.io/documentation/reference/deploy_process/experimental_three_way_merge.html#deal-with-vpa

Installation

Linux amd64

Darwin amd64

Windows amd64

[3-way-merge] Create two pass 3wm repair patch: fix false-positive repair patches

Enable new repair patches to fix old false positive patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix PATH redefined in stapel container builder

https://github.com/flant/werf/issues/1836

Installation

Linux amd64

Darwin amd64

Windows amd64

Fixes

[3-way-merge] Fix panic: interface conversion: interface {} is nil, not []interface {} https://github.com/flant/helm/pull/22

Tests

[tests] Git stages and images cleanup/purge

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix repair-patch panic: interface conversion: interface {} is float64, not string

Installation

Linux amd64

Darwin amd64

Windows amd64

Revert breaking changes of v1.0.4-beta.8

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix repair-patch false positives

  • Create two-pass patch as follows: current object => apply 2 way merge helm patch => create 3 way merge first stage repair patch => apply first stage repair patch => create actual repair patch.
  • Filter out unnecessary fields during patch creation (such as volumeClaimTemplates, empty container/env values).
  • Normalize numeric limits and (100Gi, 1000m, etc.).
  • Ignore resource *.resources and *.replicas fields optionally.

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix repair-patch false positives

  • Create two-pass patch as follows: current object => apply 2 way merge helm patch => create 3 way merge first stage repair patch => apply first stage repair patch => create actual repair patch.
  • Filter out unnecessary fields during patch creation (such as volumeClaimTemplates, empty container/env values).
  • Normalize numeric limits and (100Gi, 1000m, etc.).
  • Ignore resource *.resources and *.replicas fields optionally.

Installation

Linux amd64

Darwin amd64

Windows amd64

Fix ‘/.werf/ansible-workdir/lib/werf/.logboek.so: cannot open shared: no such file’

Old LOGBOEK_SO_PATH=/.werf/ansible-workdir/lib/werf/.logboek.so variable has been defined in the cached image layers.

The new default logboek.so location is: /.werf/stapel/embedded/lib/python2.7/_logboek.so.

So force setting of LOGBOEK_SO_PATH to /.werf/stapel/embedded/lib/python2.7/_logboek.so for compatibility with old stages cache.

Installation

Linux amd64

Darwin amd64

Windows amd64

Github Actions CI/CD for werf project

https://github.com/flant/werf/actions Example workflow: https://github.com/flant/werf/runs/253425591

Codeclimate tests coverage report: https://codeclimate.com/github/flant/werf (33% at the moment).

More fixes and improvements

[deploy] Fix printStatus panic [deploy] Hide secret values in error [docs] Reference/Build process: add section

[stapel builder] Fix werf removes user’s empty directories during adding patch with binary

Installation

Linux amd64

Darwin amd64

Windows amd64