Каналы обновлений
Релизный процесс подразумевает последовательное прохождение версий по каналам в порядке повышения стабильности Alpha → Beta → Early-Access → Stable → Rock-Solid. Таким образом каждую версию на менее стабильном канале можно рассматривать как кандидата на переход в более стабильный канал.
Канал обновлений Rock-Solid рекомендуется использовать в критичных окружениях с высоким SLA. Мы гарантируем обратную совместимость между версиями канала обновлений Rock-Solid в пределах минорной версии (1.1.x). Мы гарантируем, что версия из канала обновлений Stable перейдет в канал обновлений Rock-Solid не ранее чем через 2 недели плотного тестирования.
Канал обновлений Stable можно безопасно использовать и мы рекомендуем этот канал обновлений везде. Мы гарантируем обратную совместимость между версиями канала обновлений Stable в пределах минорной версии (1.1.x). Мы гарантируем, что версия канала обновлений Early-Access перейдет в канал обновлений Stable не ранее чем через неделю после внутреннего тестирования.
Версии этого канала обновлений обычно безопасно использовать в некритичных окружениях или при локальной разработке. Мы не гарантируем обратную совместимость между версиями канала обновлений Early-Access.
Версии этого канала обновлений предназначены для более глубокого тестирования новых возможностей. Мы не гарантируем обратную совместимость между версиями канала обновлений Beta.
Версии этого канала обновлений могут содержать новые возможности, а также быть нестабильными, иметь ошибки. Мы не гарантируем обратную совместимость между версиями канала обновлений Alpha.
История изменений версий в каналах обновлений
Релиз:
Канал:

Для критичных окружений с высоким SLA

Канал обновлений Rock-Solid рекомендуется использовать в критичных окружениях с высоким SLA. Мы гарантируем обратную совместимость между версиями канала обновлений Rock-Solid в пределах минорной версии (1.1.x). Мы гарантируем, что версия из канала обновлений Stable перейдет в канал обновлений Rock-Solid не ранее чем через 2 недели плотного тестирования.

v1.1.8+fix20
14.05.2020, 23:41 +0300

Fix “@ERROR: invalid gid nogroup” on imports stage

The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image.

Fixed by running rsync server using root group.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix19
14.05.2020, 20:10 +0300

Fix git-related stages selection when multiple git-mappings by the same url used

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

The problem only reproduces when multiple git-mappings by the same url is used and these git-mappings use different commit.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix17
30.04.2020, 14:01 +0300

Fix dockerInstructions stage not isolated when used after gitCache

After this release dockerInstructions signature will change if used after gitCache. Stage-not-exists in stages-storage errors may occur in this case.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix16
23.04.2020, 13:55 +0300

Fixes

Fix gitLatestPatch signature not stable against index-line changes in git patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

Рекомендуемый канал обновлений, если вы не уверены в выборе

Канал обновлений Stable можно безопасно использовать и мы рекомендуем этот канал обновлений везде. Мы гарантируем обратную совместимость между версиями канала обновлений Stable в пределах минорной версии (1.1.x). Мы гарантируем, что версия канала обновлений Early-Access перейдет в канал обновлений Stable не ранее чем через неделю после внутреннего тестирования.

v1.1.14+fix1
21.05.2020, 10:33 +0300

Added ability to use slash “/” and plus “+” signs in werf.yaml image names

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix20
15.05.2020, 16:38 +0300

Fix “@ERROR: invalid gid nogroup” on imports stage

The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image.

Fixed by running rsync server using root group.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix9
14.05.2020, 23:53 +0300

Fix git-related stages selection when multiple git-mappings by the same url used

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

The problem only reproduces when multiple git-mappings by the same url is used and these git-mappings use different commit.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix10
14.05.2020, 23:50 +0300

Fixes

  • Fix kubernetes namespace slug: should not allow capital letters.
  • Fix “@ERROR: invalid gid nogroup” on imports stage. The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image. Fixed by running rsync server using root group.
  • Fix git-related stages selection when multiple git-mappings by the same url used.
    https://github.com/flant/werf/issues/2407

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix9
14.05.2020, 20:10 +0300

Fix git-related stages selection when multiple git-mappings by the same url used

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

The problem only reproduces when multiple git-mappings by the same url is used and these git-mappings use different commit.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix17
29.04.2020, 22:35 +0300

Fix dockerInstructions stage not isolated when used after gitCache

After this release dockerInstructions signature will change if used after gitCache. Stage-not-exists in stages-storage errors may occur in this case.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix16
20.04.2020, 21:01 +0300

Fixes

Fix gitLatestPatch signature not stable against index-line changes in git patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix15
20.04.2020, 11:18 +0300

Fix build panics and errors when newly built image has been discarded

Example of error:

  
  
 delete stage image fdf27403-2c05-4966-850f-dbb0c79ff577 manually and retry the build  

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix12
17.04.2020, 14:45 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix14
17.04.2020, 14:22 +0300

Fix release

Fix problems related to changes introduced in v1.1.8+fix13: signatures has been accidentally changed in v1.1.8+fix13.

Fixes that were made in v1.1.8+fix13 are also available in this v1.1.8+fix14 release:

[build][git] Handle “commits not present” line in git diffs

[build][git] Fix gitLatestPatch not built when previous stage has been discarded during build

  • remove git-building-stage map from Conveyor;
  • remove AfterSignatureCalculated Stage hook.

[dockerfile] Fix ONBUILD instruction processing

  • dockerfile stage signature should take into account ONBUILD value;
  • dockerfile stage that uses another one with ONBUILD instructions should
    calculate files checksum for COPY/ADD trigger instruction in addition to ONBUILD value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix12
15.04.2020, 16:13 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix11
10.04.2020, 15:18 +0300

Fix release

  • Use 1.1 stable in README installation and docs.
  • Change v1.1.8 stages-storage-cache dir to prevent bugs related to update to new v1.1.9.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix10
10.04.2020, 13:42 +0300

Fix werf dockerfile image not rebuilds when COPY/ADD source path files changed

Fix COPY/ADD source path with trailing backslash is not counted in the signature.

Installation

Linux amd64

Darwin amd64

Windows amd64

Для некритичных окружений или локальной разработки

Версии этого канала обновлений обычно безопасно использовать в некритичных окружениях или при локальной разработке. Мы не гарантируем обратную совместимость между версиями канала обновлений Early-Access.

v1.1.14+fix1
21.05.2020, 10:33 +0300

Added ability to use slash “/” and plus “+” signs in werf.yaml image names

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.14
18.05.2020, 19:07 +0300

Docs

  • Guides/GitHub CI/CD integration.
  • Add distributed-werf reference info and switch to distributed guide.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix2
17.05.2020, 14:42 +0300

Fixes

  • Fix kubernetes namespace slug: should not allow capital letters.
  • Fix git-related stages selection when multiple git-mappings by the same url used.
    https://github.com/flant/werf/issues/2407

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix1
14.05.2020, 23:53 +0300

Fix v1.1 stage selection algorithm

Fix for a case when two images of the same stage for two consecutive commits are building at the same time. This can lead to the bug, because werf uses oldest stage by creation timestamp and not oldest by save-into-stages-storage timestamp.

Use selection based on saving-into-stages-storage-timestamp instead of docker-image creation timestamp.

After this change stages-storage-cache will be invalidated automatically.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix2
14.05.2020, 23:50 +0300

Fixes

  • Fix kubernetes namespace slug: should not allow capital letters.
  • Fix git-related stages selection when multiple git-mappings by the same url used.
    https://github.com/flant/werf/issues/2407

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix1
14.05.2020, 20:10 +0300

Fix v1.1 stage selection algorithm

Fix for a case when two images of the same stage for two consecutive commits are building at the same time. This can lead to the bug, because werf uses oldest stage by creation timestamp and not oldest by save-into-stages-storage timestamp.

Use selection based on saving-into-stages-storage-timestamp instead of docker-image creation timestamp.

After this change stages-storage-cache will be invalidated automatically.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.12+fix1
12.05.2020, 22:28 +0300

Fix “@ERROR: invalid gid nogroup” on imports stage

The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image.

Fixed by running rsync server using root group.

Retry docker pull/push on internal server error

Werf automatically retries pull/push operations on internal server errors.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix8
29.04.2020, 22:35 +0300

Fix dockerInstructions stage not isolated when used after gitCache

After this release dockerInstructions signature will change if used after gitCache. Stage-not-exists in stages-storage errors may occur in this case.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix7
28.04.2020, 12:26 +0300

Fix cleanup deletes stages that are related to deployed images

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix6
23.04.2020, 20:21 +0300

Remote storages support

Auto reset stages-storage-cache and retry action when docker-image has been deleted from stages-storage, but exists in the stages-storage-cache.

Fixes

Fix gitLatestPatch signature not stable to index line in patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix16
20.04.2020, 21:01 +0300

Fixes

Fix gitLatestPatch signature not stable against index-line changes in git patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix15
17.04.2020, 19:55 +0300

Fix build panics and errors when newly built image has been discarded

Example of error:

  
  
 delete stage image fdf27403-2c05-4966-850f-dbb0c79ff577 manually and retry the build  

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix12
17.04.2020, 14:45 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix14
17.04.2020, 14:08 +0300

Fix release

Fix problems related to changes introduced in v1.1.8+fix13: signatures has been accidentally changed in v1.1.8+fix13.

Fixes that were made in v1.1.8+fix13 are also available in this v1.1.8+fix14 release:

[build][git] Handle “commits not present” line in git diffs

[build][git] Fix gitLatestPatch not built when previous stage has been discarded during build

  • remove git-building-stage map from Conveyor;
  • remove AfterSignatureCalculated Stage hook.

[dockerfile] Fix ONBUILD instruction processing

  • dockerfile stage signature should take into account ONBUILD value;
  • dockerfile stage that uses another one with ONBUILD instructions should
    calculate files checksum for COPY/ADD trigger instruction in addition to ONBUILD value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix12
15.04.2020, 16:13 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix11
10.04.2020, 15:18 +0300

Fix release

  • Use 1.1 stable in README installation and docs.
  • Change v1.1.8 stages-storage-cache dir to prevent bugs related to update to new v1.1.9.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix10
10.04.2020, 12:56 +0300

Fix werf dockerfile image not rebuilds when COPY/ADD source path files changed

Fix COPY/ADD source path with trailing backslash is not counted in the signature.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.5
6.04.2020, 19:11 +0300

INCOMPATIBLE CHANGE Fix stages and images isolation problem for git-latest-patch and stages-signature

  • gitLatestPatch stage was not isolated between different branches when the same changes
    has been made in two different commits: added commits ancestry check when selecting
    suitable stage from cache for gitLatestPatch. The signature of gitLatestPatch stage
    has not been changed.

  • Stages-signature was not isolated between different branches when the same
    changes has been maed in two different commits. IMPORTANT stages-signature
    calculation algorithm has been changed, stages-signature will change for all projects
    that use stages-signature tagging strategy (content-based).

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.4
23.03.2020, 12:17 +0300

[dockerfile] Fix dockerfile stage name from “COPY –from” is not detected

Docker parser coverts dockerfile stage name (AS) to lowercase but in places of the name usage (COPY –from) does not.
This affected dockerfile stage signature calculation and occurred false warning messages.

Installation

Linux amd64

Darwin amd64

Windows amd64

Для более глубокого тестирования новых возможностей

Версии этого канала обновлений предназначены для более глубокого тестирования новых возможностей. Мы не гарантируем обратную совместимость между версиями канала обновлений Beta.

v1.1.16+fix1
25.05.2020, 14:13 +0300

Fix hard-coded images repo/stages storage implementation for ci-env

Automatically set gitlab docker registry implementation for stages storage and images repo.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.14+fix1
20.05.2020, 12:10 +0300

Added ability to use slash “/” and plus “+” signs in werf.yaml image names

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.14
18.05.2020, 19:07 +0300

Docs

  • Guides/GitHub CI/CD integration.
  • Add distributed-werf reference info and switch to distributed guide.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix3
17.05.2020, 15:01 +0300

Fixes

[dockerfile] Fix COPY –from arbitrary image (not only dockerfile stage)

Docs

Guides/GitLab CI/CD integration: added overview

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix2
17.05.2020, 14:42 +0300

Fixes

  • Fix kubernetes namespace slug: should not allow capital letters.
  • Fix git-related stages selection when multiple git-mappings by the same url used.
    https://github.com/flant/werf/issues/2407

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix1
14.05.2020, 23:53 +0300

Fix v1.1 stage selection algorithm

Fix for a case when two images of the same stage for two consecutive commits are building at the same time. This can lead to the bug, because werf uses oldest stage by creation timestamp and not oldest by save-into-stages-storage timestamp.

Use selection based on saving-into-stages-storage-timestamp instead of docker-image creation timestamp.

After this change stages-storage-cache will be invalidated automatically.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix2
14.05.2020, 23:50 +0300

Fixes

  • Fix kubernetes namespace slug: should not allow capital letters.
  • Fix git-related stages selection when multiple git-mappings by the same url used.
    https://github.com/flant/werf/issues/2407

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix1
14.05.2020, 20:10 +0300

Fix v1.1 stage selection algorithm

Fix for a case when two images of the same stage for two consecutive commits are building at the same time. This can lead to the bug, because werf uses oldest stage by creation timestamp and not oldest by save-into-stages-storage timestamp.

Use selection based on saving-into-stages-storage-timestamp instead of docker-image creation timestamp.

After this change stages-storage-cache will be invalidated automatically.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.12+fix1
7.05.2020, 19:03 +0300

Fix “@ERROR: invalid gid nogroup” on imports stage

The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image.

Fixed by running rsync server using root group.

Retry docker pull/push on internal server error

Werf automatically retries pull/push operations on internal server errors.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.11
6.05.2020, 20:24 +0300

Custom helm chart directory (.helm) and werf configuration file (werf.yaml) options

  • Add –helm-chart-dir option.
  • Add –config / –config-templates-dir options to override default paths.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10+fix4
6.05.2020, 12:46 +0300

Docs

[docs] Guides/GitLab CI/CD integration
[docs] Support hiding headers in TOC

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10+fix3
29.04.2020, 22:35 +0300

Fix dockerInstructions stage not isolated when used after gitCache

After this release dockerInstructions signature will change if used after gitCache. Stage-not-exists in stages-storage errors may occur in this case.

Other

Detailed error messages for git submodules when submodule exists in the repo in the incorrect state.

[test] Test “Check broken links” hase been updated.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10+fix2
28.04.2020, 12:26 +0300

Fix cleanup deletes stages that are related to deployed images

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10
24.04.2020, 19:37 +0300

Introducing distributed builds

Werf now can store stages in the docker registry by specifying --stages-storage REPO instead of --stages-storage :local.

There is no more restriction that a single host should be used to run all werf commands for a project:

  • All werf commands that need an access to the stages should specify the same stages storage.
  • It is irrelevant on which host werf command is running as long as the same stages storage is used for the commands like: build, publish, cleanup and deploy.
  • Also all hosts which run werf should have a connection to the Kubernetes cluster, because werf uses Kubernetes to synchronize multiple build/publish/deploy processes running from different machines.

“werf ci-env gitlab” default mode now is to store stages by path CI_REGISTRY_IMAGE/stages. All existing werf installations will continue to use :local stages storage because --stages-storage :local param has explicitly been specified in all CI-configs. So to use distributed builds user needs to remove this param, see guided steps below about migrating to the distributed stages storage.

Synchronization, caches and cleanup

Introduced a new parameter named --synchronization, which controls how multiple werf processes are synchronized between each other. There is a stages-storage cache and locks components that werf needs to run. Stages storage cache is an internal component used to boost werf performance for idle builds when calculating stages. Locks are needed to organize correct publishing of new stages into stages-storage, publishing images into images-repo and for deploy process also.

When --synchronization :local used (which is factually by default in the previous versions < v1.1.10), then stages-storage cache reside in the local host file system (~/.werf/shared_context/storage/stages_storage_cache/1/PROJECT) and local file locks are used.

When --synchronization kubernetes://NAMESPACE is used, then werf creates a ConfigMap for project in this namespace, stores stages storage cache in this ConfigMap and uses distributed locking over this ConfigMap to synchronize multiple werf processes running from multiple hosts.

By default, when non local stages-storage is used werf automatically use kubernetes://werf-synchronization namespace and create a ConfigMap named werf-PROJECT in this namespace. User can specify arbitrary non-standard namespace on own needs.

What about local docker images cache on hosts where werf is running? — There is such a cache, which is cleared either by the werf itself or can freely be removed by other tools (docker rmi
.

New commands to sync and switch stages

  1. werf stages sync --from=:local|REPO --to=:local|REPO.
    • Command will copy stages from one stages-storage to another.
    • Command will copy only difference of stages from one stages-storage to another.
    • Furthermore command will copy multiple stages in parallel.
    • Command run result is idempotent: sync can be called multiple times, interrupted, then called again — the result will be the sam
      .
    • There are delete options: --remove-source and --cleanup-local-cache, which controls whether werf will delete synced stages from source stages-storage and wheter werf will cleanup localhost from temporary docker images created during sync process.
    • This command can be used to download project stages-storage to the localhost for development purpose as well as backuping and migrating purposes.
  2. werf stages switch-from-local --to=REPO
    • Command will automatically sync existing stages from :local stages storage to the specified REPO.
    • Command will block project from being used with :local stages-storage.
      • This means after werf stages switch-from-local is done, any werf command that specifies :local stages-storage for the project will fail preventing storing and using build results from different stages-storages.
      • Note that project is blocked after all existing stages has been synced.

How to migrate to distributed mode

Let’s say you have some project in Gitlab CI, that uses werf. Steps:

  1. Go to the directory where your project reside on the runner host.
  2. Create an MR in the project, that removes --stages-storage :local param from all werf invocations. There is no need to set this param explicitly anymore, because werf ci-env will automatically set it to CI_REGISTRY_IMAGE/stages.
  3. Run werf stages switch-from-local --to=CI_REGISTRY_IMAGE/stages where CI_REGISTRY_IMAGE is the address of container registry for your gitlab project. After this step all werf invocations from different git branches of the project that uses --stages-storage :local will refuse to work, because switch-from-local command sets a block to use :local.
  4. Merge your MR with correct stages-storage param.
  5. All git branches that need to run werf should rebase then onto the new changes to use new stages-storage, otherwise werf will refuse to use :local stages storage.

Other changes since last release v1.1.10-alpha.7

[docs] Remove –stages-storage :local from Gitlab CI docs
[ci] Cache GO modules
[tests] New tests
[tests] K8S/Cleanup Suite: test cleanup with deployed image
[tests] K8S/Guides Suite: actualize after each
Error: –stages-storage=ADDRESS param required
[tests] Helm/Render Suite: add extra annotations and labels check
[tests] Cleanup Suite: test stages storage repo

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix6
20.04.2020, 20:55 +0300

Remote storages support

Auto reset stages-storage-cache and retry action when docker-image has been deleted from stages-storage, but exists in the stages-storage-cache.

Fixes

Fix gitLatestPatch signature not stable to index line in patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix15
17.04.2020, 18:44 +0300

Fix build panics and errors when newly built image has been discarded

Example of error:

  
  
 delete stage image fdf27403-2c05-4966-850f-dbb0c79ff577 manually and retry the build  

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix12
17.04.2020, 14:45 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix14
17.04.2020, 13:39 +0300

Fix release

Fix problems related to changes introduced in v1.1.8+fix13: signatures has been accidentally changed in v1.1.8+fix13.

Fixes that were made in v1.1.8+fix13 are also available in this v1.1.8+fix14 release:

[build][git] Handle “commits not present” line in git diffs

[build][git] Fix gitLatestPatch not built when previous stage has been discarded during build

  • remove git-building-stage map from Conveyor;
  • remove AfterSignatureCalculated Stage hook.

[dockerfile] Fix ONBUILD instruction processing

  • dockerfile stage signature should take into account ONBUILD value;
  • dockerfile stage that uses another one with ONBUILD instructions should
    calculate files checksum for COPY/ADD trigger instruction in addition to ONBUILD value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix12
16.04.2020, 11:58 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix3
15.04.2020, 22:18 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix4
15.04.2020, 21:44 +0300

Fixes

[cleanup] Skip images with MANIFEST_UNKNOWN error

[build][git] Handle “commits not present” line in git diffs

[build][git] Fix gitLatestPatch not built when previous stage has been discarded during build

  • remove git-building-stage map from Conveyor;
  • remove AfterSignatureCalculated Stage hook.

[dockerfile] Fix ONBUILD instruction processing

  • dockerfile stage signature should take into account ONBUILD value;
  • dockerfile stage that uses another one with ONBUILD instructions should calculate files checksum for COPY/ADD trigger instruction in addition to ONBUILD value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix3
15.04.2020, 16:13 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix2
13.04.2020, 14:42 +0300

Remote storages support: safe switch between alpha and beta werf versions

Invalidate stages-storage-cache directory when old cache directory exists. Remove old and current stages-storage-cache directories in this case.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix11
10.04.2020, 15:18 +0300

Fix release

  • Use 1.1 stable in README installation and docs.
  • Change v1.1.8 stages-storage-cache dir to prevent bugs related to update to new v1.1.9.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix10
10.04.2020, 14:03 +0300

Fix werf dockerfile image not rebuilds when COPY/ADD source path files changed

Fix COPY/ADD source path with trailing backslash is not counted in the signature.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9
10.04.2020, 13:01 +0300

Support non-default docker registries implementations and dockerhub

  • AWS ECR, Azure CR, GCR, GitHub Packages, GitLab Registry, Harbor, Quay.
  • Documentation: https://werf.io/v1.1-beta/documentation/reference/working_with_docker_registries.html

Support stages-storage in docker registry

For now only when building from single host. Building from multiple hosts will be available soon in v1.1.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8+fix10
10.04.2020, 12:56 +0300

Fix werf dockerfile image not rebuilds when COPY/ADD source path files changed

Fix COPY/ADD source path with trailing backslash is not counted in the signature.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.9
8.04.2020, 16:22 +0300

Fix build panic when running ‘werf build ARTIFACT’ and artifact depends on another artifact

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.7
8.04.2020, 01:05 +0300

Support import from certain artifact/image stage

Added ability to specify stage directive in the import directive to perform import from certain artifact or image stage:

import:  
- add: /file  
  to: /file  
  artifact: myartifact  
  before: setup  
  stage: install  

Note that image which imports some files from another image stage will be rebuild only if this specified stage has been rebuilt.

This feature allows to avoid unnecessary imports of unchanged files.

Implementation details

  • image stages-signature has been renamed to image content-signature;
  • added content-signature to each stage, which differs from regular signature and represents content of the stage.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.6
7.04.2020, 20:30 +0300

Support building only artifacts specified for ‘werf build’ command

werf build -s :local ARTIFACT_NAME1 ARTIFACT_NAME2 ...

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.5
6.04.2020, 12:39 +0300

INCOMPATIBLE CHANGE Fix stages and images isolation problem for git-latest-patch and stages-signature

  • gitLatestPatch stage was not isolated between different branches when the same changes
    has been made in two different commits: added commits ancestry check when selecting
    suitable stage from cache for gitLatestPatch. The signature of gitLatestPatch stage
    has not been changed.

  • Stages-signature was not isolated between different branches when the same
    changes has been maed in two different commits. IMPORTANT stages-signature
    calculation algorithm has been changed, stages-signature will change for all projects
    that use stages-signature tagging strategy (content-based).

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.4
1.04.2020, 12:51 +0300

Werf kubernetes manifests yaml generation fixes

  1. Fix werf extra labels and annotations not added to deployed resources.

  2. Unfortunately revert fix to the problem with ‘|’ rendered as ‘|-‘ in kubernetes templates,
    which was in the https://github.com/flant/werf/releases/tag/v1.1.7 release.

    The fix for this problem is being investigated and will be released soon.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.1
31.03.2020, 11:43 +0300

Fixes

Fix “UNSUPPORTED: Invalid parameter at ‘maxResults’” when using ECR. Fixed by updating github.com/google/go-containerregistry, the issue: https://github.com/google/go-containerregistry/issues/681.

Docs

Added publications about werf 1.1.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.3
31.03.2020, 11:17 +0300

Fix failed to prepare update: unable to decode “”: Object ‘Kind’ is missing

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.1
30.03.2020, 23:32 +0300

Fixes

Fix “UNSUPPORTED: Invalid parameter at ‘maxResults’” when using ECR. Fixed by updating github.com/google/go-containerregistry, the issue: https://github.com/google/go-containerregistry/issues/681.

Docs

Added publications about werf 1.1.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.2
30.03.2020, 22:44 +0300

Fix extra annotations/labels are not added to k8s resources

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8.1
30.03.2020, 19:16 +0300

Fixes

Fix “UNSUPPORTED: Invalid parameter at ‘maxResults’” when using ECR. Fixed by updating github.com/google/go-containerregistry, the issue: https://github.com/google/go-containerregistry/issues/681.

Docs

Added publications about werf 1.1.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8
30.03.2020, 19:05 +0300

An option to enable cleanup for stages-signature tagging strategy

When running werf in ci with werf ci-env command, then either:

  • create cleanup config for the host:

    mkdir ~/.werf/config  
    echo "stagesSignatureStrategyExpiryDays: 30" >> ~/.werf/config/cleanup.yaml  
    echo "stagesSignatureStrategyLimit: 50" >> ~/.werf/config/cleanup.yaml  
    
  • export environment variables in your CI/CD system: WERF_STAGES_SIGNATURE_STRATEGY_LIMIT=50 and WERF_STAGES_SIGNATURE_STRATEGY_EXPIRY_DAYS=30.

By default werf will not cleanup images published with stages-signature tagging strategy and related stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9
30.03.2020, 18:59 +0300

Support non-default docker registries implementations and dockerhub

  • AWS ECR, Azure CR, GCR, GitHub Packages, GitLab Registry, Harbor, Quay.
  • Documentation: https://werf.io/v1.1-beta/documentation/reference/working_with_docker_registries.html

Support stages-storage in docker registry

For now only when building from single host. Building from multiple hosts will be available soon in v1.1.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8
23.03.2020, 22:05 +0300

An option to enable cleanup for stages-signature tagging strategy

When running werf in ci with werf ci-env command, then either:

  • create cleanup config for the host:

    mkdir ~/.werf/config  
    echo "stagesSignatureStrategyExpiryDays: 30" >> ~/.werf/config/cleanup.yaml  
    echo "stagesSignatureStrategyLimit: 50" >> ~/.werf/config/cleanup.yaml  
    
  • export environment variables in your CI/CD system: WERF_STAGES_SIGNATURE_STRATEGY_LIMIT=50 and WERF_STAGES_SIGNATURE_STRATEGY_EXPIRY_DAYS=30.

By default werf will not cleanup images published with stages-signature tagging strategy and related stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.7
23.03.2020, 12:17 +0300

[deploy] Hotfix werf helm render: fix problem with ‘|’ rendered as ‘|-‘

Change gopkg.in/yaml.v2 to github.com/ghodss/yaml in custom werf templates engine,
as github.com/ghodss/yaml is used everywhere in the helm 2.

In the helm 3 sigs.k8s.io/yaml is used, but it is not possible for now to switch to sigs.k8s.io/yaml before switching to helm 3 codebase.
https://github.com/helm/helm/blob/master/pkg/engine/funcs.go#L27

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.5
20.03.2020, 11:38 +0300

Docs

Added rss feeds for werf releases.

Fixes

[dockerfile] Fail build if dockerfile COPY instruction refers to nonexistent stage.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.4
19.03.2020, 22:50 +0300

[dockerfile] Fix dockerfile stage name from “COPY –from” is not detected

Docker parser coverts dockerfile stage name (AS) to lowercase but in places of the name usage (COPY –from) does not.
This affected dockerfile stage signature calculation and occurred false warning messages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.3
19.03.2020, 11:12 +0300

Fix release

[dockerfile] Fix calculating context files checksum when submodule is used

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.2
12.03.2020, 10:25 +0300

Fix git problems release

Fix creating an archive fails when nested submodules is used

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.1
11.03.2020, 13:51 +0300

Fix git problem release

Fix creating an archive fails when submodule dir/file is specified in git.add

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0
6.03.2020, 18:06 +0300

Official v1.1 beta

Implemented content based tagging and new stages storage architecture as a big step toward distributed and concurrent builds.

New stages format and cache selection algorithm

New stage name generation rule. Every build of the stage generates uniq stage-cache image name, which consists of 2 parts: signature (as in v1.0) plus unique identifier.

For example, full stage image name will look like:

  
werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835
  
werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC
  

Signature identifier of the stage represents content of the stage and depends on git history which lead to this content.

Werf stage selection algorithm is based on the git commits ancestry detection:

  1. Werf calculates a stage signature for some stage.

  2. There may be multiple stages in the stages storage by this signature, werf selects all suitable stages by the signature.

  3. If current stage is related to git (git-archive, user stage with git patch or git latest patch), then werf selects only

    those stages which are relaed to the commit that is ancestor of current git commit.

  4. Select from the remaining stages the oldest by the creation timestamp.

There may be multiple built images for a single signature.

Stage for different git branches can have the same signature, but werf will prevent cache of different git branches from

being reused for totally different branch.

For more info see documentation: https://werf.io/v1.1-beta/documentation/reference/stages_and_images.html#stage-naming.

New stage building and saving algorithm

If suitable stage has not been found during stage selection, werf starts building a new image for stage.

Note that multiple processes (on a single or multiple hosts) may start building the same stage at the same time. Werf uses optimistic locking when saving newly built image into the stages storage: when a new stage has been built werf locks stages storage and saves newly built stage image into storage stages cache only if there are no suitable already existing stages exists. Newly saved image will have a guaranteed unique identifier

by TIMESTAMP_MILLISEC. In the case when already existing stage has been found in the stages storage werf will discard newly built image and

use already existing one as a cache.

In other words: the first process which finishes the build (the fastest one) will have a chance to save newly built stage into the stages storage. The slow build process will not block faster processes from saving build results and building next stages.

For more info see documentation: https://werf.io/v1.1-beta/documentation/reference/stages_and_images.html#stage-building-and-saving.

Benefits of new stages storage architecture

This new stages storage architecture opens up an opportunities to build stages concurrently and even distributely

from multiple build machines. For now there are no theoretical limitations of current werf architecture to implement

distributed or concurrent builds. So we consider this release as a big step towards distributed and concurrent builds.

Werf have an --stages-storage and --synchronization parameters which specify addresses of the stages storage and

synchronization lock manager. For now there is only :local implementations of both primitives. By changing these implementations to docker-registry for the stages storage and Redis or Kubernetes server based synchronization lock manager, werf will implement distributed builds out of the box.

Content based tagging

Werf v1.1 supports so called content based tagging. Tags of resulting docker images depend on the content of these images.

When using werf publish --tags-by-stages-signature or werf ci-env --tagging-strategy=stages-signature werf will tag result images by so called image stages signature. Each image tagged by own stages signature which calculated by the same rules as regular signature of image stage.

Image stages signature depends on content of the image and depends on the git history which lead to this content.

There may be dummy commits into the git repo that do not change resulting images. For example empty commits, merge commits or commits which change files that are not imported into the resulting image.

When using tagging by git-commits these dummy commits will cause werf to create new images names even if content of these images is the same. New images names in turn will cause restarts of application Pods in Kubernetes which is totally not a desired behaviour. All in all this is the reason preventing storing multiple application services in the single git repo.

Stages signature on the countrary will not change on dummy commits, so these commits will not cause restarts of application Pods in kubernetes, yet it similarly to commit-id relates to the git history of edits and depends on the content of the files.

Also tagging by stages signatures is more realiable tagging method than tagging by a git-branch for example, because resulting images content does not depend on order of pipelines execution. Stages signature leads to stable immutable images names which represent the address of the certain image content.

NOTE From now and on stages-signature is the default tagging strategy and the only recommended one for usage.

For more info see documentation: https://werf.io/v1.1-beta/documentation/reference/publish_process.html#content-based-tagging.

Improved performance of stages selection and verification

Idle builds when all stages are exist in the stages storage are really fast now (in the most cases build retry will run under 1sec).

Stages verification performance during werf deploy and werf run commands also improved a lot.

Improved performance of Dockerfile builder

Werf Dockerfile builder signature calculation performance is improved due to using git ls-tree checksums

for docker context files. Signature calculation does not depend on the docker context size.

Improved performance of artifact/image imports

Werf uses rsync server to import files from artifacts and images.

MacOS imports performance does not depend on docker implementation of volumes now. MacOS imports performance is the same as in Linux and Windows.

Other changes

  • Added --log-debug, --log-verbose and --log-quiet modes.

  • Removed legacy params and code (dapp secret key legacy support removed; --insecure-repo legacy option removed, only –skip-tls-verify-registry is available).

  • Eliminated werf.io/recreate annotation, werf uses helm.sh/hook-delete-policy=before-hook-creation mode by default (as in helm 3).

  • Improved werf cleanup procedure not to clean images from werf.yaml defined in the different git branches,

    those are not exist in the werf.yaml config of the master branch. Added new commands to control managed images: werf managed-images ls|add|rm.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.7
6.03.2020, 11:41 +0300

Docs

  • New stages storage architecture documented.

  • Content based tagging documented.

Other fixes

  • fromLatest/git.Branch params could be used only with herebyIAdmitThatBranchMightBreakReproducibility and herebyIAdmitThatFromLatestMightBreakReproducibility params;

  • werf images managed subcommand renamed to werf managed-images;

  • tiny logging improvements:

    • hide docker container output in silent mode;

    • initialize stapel container before preparing of stage run args.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.6
4.03.2020, 19:09 +0300

Fix logs in default mode

Remove ‘Switch work tree to commit …’ messages in default mode (will be printed in –log-verbose or –log-debug).

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.5
4.03.2020, 13:14 +0300

WARNING: incompatible release

Stages signatures was changed, pipelines that were already build will use new signatures on retry, so rebuild needed.

Dockerfile builder support for v1.1!

Calculate docker build context files checksum with git ls-tree and status.

Fixed imports: allow merging of directories

  
import:
  
- artifact: myartifact
  
  add: /mydir
  
  to: /my/existing/dir
  
  after: install
  

Werf will automatically merge content of /mydir into /my/existing/dir.

This case was broken in v1.1.0-beta.4 due to imports optimization rework: the specified config will create my/existing/dir/mydir instead of merging directories.

v1.1.0-beta.3 was not affected by this bug.

Fixed logging performance

Fixed logboek library logging performance when processing large output, e.g. from make build command. Logging performance affects build time.

Stapel image updated to version 0.6.1.

Logging improvement

  • Disabled debug logging by default.

  • Default logging includes minimum viable info for commands.

  • --log-debug and --log-verbose options are avaiable.

  • More info in --log-debug mode.

Store managed config images in stages storage

Images that were built by werf will be remained in stages storage. For each such image managed image record created as werf-managed-images/PROJECT:IMAGE_NAME.

During cleanup procedure werf will preserve stages cache of images that are defined in the current werf.yaml config and images from managed images list. This prevents images defined only in custom git branches from being cleaned up, when running werf cleanup procedure main (master) branch.

Werf automatically creates records for managed images during build procedure.

Managed images list could be manually viewed and changed using commands:

  • werf images managed -s :local ls

  • werf images managed -s :local add IMAGE_NAME

  • werf images managed -s :local rm [IMAGE_NAME, ...]

Small fixes and changes

  • Fix publishing of only specified in cli images by names.

  • Renamed --stages-storage-lock param to --synchronization: address of synchronizer for multiple werf processes to work with a single stages storage (:local by default).

  • Update kubedog: load more kubernetes client-go auth plugins: azure, exec, oidc, openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.4
25.02.2020, 21:32 +0300

Optimize imports: rsync import server

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.3
20.02.2020, 16:49 +0300

Fixes release (INCOMPATIBLE — more info belo

)

Small fixes and additions

  • Add –log-verbose, –log-quiet options, use –log-debug=true by default for werf v1.1 for now.
  • Fixed and enabled cleanup procedure.
  • Do not publish artifacts fix.
  • Fix: cleanup dockerfile builder tmp img on conveyor termination.
  • Fix helm release name slugify: should be a valid DNS-1123 subdomain and be maximum 53 chars.

Fix import stage logic and stages cleanup

The import stage image has the specific label value that is used during stages cleanup procedure. In this commit, related image/artifact signature which stored in the label is replaced on image ID.

The signature does not identify the stage since we started to use not only signature in an image tag. From v1.1, werf is building stages consistently so related image/artifact image ID is available when werf is preparing import stage.

INCOMPATIBLE change, because signature of import stage has been changed. Already built images should be rebuilt with this version of werf.

Also prevented possible bug, which may occur when artifacts are used and there are empty stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.2
20.02.2020, 16:47 +0300

Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.3
20.02.2020, 16:17 +0300

Fixes release (INCOMPATIBLE — more info belo

)

Small fixes and additions

  • Add –log-verbose, –log-quiet options, use –log-debug=true by default for werf v1.1 for now.
  • Fixed and enabled cleanup procedure.
  • Do not publish artifacts fix.
  • Fix: cleanup dockerfile builder tmp img on conveyor termination.
  • Fix helm release name slugify: should be a valid DNS-1123 subdomain and be maximum 53 chars.

Fix import stage logic and stages cleanup

The import stage image has the specific label value that is used during stages cleanup procedure. In this commit, related image/artifact signature which stored in the label is replaced on image ID.

The signature does not identify the stage since we started to use not only signature in an image tag. From v1.1, werf is building stages consistently so related image/artifact image ID is available when werf is preparing import stage.

INCOMPATIBLE change, because signature of import stage has been changed. Already built images should be rebuilt with this version of werf.

Also prevented possible bug, which may occur when artifacts are used and there are empty stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.2
19.02.2020, 17:26 +0300

Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.1
17.02.2020, 16:08 +0300

First Werf v1.1 beta release!

Main changes since v1.0:

  1. Fully reworked build process, new incompatible stages storage format (new build cache).
  • Improved performance of idle builds (from cache) nearly by one order of magnitude when git repo of the project is big.

  • Build cache isolation based on the git history. Build cache of different branches without same base is not overlapped. No more “rebase” related problems.

  • Also improved performance of stage-dependencies calculation (using git ls-tree mechanix) when large folders are specified as stage dependencies.

  1. Content based tagging using werf publish --tag-by-stages-signature option or werf ci-env --tagging-strategy=stages-signature tagging strategy.

    The default tagging strategy is stages-signature, werf ci-env parameter --tagging-strategy may be omitted to use default strategy.

Not supported in this version

IMPORTANT Following feature are not supported in the current beta version and will be repaired in the following releases very soon!

  • Building Dockerfile-based images. This version of werf v1.1 beta should not be used to build dockerfile-based images.

  • werf cleanup command will not actually clean stages, only images, due to the bug in the cleaning procedure. werf cleanup command can and should be used already now and will be fixed soon by automatic releases updater for 1.1 beta channel.

Fully reworked build process

  • Stage image name format changed: werf-stages-storage/PROJECT_NAME:SIGNATURE-UNIX_TIMESTAMP_MILLISECS.

  • UNIX_TIMESTAMP_MILLISECS is the unique part of stage image name.

  • There may be multiple stages with the same SIGNATURE part. Signature is based on the content of the image, while timestamp is added to keep separately built images separate.

  • IMPORTANT! Multiple processes may build the same stage by the same signature simultaneously at the same time. The first builder that builds the stage will store the stage in the stages storage. Other builders will discard build results when saving newly built image into stages storage if stages storage already contains suitable image built by the other process.

  • There may be multiple stages with the same SIGNATURE for different git branches. Stage selection algorithm will make sure that stage is suitable for your branch.

Compatibility notes

Incompatibilities with v1.0:

  • Werf v1.1 will generate new stages for stages storage.

  • Removed legacy ruby dapp secret-key format support.

  • Removed –insecure-repo option, use –skip-tls-verify-registry option instead.

  • “helm.sh/hook-delete-policy=before-hook-creation” by default for all kinds of hooks (not only Jobs as in v1.0).

  • Strict yaml parsing which does not allow duplicate keys in yaml docs (affects werf.yaml, .helm/templates/**, .helm/values.yaml etc.).

It is OK to use v1.0 and v1.1 simultaneously:

  • v1.1 and v1.0 may exists on the same host system, without any restrictions;

  • v1.1 and v1.0 may be used in the different branches of the same project without any restrictions;

  • cleanup procedure of v1.0 will not affect v1.1 and vice versa;

  • build cache (stages in the stages-storage) of v1.0 and v1.0 is fully separated.

How to enable v1.1

  1. Change multiwerf use command:

      
    type multiwerf && source <(multiwerf use 1.1 beta)
      
    
  2. (Optional) To use content based tagging change ci-env command:

      
    type werf && source <(werf ci-env gitlab)
      
    

Installation

Linux amd64

Darwin amd64

Windows amd64

Наименее стабильный канал обновлений

Версии этого канала обновлений могут содержать новые возможности, а также быть нестабильными, иметь ошибки. Мы не гарантируем обратную совместимость между версиями канала обновлений Alpha.

v1.1.18+fix3
28.05.2020, 13:04 +0300

Docs updates for GitHub Actions

[docs] Guides/GitHub CI/CD Integration: Up configurations and add note for weak workflows
[ci_env] GitHub: Reorganize cleanup section in env-file

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.18+fix2
27.05.2020, 12:28 +0300

Fixes and small changes

[docs] Update activesupport in werf.io due to vunlerability alert
[docs] Guides/GitHub CI/CD integration: add werf-actions
[dismiss] Return exit code 0 when release is not found

[cli] Add envs support for string array flags

  • WERF_SSH_KEY* for –ssh-key
  • WERF_SET* for –set
  • WERF_SET_STRING* for –set-string
  • WERF_VALUES* for –values
  • WERF_SECRET_VALUES* for –secret-values

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.18+fix1
26.05.2020, 19:43 +0300

Fixes

  • [build] Fix remote git-mapping uses wrong commit-id for ls-tree when creating git-archive.
  • [config] Process symlinks with .Files.Glob.
    • .Files.Glob returns the hash of regular files and their contents for the paths that are matched pattern.
      This function follows only symlinks pointed to a regular file (not to a directory).
  • [docs] Add converge command and actualize some information.
  • [docs] Reference/CI/CD workflows overview: Align tables content
  • [docs] Sidebar: Add Организация CI/CD с помощью werf
  • [docs] Fix broken links
  • [docs] Regen cli docs: added converge command cli docs
  • [docs] Reference/Working with Docker registries: JFrog and Nexus note
  • [docs] Stapel Image/Running assembly instructions: actualize
  • [docs][readme_ru] Actualize
  • [ci_env] Fix redundant empty lines when using ci-env-file with verbose

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.18
25.05.2020, 17:32 +0300

Ability to write published images report json to the file

Write publish report when --publish-report-path PATH option has been given.

There is --publish-report-format option which accepts only json for now.

Example of publish report:

{  
  "Images": {  
    "one": {  
      "WerfImageName": "one",  
      "DockerRepo": "localhost:5000/alo/one",  
      "DockerTag": "a64687f43f31179cf069574a455e53d75937da81f82042fbfc7ad096",  
      "DockerImageID": "sha256:0151dda79c0c076aa00b4c90367d9e067e854fdb10027fc06e30ed0f1498016f"  
    },  
    "three": {  
      "WerfImageName": "three",  
      "DockerRepo": "localhost:5000/alo/three",  
      "DockerTag": "baff2bc90cf6c17e47e37e7b14ce0296ade95cbf35f7d33d3e72d0bb",  
      "DockerImageID": "sha256:c71998ef1916a6fddee0b334a28d2efa1f9f541fa0094c3f5f7aad6d2d98b44f"  
    },  
    "two": {  
      "WerfImageName": "two",  
      "DockerRepo": "localhost:5000/alo/two",  
      "DockerTag": "f5a8ee43e363925176e78230a467fa7e9e58324916f4be9e0b7ad6d7",  
      "DockerImageID": "sha256:1edd54ae5a18734a268ddeb9ea8eeb83137ac71dd8c0cf52afdc5c5039c0360d"  
    }  
  }  
}  

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.17
25.05.2020, 14:13 +0300

Docs

  • NEW! Translated to english Reference/CI/CD workflows overview.
  • NEW! Translated to english Guides/GitLab CI/CD integration.
  • Replaced external links to image with local links.
  • Reference/Configuration: .Files.Glob Go template function.
  • Guides/GitLab CI/CD integration: Update scheme image.

Add .Files.Glob Go template function

{{ range $path, $content := .Files.Glob ".werf/files/**" }}  
{{ $path }}: |  
{{ $content | indent 2 }}  
{{ end }}  

Allow storing of arbitrary docker images in the stages storage

Ignore stages storage tags not matching the expected format for the remote stages storage of the werf.

Virtual merge commit support for git_repo and true_git

  1. New way of creating worktree for git-worktree-cache: use “git worktree add” tool.
    • This way of creating worktrees is native for git and prevent main worktree corruption.
  2. New true_git.CreateDetachedMergeCommit function which operates within the git-worktree-cache, creates and returns some commit id, whic
    h can be used later until this commit is pruned (because it is detached).
  3. Playground demo cli tool which creates diff between two virtual-merge-commits: specify 4 commits on input, get a patch between virtual
    merge commits of 1 into 2 and 3 into 4.

Fix GetStageDescription when docker registry repo is not exist

Error: reading image “docker.pkg.github.com/user/repo/stages:de07eea0119baca706320aa6b7f32f887f5700b6fd82e1864867a1ee-1590064872402”: GET
https://docker.pkg.github.com/v2/user/repo/stages/manifests/de07eea0119baca706320aa6b7f32f887f5700b6fd82e1864867a1ee-1590064872402: NAME_U
NKNOWN: docker package “stages” does not exist under owner “user/repo”

Ci-env

  • GitHub: default WERF_REPO_GITHUB_TOKEN and optional werf config.
  • GitLab: improve stages storage/images repo auto-detection.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.16+fix1
20.05.2020, 17:20 +0300

Fix hard-coded images repo/stages storage implementation for ci-env

Automatically set gitlab docker registry implementation for stages storage and images repo.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.16
20.05.2020, 16:27 +0300

Ci-env mode option for github actions

Add –as-env-file / –output-file-path options.

Fixes

Add cli docs for ‘werf converge’ command.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.15
20.05.2020, 12:10 +0300

Added ‘werf converge’ command

Shortcut for ‘werf stages build’, ‘werf images publish’ and ‘werf deploy’ commands.

Command always builds all images defined in the werf.yaml and uses content-based-tagging and three-way-merge mode.

Command is supposed to bring your application git state into some environment of Kubernetes cluster in one shot: build and publish images defined in the werf.yaml, then release application chart.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.14+fix1
18.05.2020, 20:37 +0300

Added ability to use slash “/” and plus “+” signs in werf.yaml image names

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.14
18.05.2020, 19:07 +0300

Docs

  • Guides/GitHub CI/CD integration.
  • Add distributed-werf reference info and switch to distributed guide.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix3
17.05.2020, 15:01 +0300

Fixes

[dockerfile] Fix COPY –from arbitrary image (not only dockerfile stage)

Docs

Guides/GitLab CI/CD integration: added overview

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix2
14.05.2020, 23:41 +0300

Fixes

  • Fix kubernetes namespace slug: should not allow capital letters.
  • Fix git-related stages selection when multiple git-mappings by the same url used.
    https://github.com/flant/werf/issues/2407

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13+fix1
14.05.2020, 16:35 +0300

Fix v1.1 stage selection algorithm

Fix for a case when two images of the same stage for two consecutive commits are building at the same time. This can lead to the bug, because werf uses oldest stage by creation timestamp and not oldest by save-into-stages-storage timestamp.

Use selection based on saving-into-stages-storage-timestamp instead of docker-image creation timestamp.

After this change stages-storage-cache will be invalidated automatically.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13
12.05.2020, 22:34 +0300

Docs

New CI/CD articles in russian:

  • CI/CD workflows overview: https://ru.werf.io/v1.1-alpha/documentation/reference/ci_cd_workflows_overview.html
  • GitLab CI/CD guide: https://ru.werf.io/v1.1-alpha/documentation/guides/gitlab_ci_cd_integration.html.

English versions are coming soon.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.12+fix1
12.05.2020, 22:29 +0300

Fix “@ERROR: invalid gid nogroup” on imports stage

The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image.

Fixed by running rsync server using root group.

Retry docker pull/push on internal server error

Werf automatically retries pull/push operations on internal server errors.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.13
12.05.2020, 22:28 +0300

Docs

New CI/CD articles in russian:

  • CI/CD workflows overview: https://ru.werf.io/v1.1-alpha/documentation/reference/ci_cd_workflows_overview.html
  • GitLab CI/CD guide: https://ru.werf.io/v1.1-alpha/documentation/guides/gitlab_ci_cd_integration.html.

English versions are coming soon.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.12+fix1
7.05.2020, 19:03 +0300

Fix “@ERROR: invalid gid nogroup” on imports stage

The error occurs when artifact image does not contain “nogroup” group, which was used by default when running rsync server. For example when using “maven:3.6.3-jdk-13” as artifact base image.

Fixed by running rsync server using root group.

Retry docker pull/push on internal server error

Werf automatically retries pull/push operations on internal server errors.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.12
6.05.2020, 20:24 +0300

[completion] Support zsh

# Load zsh completion  
source <(werf completion --shell=zsh)  

Fixes

Fixed panic during sub chart validation

  • https://github.com/flant/helm/pull/44
  • refs https://github.com/flant/werf/issues/2388

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.11
6.05.2020, 12:46 +0300

Custom helm chart directory (.helm) and werf configuration file (werf.yaml) options

  • Add –helm-chart-dir option.
  • Add –config / –config-templates-dir options to override default paths.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10+fix3
29.04.2020, 22:35 +0300

Fix dockerInstructions stage not isolated when used after gitCache

After this release dockerInstructions signature will change if used after gitCache. Stage-not-exists in stages-storage errors may occur in this case.

Other

Detailed error messages for git submodules when submodule exists in the repo in the incorrect state.

[test] Test “Check broken links” hase been updated.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10+fix2
28.04.2020, 12:26 +0300

Fix cleanup deletes stages that are related to deployed images

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10+fix1
27.04.2020, 17:02 +0300

Fix cleanup fails to delete stages from repo stages storage

Automatically set gitlab repo implementation option (--stages-storage-repo-implementation=gitlab) in werf ci-env gitlab.

Other

[docs] Added three new publications about werf.
[docs] Publications on the site updated. Added three new publications about werf.

[docs] Fix README coming soon and features list

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10
24.04.2020, 19:37 +0300

Introducing distributed builds

Werf now can store stages in the docker registry by specifying --stages-storage REPO instead of --stages-storage :local.

There is no more restriction that a single host should be used to run all werf commands for a project:

  • All werf commands that need an access to the stages should specify the same stages storage.
  • It is irrelevant on which host werf command is running as long as the same stages storage is used for the commands like: build, publish, cleanup and deploy.
  • Also all hosts which run werf should have a connection to the Kubernetes cluster, because werf uses Kubernetes to synchronize multiple build/publish/deploy processes running from different machines.

“werf ci-env gitlab” default mode now is to store stages by path CI_REGISTRY_IMAGE/stages. All existing werf installations will continue to use :local stages storage because --stages-storage :local param has explicitly been specified in all CI-configs. So to use distributed builds user needs to remove this param, see guided steps below about migrating to the distributed stages storage.

Synchronization, caches and cleanup

Introduced a new parameter named --synchronization, which controls how multiple werf processes are synchronized between each other. There is a stages-storage cache and locks components that werf needs to run. Stages storage cache is an internal component used to boost werf performance for idle builds when calculating stages. Locks are needed to organize correct publishing of new stages into stages-storage, publishing images into images-repo and for deploy process also.

When --synchronization :local used (which is factually by default in the previous versions < v1.1.10), then stages-storage cache reside in the local host file system (~/.werf/shared_context/storage/stages_storage_cache/1/PROJECT) and local file locks are used.

When --synchronization kubernetes://NAMESPACE is used, then werf creates a ConfigMap for project in this namespace, stores stages storage cache in this ConfigMap and uses distributed locking over this ConfigMap to synchronize multiple werf processes running from multiple hosts.

By default, when non local stages-storage is used werf automatically use kubernetes://werf-synchronization namespace and create a ConfigMap named werf-PROJECT in this namespace. User can specify arbitrary non-standard namespace on own needs.

What about local docker images cache on hosts where werf is running? — There is such a cache, which is cleared either by the werf itself or can freely be removed by other tools (docker rmi
.

New commands to sync and switch stages

  1. werf stages sync --from=:local|REPO --to=:local|REPO.
    • Command will copy stages from one stages-storage to another.
    • Command will copy only difference of stages from one stages-storage to another.
    • Furthermore command will copy multiple stages in parallel.
    • Command run result is idempotent: sync can be called multiple times, interrupted, then called again — the result will be the sam
      .
    • There are delete options: --remove-source and --cleanup-local-cache, which controls whether werf will delete synced stages from source stages-storage and wheter werf will cleanup localhost from temporary docker images created during sync process.
    • This command can be used to download project stages-storage to the localhost for development purpose as well as backuping and migrating purposes.
  2. werf stages switch-from-local --to=REPO
    • Command will automatically sync existing stages from :local stages storage to the specified REPO.
    • Command will block project from being used with :local stages-storage.
      • This means after werf stages switch-from-local is done, any werf command that specifies :local stages-storage for the project will fail preventing storing and using build results from different stages-storages.
      • Note that project is blocked after all existing stages has been synced.

How to migrate to distributed mode

Let’s say you have some project in Gitlab CI, that uses werf. Steps:

  1. Go to the directory where your project reside on the runner host.
  2. Create an MR in the project, that removes --stages-storage :local param from all werf invocations. There is no need to set this param explicitly anymore, because werf ci-env will automatically set it to CI_REGISTRY_IMAGE/stages.
  3. Run werf stages switch-from-local --to=CI_REGISTRY_IMAGE/stages where CI_REGISTRY_IMAGE is the address of container registry for your gitlab project. After this step all werf invocations from different git branches of the project that uses --stages-storage :local will refuse to work, because switch-from-local command sets a block to use :local.
  4. Merge your MR with correct stages-storage param.
  5. All git branches that need to run werf should rebase then onto the new changes to use new stages-storage, otherwise werf will refuse to use :local stages storage.

Other changes since last release v1.1.10-alpha.7

[docs] Remove –stages-storage :local from Gitlab CI docs
[ci] Cache GO modules
[tests] New tests
[tests] K8S/Cleanup Suite: test cleanup with deployed image
[tests] K8S/Guides Suite: actualize after each
Error: –stages-storage=ADDRESS param required
[tests] Helm/Render Suite: add extra annotations and labels check
[tests] Cleanup Suite: test stages storage repo

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.6
22.04.2020, 13:17 +0300

Github Actions support (alpha)

[ci-env] GitHub support.
[testing] CI-env Suite: add github.

werf ci-env github --as-file  

Remote storages support: fix lockgate ConfigMap data key invalid

https://github.com/flant/lockgate/pull/12

Refactor and fix kubernetes cm key name

  • Renamed LockHandle.ID to LockHandle.UUID to be more clear.
  • Use “lockgate.io/SHA3_224(lock-name)” for ConfigMap key names due to ConfigMap names restrictions.

Other

Fix provided shell ‘WERF_SHELL’ not supported.
Retry docker pull/push when specific errors occur.

[logging] Turn off Docker Registry API debug messages by default.

[ci] Fix Cleanup Docker Hub test repositories.
[ci] Split test workflow into two independent workflows.
[ci] Disable GitHub Packages in cleanup test suite.

[docs] Regen commands cli documentation reference.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.4
22.04.2020, 01:39 +0300

Remote storages support

  1. Refactor –synchronization param:
    • -S shorthand;
    • synchronization=:local by default when –stages-storage=:local;
    • synchronization=kubernetes://werf-synchronization by default when stages-storage != :local;
    • ability to specify arbitrary namespace with --synchronization kubernetes://mynamespace.
  2. Auto reset stages-storage-cache and retry action when docker-image has been deleted from stages-storage, but exists in the stages-storage-cache.

Fixes

Fix gitLatestPatch signature not stable to index line in patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.5
21.04.2020, 21:32 +0300

Remote storages support: fix kubernetes locks

Distributed builds can be used now by specifying –stages-storage=REPO_ADDRESS.

  • Fixed bugs in kubernetes locks subsystem.
  • Fixed panic in ‘werf images purge’ due to missed synchronization param setup

Werf ci-env refactor

Added –as-file option, which is more portable way to use werf ci-env. Example:

. $(werf ci-env gitlab --as-file)  

Changed all docs and guides to use --as-file.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.4
20.04.2020, 20:55 +0300

Remote storages support

  1. Refactor –synchronization param:
    • -S shorthand;
    • synchronization=:local by default when –stages-storage=:local;
    • synchronization=kubernetes://werf-synchronization by default when stages-storage != :local;
    • ability to specify arbitrary namespace with --synchronization kubernetes://mynamespace.
  2. Auto reset stages-storage-cache and retry action when docker-image has been deleted from stages-storage, but exists in the stages-storage-cache.

Fixes

Fix gitLatestPatch signature not stable to index line in patches.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.3
17.04.2020, 22:44 +0300

Fix release

Fix problems related to changes introduced in v1.1.10-alpha.2: signatures has been accidentally changed in v1.1.10-alpha.2.

Fixes that were made in v1.1.10-alpha.2 are also available in this v1.1.10-alpha.3 release:

[cleanup] Skip images with MANIFEST_UNKNOWN error

[build][git] Handle “commits not present” line in git diffs

[build][git] Fix gitLatestPatch not built when previous stage has been discarded during build

  • remove git-building-stage map from Conveyor;
  • remove AfterSignatureCalculated Stage hook.

[dockerfile] Fix ONBUILD instruction processing

  • dockerfile stage signature should take into account ONBUILD value;
  • dockerfile stage that uses another one with ONBUILD instructions should calculate files checksum for COPY/ADD trigger instruction in addition to ONBUILD value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.1
15.04.2020, 22:18 +0300

Fix dockerfile builder

[dockerfile] Fix checksum calculation algorithm does not count ignored files (.gitignore).

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

Remote storages support: distributed builds support

‘werf switch-from-local’ command implemented

werf switch-from-local –to registry.mycompany.com/mygroup/myproject

This command will:

  1. Sync existing local stages to the specified stages storage.
  2. Globally lock stages and images after sync.
  3. Set block to prevent any werf-command with –stages-storage=:local:
    user should change this param to the new stages-storage repo.
  4. Sync existing local stages to the specified stages storage second time.

Implemented stages-storage-cache in ConfigMap

  • Store stages-storage-cache in ns/werf-synchronization cm/werf-PROJECT_NAME
    when --synchronization=:kubernetes has been specified.
    • The same ConfigMap also used for kubernetes-based locks in annotations
      when --synchronization=:kubernetes has been specified.

Kubernetes based locks support

When --synchronization=:kubernetes werf will use kubernetes-locks in
ConfigMap for project: cm/werf-PROJECT_NAME.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.10-alpha.2
15.04.2020, 21:44 +0300

Fixes

[cleanup] Skip images with MANIFEST_UNKNOWN error

[build][git] Handle “commits not present” line in git diffs

[build][git] Fix gitLatestPatch not built when previous stage has been discarded during build

  • remove git-building-stage map from Conveyor;
  • remove AfterSignatureCalculated Stage hook.

[dockerfile] Fix ONBUILD instruction processing

  • dockerfile stage signature should take into account ONBUILD value;
  • dockerfile stage that uses another one with ONBUILD instructions should calculate files checksum for COPY/ADD trigger instruction in addition to ONBUILD value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix3
15.04.2020, 16:13 +0300

Fix dockerfile builder

[dockerfile] Fix git status checksum algorithm does not count symlinks properly
[dockerfile] Skip outside the build context wildcard till fail on docker build
[dockerfile] Take into account ignored files by .gitignore files
[dockerfile] Change checksum calculation without git logic

  • Add relative file path and mode to checksum
  • Add symlink link to checksum instead of linked data
    [dockerfile] Fix git status with not initialized submodules

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix2
13.04.2020, 14:28 +0300

Remote storages support: safe switch between alpha and beta werf versions

Invalidate stages-storage-cache directory when old cache directory exists. Remove old and current stages-storage-cache directories in this case.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9+fix1
10.04.2020, 17:36 +0300

Fixes and docs

  • Use 1.1 stable in README installation and docs.
  • Fix: change stages-storage-cache dir to ~/.werf/shared_context/storage/stages_storage_cache/1/.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9
10.04.2020, 13:01 +0300

Support non-default docker registries implementations and dockerhub

  • AWS ECR, Azure CR, GCR, GitHub Packages, GitLab Registry, Harbor, Quay.
  • Documentation: https://werf.io/v1.1-beta/documentation/reference/working_with_docker_registries.html

Support stages-storage in docker registry

For now only when building from single host. Building from multiple hosts will be available soon in v1.1.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.9
8.04.2020, 16:22 +0300

New builder features ported from v1.1 beta to v1.1 alpha

  • build artifacts only by werf build -s :local ARTIFACT ARTIFACT;
  • import from certain artifact/image stage by specifying stage directive in imports.

Fixes

Fix gitLatestPatch signature differs in different worktrees: handle git-diff patch index line in v1.1 compatible manner.

Werf stages-storage commands and changes

  • improved ‘werf stages sync’ command: implemented –remove-source and –cleanup-local-cache options;
  • implemented restriction for project to use only single stages-storage at a time,
    use ‘werf stages switch’ command to switch stages-storage for the project.
  • removed ‘werf stages mv’ command, use ‘werf stages sync –remove-source’ + ‘werf stages switch’ instead.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.8
6.04.2020, 12:39 +0300

INCOMPATIBLE CHANGE Fix stages and images isolation problem for git-latest-patch and stages-signature

  • gitLatestPatch stage was not isolated between different branches when the same changes
    has been made in two different commits: added commits ancestry check when selecting
    suitable stage from cache for gitLatestPatch. The signature of gitLatestPatch stage
    has not been changed.

  • Stages-signature was not isolated between different branches when the same
    changes has been maed in two different commits. IMPORTANT stages-signature
    calculation algorithm has been changed, stages-signature will change for all projects
    that use stages-signature tagging strategy (content-based).

Remote storages support: more registries support, docs and fixes

  • Full support for Azure CR implementation.
  • Documented docker registry implementations.
  • Added separate stages docker images manifests cache in ~/.werf/local_cache/manifests/1/DOCKER_IMAGE_NAME_SHA256.
  • Added global locks for build, publish and images cleaning commands, to prevent collissions: only a single cleanup command
    can be active at one time, no build, publish or deploy command is allowed while cleanup command is wokring;
    but build, publish and deploy commands can work simultaneously.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.7
31.03.2020, 22:22 +0300

Fix cleanup-procedure that breaks builds and descriptive error in that case

  1. Cleanup procedure in the previous version was not cleaning stages-storage-cache ~/.werf/local_cache/stages_storage_v3, while deleting images from stages-storage. This behaviour lead to unexpected error during build-procedure, like: “Error response from daemon: No such image: sha256:69dcb14a44993b7…”.
  2. When image has been found in the stages-storage-cache and does not exists in the stages-storage werf will print descriptive error prompting to delete stages-storage-cache. In the future versions werf will reset build automatically in this case.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.5
31.03.2020, 12:51 +0300

Remote storages support: fix ‘error creating docker registry accessor for repo … registries must be valid RFC 3986 URI’

Support registry or Docker Hub account as –images-repo value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.6
30.03.2020, 22:44 +0300

Fix extra annotations/labels are not added to k8s resources

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.5
30.03.2020, 22:01 +0300

Remote storages support: fix ‘error creating docker registry accessor for repo … registries must be valid RFC 3986 URI’

Support registry or Docker Hub account as –images-repo value.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.4
30.03.2020, 19:50 +0300

Remote storages support: distributed builds

  • optimized distributed builds by not cleaning up built and fetched stages from localhost — these will be reused as a cache on retrie
    ;
  • added ‘werf stages mv’ command prototype to move built stages from one stages storage to another.
  • fix panic ‘github.com/flant/werf/pkg/build/stage.(*BaseStage).getServiceMountsFromLabels’, which occured when base image has been pulled from the registry.

Remote storages support: more registries available and fixes

  • full support for AWS ECR implementation;
  • enabled cleanup for stages storage when docker registry is used as a stages storage;
  • fix “UNSUPPORTED: Invalid parameter at ‘maxResults’” when using ECR, by updating github.com/google/go-containerregistry, the issue: https://github.com/google/go-containerregistry/issues/681.
  • support registry/account as –images-repo value;
  • detailed error when user specifies incorrect credentials;
  • add options to specify Docker Hub token;
  • auto images repo mode: default repo mode for images repo implementation.

Other

  • fix lint and render panic: –insecure-registry, –skip-tls-verify-registry for images repo and stages repo by default, change stub “IMAGES_REPO” to “stub/repository”.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.3
25.03.2020, 10:47 +0300

More docker registries implementations support

  • harbor;
  • GitHub packages registry.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.2
24.03.2020, 23:49 +0300

Remote storages support: first working build with –stages-storage=REPO + fixes

  • fixed panic ‘should_be_built_phase.go:47 +0x45’;

  • working werf build --stages-storage=REPO command on the single host for now.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.9-alpha.1
24.03.2020, 11:37 +0300

Remote storages support (1): full dockerhub support

Added ability to cleanup images published into dockerhub.

Specify following params for werf build-and-publish or werf publish commands:

      --images-repo-docker-hub-password='':  
            Docker Hub password for images repo implementation (default $WERF_IMAGES_REPO_DOCKER_HUB_PASSWORD or                        
            $WERF_REPO_DOCKER_HUB_PASSWORD).  
      --images-repo-docker-hub-username='':  
            Docker Hub username for images repo implementation (default $WERF_IMAGES_REPO_DOCKER_HUB_USERNAME or                        
            $WERF_REPO_DOCKER_HUB_USERNAME).  
      --images-repo-implementation='':  
            Choose images repo implementation.  
            The following docker registry implementations are supported: ecr, default, dockerhub, gcr, github, gitlab, quay.  
            Default $WERF_IMAGES_REPO_IMPLEMENTATION, $WERF_REPO_IMPLEMENTATION or auto mode (detect implementation by a registry).  

For example:

source <(multiwerf use 1.1 alpha)  
...  
export WERF_IMAGES_REPO_DOCKER_HUB_USERNAME=myuser  
export WERF_IMAGES_REPO_DOCKER_HUB_PASSWORD=password  
export WERF_IMAGES_REPO_IMPLEMENTATION=dockerhub  
source <(werf ci-env gitlab)  
werf build-and-publish -s :local  

It is better to define WERF_IMAGES_REPO_DOCKER_HUB_USERNAME, WERF_IMAGES_REPO_DOCKER_HUB_PASSWORD and WERF_IMAGES_REPO_IMPLEMENTATION variables as gitlab secret environment variables.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.8
23.03.2020, 22:05 +0300

An option to enable cleanup for stages-signature tagging strategy

When running werf in ci with werf ci-env command, then either:

  • create cleanup config for the host:

    mkdir ~/.werf/config  
    echo "stagesSignatureStrategyExpiryDays: 30" >> ~/.werf/config/cleanup.yaml  
    echo "stagesSignatureStrategyLimit: 50" >> ~/.werf/config/cleanup.yaml  
    
  • export environment variables in your CI/CD system: WERF_STAGES_SIGNATURE_STRATEGY_LIMIT=50 and WERF_STAGES_SIGNATURE_STRATEGY_EXPIRY_DAYS=30.

By default werf will not cleanup images published with stages-signature tagging strategy and related stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.7
23.03.2020, 12:17 +0300

[deploy] Hotfix werf helm render: fix problem with ‘|’ rendered as ‘|-‘

Change gopkg.in/yaml.v2 to github.com/ghodss/yaml in custom werf templates engine,
as github.com/ghodss/yaml is used everywhere in the helm 2.

In the helm 3 sigs.k8s.io/yaml is used, but it is not possible for now to switch to sigs.k8s.io/yaml before switching to helm 3 codebase.
https://github.com/helm/helm/blob/master/pkg/engine/funcs.go#L27

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.6
23.03.2020, 10:24 +0300

Secret unsafe option to disable git minimum version constraint

Set WERF_DISABLE_GIT_MIN_VERSION_CONSTRAINT=1 to disable min git version constraint.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.5
20.03.2020, 11:38 +0300

Docs

Added rss feeds for werf releases.

Fixes

[dockerfile] Fail build if dockerfile COPY instruction refers to nonexistent stage.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.4
19.03.2020, 22:50 +0300

[dockerfile] Fix dockerfile stage name from “COPY –from” is not detected

Docker parser coverts dockerfile stage name (AS) to lowercase but in places of the name usage (COPY –from) does not.
This affected dockerfile stage signature calculation and occurred false warning messages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.3
19.03.2020, 11:12 +0300

Fix release

[dockerfile] Fix calculating context files checksum when submodule is used

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.2
12.03.2020, 10:25 +0300

Fix git problems release

Fix creating an archive fails when nested submodules is used

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.1
11.03.2020, 13:51 +0300

Fix git problem release

Fix creating an archive fails when submodule dir/file is specified in git.add

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0
6.03.2020, 18:06 +0300

Official v1.1 beta

Implemented content based tagging and new stages storage architecture as a big step toward distributed and concurrent builds.

New stages format and cache selection algorithm

New stage name generation rule. Every build of the stage generates uniq stage-cache image name, which consists of 2 parts: signature (as in v1.0) plus unique identifier.

For example, full stage image name will look like:

  
werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835
  
werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC
  

Signature identifier of the stage represents content of the stage and depends on git history which lead to this content.

Werf stage selection algorithm is based on the git commits ancestry detection:

  1. Werf calculates a stage signature for some stage.

  2. There may be multiple stages in the stages storage by this signature, werf selects all suitable stages by the signature.

  3. If current stage is related to git (git-archive, user stage with git patch or git latest patch), then werf selects only

    those stages which are relaed to the commit that is ancestor of current git commit.

  4. Select from the remaining stages the oldest by the creation timestamp.

There may be multiple built images for a single signature.

Stage for different git branches can have the same signature, but werf will prevent cache of different git branches from

being reused for totally different branch.

For more info see documentation: https://werf.io/v1.1-beta/documentation/reference/stages_and_images.html#stage-naming.

New stage building and saving algorithm

If suitable stage has not been found during stage selection, werf starts building a new image for stage.

Note that multiple processes (on a single or multiple hosts) may start building the same stage at the same time. Werf uses optimistic locking when saving newly built image into the stages storage: when a new stage has been built werf locks stages storage and saves newly built stage image into storage stages cache only if there are no suitable already existing stages exists. Newly saved image will have a guaranteed unique identifier

by TIMESTAMP_MILLISEC. In the case when already existing stage has been found in the stages storage werf will discard newly built image and

use already existing one as a cache.

In other words: the first process which finishes the build (the fastest one) will have a chance to save newly built stage into the stages storage. The slow build process will not block faster processes from saving build results and building next stages.

For more info see documentation: https://werf.io/v1.1-beta/documentation/reference/stages_and_images.html#stage-building-and-saving.

Benefits of new stages storage architecture

This new stages storage architecture opens up an opportunities to build stages concurrently and even distributely

from multiple build machines. For now there are no theoretical limitations of current werf architecture to implement

distributed or concurrent builds. So we consider this release as a big step towards distributed and concurrent builds.

Werf have an --stages-storage and --synchronization parameters which specify addresses of the stages storage and

synchronization lock manager. For now there is only :local implementations of both primitives. By changing these implementations to docker-registry for the stages storage and Redis or Kubernetes server based synchronization lock manager, werf will implement distributed builds out of the box.

Content based tagging

Werf v1.1 supports so called content based tagging. Tags of resulting docker images depend on the content of these images.

When using werf publish --tags-by-stages-signature or werf ci-env --tagging-strategy=stages-signature werf will tag result images by so called image stages signature. Each image tagged by own stages signature which calculated by the same rules as regular signature of image stage.

Image stages signature depends on content of the image and depends on the git history which lead to this content.

There may be dummy commits into the git repo that do not change resulting images. For example empty commits, merge commits or commits which change files that are not imported into the resulting image.

When using tagging by git-commits these dummy commits will cause werf to create new images names even if content of these images is the same. New images names in turn will cause restarts of application Pods in Kubernetes which is totally not a desired behaviour. All in all this is the reason preventing storing multiple application services in the single git repo.

Stages signature on the countrary will not change on dummy commits, so these commits will not cause restarts of application Pods in kubernetes, yet it similarly to commit-id relates to the git history of edits and depends on the content of the files.

Also tagging by stages signatures is more realiable tagging method than tagging by a git-branch for example, because resulting images content does not depend on order of pipelines execution. Stages signature leads to stable immutable images names which represent the address of the certain image content.

NOTE From now and on stages-signature is the default tagging strategy and the only recommended one for usage.

For more info see documentation: https://werf.io/v1.1-beta/documentation/reference/publish_process.html#content-based-tagging.

Improved performance of stages selection and verification

Idle builds when all stages are exist in the stages storage are really fast now (in the most cases build retry will run under 1sec).

Stages verification performance during werf deploy and werf run commands also improved a lot.

Improved performance of Dockerfile builder

Werf Dockerfile builder signature calculation performance is improved due to using git ls-tree checksums

for docker context files. Signature calculation does not depend on the docker context size.

Improved performance of artifact/image imports

Werf uses rsync server to import files from artifacts and images.

MacOS imports performance does not depend on docker implementation of volumes now. MacOS imports performance is the same as in Linux and Windows.

Other changes

  • Added --log-debug, --log-verbose and --log-quiet modes.

  • Removed legacy params and code (dapp secret key legacy support removed; --insecure-repo legacy option removed, only –skip-tls-verify-registry is available).

  • Eliminated werf.io/recreate annotation, werf uses helm.sh/hook-delete-policy=before-hook-creation mode by default (as in helm 3).

  • Improved werf cleanup procedure not to clean images from werf.yaml defined in the different git branches,

    those are not exist in the werf.yaml config of the master branch. Added new commands to control managed images: werf managed-images ls|add|rm.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.7
6.03.2020, 11:41 +0300

Docs

  • New stages storage architecture documented.

  • Content based tagging documented.

Other fixes

  • fromLatest/git.Branch params could be used only with herebyIAdmitThatBranchMightBreakReproducibility and herebyIAdmitThatFromLatestMightBreakReproducibility params;

  • werf images managed subcommand renamed to werf managed-images;

  • tiny logging improvements:

    • hide docker container output in silent mode;

    • initialize stapel container before preparing of stage run args.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.6
4.03.2020, 19:09 +0300

Fix logs in default mode

Remove ‘Switch work tree to commit …’ messages in default mode (will be printed in –log-verbose or –log-debug).

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.5
4.03.2020, 13:14 +0300

WARNING: incompatible release

Stages signatures was changed, pipelines that were already build will use new signatures on retry, so rebuild needed.

Dockerfile builder support for v1.1!

Calculate docker build context files checksum with git ls-tree and status.

Fixed imports: allow merging of directories

  
import:
  
- artifact: myartifact
  
  add: /mydir
  
  to: /my/existing/dir
  
  after: install
  

Werf will automatically merge content of /mydir into /my/existing/dir.

This case was broken in v1.1.0-beta.4 due to imports optimization rework: the specified config will create my/existing/dir/mydir instead of merging directories.

v1.1.0-beta.3 was not affected by this bug.

Fixed logging performance

Fixed logboek library logging performance when processing large output, e.g. from make build command. Logging performance affects build time.

Stapel image updated to version 0.6.1.

Logging improvement

  • Disabled debug logging by default.

  • Default logging includes minimum viable info for commands.

  • --log-debug and --log-verbose options are avaiable.

  • More info in --log-debug mode.

Store managed config images in stages storage

Images that were built by werf will be remained in stages storage. For each such image managed image record created as werf-managed-images/PROJECT:IMAGE_NAME.

During cleanup procedure werf will preserve stages cache of images that are defined in the current werf.yaml config and images from managed images list. This prevents images defined only in custom git branches from being cleaned up, when running werf cleanup procedure main (master) branch.

Werf automatically creates records for managed images during build procedure.

Managed images list could be manually viewed and changed using commands:

  • werf images managed -s :local ls

  • werf images managed -s :local add IMAGE_NAME

  • werf images managed -s :local rm [IMAGE_NAME, ...]

Small fixes and changes

  • Fix publishing of only specified in cli images by names.

  • Renamed --stages-storage-lock param to --synchronization: address of synchronizer for multiple werf processes to work with a single stages storage (:local by default).

  • Update kubedog: load more kubernetes client-go auth plugins: azure, exec, oidc, openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.4
25.02.2020, 21:32 +0300

Optimize imports: rsync import server

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.3
20.02.2020, 16:49 +0300

Fixes release (INCOMPATIBLE — more info belo

)

Small fixes and additions

  • Add –log-verbose, –log-quiet options, use –log-debug=true by default for werf v1.1 for now.
  • Fixed and enabled cleanup procedure.
  • Do not publish artifacts fix.
  • Fix: cleanup dockerfile builder tmp img on conveyor termination.
  • Fix helm release name slugify: should be a valid DNS-1123 subdomain and be maximum 53 chars.

Fix import stage logic and stages cleanup

The import stage image has the specific label value that is used during stages cleanup procedure. In this commit, related image/artifact signature which stored in the label is replaced on image ID.

The signature does not identify the stage since we started to use not only signature in an image tag. From v1.1, werf is building stages consistently so related image/artifact image ID is available when werf is preparing import stage.

INCOMPATIBLE change, because signature of import stage has been changed. Already built images should be rebuilt with this version of werf.

Also prevented possible bug, which may occur when artifacts are used and there are empty stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.2
20.02.2020, 16:47 +0300

Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.3
20.02.2020, 16:17 +0300

Fixes release (INCOMPATIBLE — more info belo

)

Small fixes and additions

  • Add –log-verbose, –log-quiet options, use –log-debug=true by default for werf v1.1 for now.
  • Fixed and enabled cleanup procedure.
  • Do not publish artifacts fix.
  • Fix: cleanup dockerfile builder tmp img on conveyor termination.
  • Fix helm release name slugify: should be a valid DNS-1123 subdomain and be maximum 53 chars.

Fix import stage logic and stages cleanup

The import stage image has the specific label value that is used during stages cleanup procedure. In this commit, related image/artifact signature which stored in the label is replaced on image ID.

The signature does not identify the stage since we started to use not only signature in an image tag. From v1.1, werf is building stages consistently so related image/artifact image ID is available when werf is preparing import stage.

INCOMPATIBLE change, because signature of import stage has been changed. Already built images should be rebuilt with this version of werf.

Also prevented possible bug, which may occur when artifacts are used and there are empty stages.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.2
19.02.2020, 17:26 +0300

Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-beta.1
17.02.2020, 16:08 +0300

First Werf v1.1 beta release!

Main changes since v1.0:

  1. Fully reworked build process, new incompatible stages storage format (new build cache).
  • Improved performance of idle builds (from cache) nearly by one order of magnitude when git repo of the project is big.

  • Build cache isolation based on the git history. Build cache of different branches without same base is not overlapped. No more “rebase” related problems.

  • Also improved performance of stage-dependencies calculation (using git ls-tree mechanix) when large folders are specified as stage dependencies.

  1. Content based tagging using werf publish --tag-by-stages-signature option or werf ci-env --tagging-strategy=stages-signature tagging strategy.

    The default tagging strategy is stages-signature, werf ci-env parameter --tagging-strategy may be omitted to use default strategy.

Not supported in this version

IMPORTANT Following feature are not supported in the current beta version and will be repaired in the following releases very soon!

  • Building Dockerfile-based images. This version of werf v1.1 beta should not be used to build dockerfile-based images.

  • werf cleanup command will not actually clean stages, only images, due to the bug in the cleaning procedure. werf cleanup command can and should be used already now and will be fixed soon by automatic releases updater for 1.1 beta channel.

Fully reworked build process

  • Stage image name format changed: werf-stages-storage/PROJECT_NAME:SIGNATURE-UNIX_TIMESTAMP_MILLISECS.

  • UNIX_TIMESTAMP_MILLISECS is the unique part of stage image name.

  • There may be multiple stages with the same SIGNATURE part. Signature is based on the content of the image, while timestamp is added to keep separately built images separate.

  • IMPORTANT! Multiple processes may build the same stage by the same signature simultaneously at the same time. The first builder that builds the stage will store the stage in the stages storage. Other builders will discard build results when saving newly built image into stages storage if stages storage already contains suitable image built by the other process.

  • There may be multiple stages with the same SIGNATURE for different git branches. Stage selection algorithm will make sure that stage is suitable for your branch.

Compatibility notes

Incompatibilities with v1.0:

  • Werf v1.1 will generate new stages for stages storage.

  • Removed legacy ruby dapp secret-key format support.

  • Removed –insecure-repo option, use –skip-tls-verify-registry option instead.

  • “helm.sh/hook-delete-policy=before-hook-creation” by default for all kinds of hooks (not only Jobs as in v1.0).

  • Strict yaml parsing which does not allow duplicate keys in yaml docs (affects werf.yaml, .helm/templates/**, .helm/values.yaml etc.).

It is OK to use v1.0 and v1.1 simultaneously:

  • v1.1 and v1.0 may exists on the same host system, without any restrictions;

  • v1.1 and v1.0 may be used in the different branches of the same project without any restrictions;

  • cleanup procedure of v1.0 will not affect v1.1 and vice versa;

  • build cache (stages in the stages-storage) of v1.0 and v1.0 is fully separated.

How to enable v1.1

  1. Change multiwerf use command:

      
    type multiwerf && source <(multiwerf use 1.1 beta)
      
    
  2. (Optional) To use content based tagging change ci-env command:

      
    type werf && source <(werf ci-env gitlab)
      
    

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.19
17.02.2020, 14:45 +0300

Remove legacy unstrict yaml parser

Use yaml strict unmarshal everywhere

  • Update flant/helm to the version with strict unmarshal.
  • Update gopkg/yaml to v3.
  • Update github.com/ghodss/yaml to v1.0.
  • Use yaml.UnmarshalStrict everywhere in the werf codebase.

This change may broke existing 1.0 installations with bad yaml-configs.

Temporarily disable stages cleanup by default due to the bug

Dry-run mode is forced by default for stages-cleanup procedure in commands: werf stages cleanup, werf cleanup.

Images cleanup is not affected and enabled as always in werf cleanup.

To enable stages-cleanup forcefully set: WERF_STAGES_CLEANUP_ENABLED=1.

Dry-run by default will be disabled when stages-cleanup procedure bug is fixed.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.18
14.02.2020, 14:30 +0300

Fix release

  • Fix ssh-agent not adding default keys and keys passed by the --ssh-key option.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.17
13.02.2020, 23:00 +0300

Experimental stages cache rework (17)

  • Optimize more stage dependencies checksum calculation (update go-git library).

  • Cleanup legacy code that breaks backward compatibility, update library dependencies:
    • Eliminate werf.io/recreate annotation, use helm.sh/hook-delete-policy=before-hook-creation by default.
    • Remove git-mapping legacy cwd param, change paramshash.
      Git-mapping paramshash include ‘add’ parameter as is without leading slash sign. This will change signature for git-archive stage and need cache rebuild.
    • Remove “legacy” comments for code that is not really legacy.
    • Remove –insecure-repo legacy option: only –skip-tls-verify-registry is available.
    • [werf secret key] Remove dapp secret key legacy support.
    • [go.mod] Update flant/helm, kubernetes lib dependencies to v0.16.7, logboek=origin/debug_functions and kubedog
  • Content based tagging by signatures fix, param renamed: werf publish --tag-by-stages-signature and werf ci-env --tagging-strategy=stages-signature.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.14
12.02.2020, 11:36 +0300

Git stage dependencies optimization

Calculate stage dependencies checksum with git ls-tree.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.13
11.02.2020, 21:44 +0300

Experimental stages cache rework (13)

  • fix gitCache and user-stages with git should select suitable images based on git ancestry;
  • publish with optimistic locks and content based tagging
    • werf ci-env –tagging-strategy=content-based option value, which is default;
    • gitLatestPatch stage signature does not include current git-commit, but include a patch content up to current git-commit.
    • werf publish –tag-by-signatures=true false option to tag images by last stage signatures, which is current method of content-based tagging.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.12
10.02.2020, 00:55 +0300

Experimental stages cache rework (12)

  • Refactor signature calculation, stage signature should depend on stage name.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.11
7.02.2020, 20:21 +0300

Experimental stages cache rework (11)

Fix panic

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.10
7.02.2020, 20:08 +0300

Experimental stages cache rework (10)

  • Fix invalid build cache: fix dockerInstructions signature does not depend on prev stage signature.
  • Optimization: do not create excess git archives before signatures calculation.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.9
7.02.2020, 10:37 +0300

Experimental stages cache rework (9)

  • Fix merge-base error handling for ‘Not a valid commit name’.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.8
6.02.2020, 18:01 +0300

Experimental stages cache rework (8)

  • Fix panic when discarding newly built image.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.7
6.02.2020, 16:15 +0300

Experimental stages cache rework (7)

Fix case when stages storage cache has been invalidated:

  • By manual or accidental cleaning of docker image from stages storage while this image exists in stages storage cache.
    Werf will refresh this stage cache from stages storage in this case.

  • Always refresh stage cache in stages storage cache when this stage has been newly built.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.6
5.02.2020, 18:28 +0300

Experimental stages cache rework (6)

  • Coherent stages storage cache implemented.
  • werf –debug option to print debug logs.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.1.0-alpha.5
4.02.2020, 14:13 +0300

Experimental stages cache rework (5)

  • Log all stages storage operations with time spent.

Installation

Linux amd64

Darwin amd64

Windows amd64

4.02.2020, 12:22 +0300
4.02.2020, 11:03 +0300
3.02.2020, 21:46 +0300
29.01.2020, 00:26 +0300
Канал:

Для критичных окружений с высоким SLA

Канал обновлений Rock-Solid рекомендуется использовать в критичных окружениях с высоким SLA. Мы гарантируем обратную совместимость между версиями канала обновлений Rock-Solid в пределах минорной версии (1.1.x). Мы гарантируем, что версия из канала обновлений Stable перейдет в канал обновлений Rock-Solid не ранее чем через 2 недели плотного тестирования.

v1.0.13
25.03.2020, 08:37 +0300

Load more kubernetes client auth plugins

  • azure;
  • exec;
  • oidc;
  • openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.12
13.03.2020, 11:51 +0300

[1.0] Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

20.02.2020, 16:17 +0300
20.02.2020, 13:57 +0300
14.01.2020, 09:35 +0300
10.01.2020, 20:35 +0300
19.12.2019, 17:21 +0300

Рекомендуемый канал обновлений, если вы не уверены в выборе

Канал обновлений Stable можно безопасно использовать и мы рекомендуем этот канал обновлений везде. Мы гарантируем обратную совместимость между версиями канала обновлений Stable в пределах минорной версии (1.1.x). Мы гарантируем, что версия канала обновлений Early-Access перейдет в канал обновлений Stable не ранее чем через неделю после внутреннего тестирования.

v1.0.13
17.03.2020, 14:46 +0300

Load more kubernetes client auth plugins

  • azure;
  • exec;
  • oidc;
  • openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.12
28.02.2020, 10:18 +0300

[1.0] Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

14.02.2020, 12:56 +0300
6.02.2020, 18:31 +0300
14.01.2020, 09:35 +0300
10.01.2020, 20:35 +0300
12.12.2019, 15:25 +0300

Для некритичных окружений или локальной разработки

Версии этого канала обновлений обычно безопасно использовать в некритичных окружениях или при локальной разработке. Мы не гарантируем обратную совместимость между версиями канала обновлений Early-Access.

v1.0.13
10.03.2020, 13:35 +0300

Load more kubernetes client auth plugins

  • azure;
  • exec;
  • oidc;
  • openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.12
20.02.2020, 16:17 +0300

[1.0] Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.11
19.02.2020, 17:26 +0300

Docs

[docs] Fixed broken links. Links autotest.
[docs] Releases page refactoring. Added buttons to switch between maj.min versions and update channels.
[docs] Dropdown version menu on the sidebar shows version, grouped by maj.min
[docs] Updated footer. Fixed heart icon :)

Bugfixes

Fix werf helm render prints wrong data when printf-like format strings used in the helm templates text.

Werf CI and tests

[ci] Documentation validation workflow: tiny improvements
[ci] Refresh site deployment workflow: remove unused events

[tests] Fix python_encoding_repo/yarn_repo not a git repository
Remove _repo suffixed dir before test. This dir may exist if previous tests has been killed for some reason.
[tests] Fix ‘find: unrecognized: -xtype’ in stapel_image/git tests: use ubuntu base image instead of alpine
[tests] Enable docs suite for macOS
[tests] Enable resources adopter tests
[tests] Disable a few git suite tests for windows

Installation

Linux amd64

Darwin amd64

Windows amd64

6.02.2020, 18:31 +0300
31.01.2020, 15:33 +0300
14.01.2020, 09:35 +0300
10.01.2020, 20:29 +0300
12.12.2019, 15:25 +0300

Для более глубокого тестирования новых возможностей

Версии этого канала обновлений предназначены для более глубокого тестирования новых возможностей. Мы не гарантируем обратную совместимость между версиями канала обновлений Beta.

v1.0.13
10.03.2020, 13:35 +0300

Load more kubernetes client auth plugins

  • azure;
  • exec;
  • oidc;
  • openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.12
19.02.2020, 17:26 +0300

[1.0] Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.11
18.02.2020, 14:52 +0300

Docs

[docs] Fixed broken links. Links autotest.
[docs] Releases page refactoring. Added buttons to switch between maj.min versions and update channels.
[docs] Dropdown version menu on the sidebar shows version, grouped by maj.min
[docs] Updated footer. Fixed heart icon :)

Bugfixes

Fix werf helm render prints wrong data when printf-like format strings used in the helm templates text.

Werf CI and tests

[ci] Documentation validation workflow: tiny improvements
[ci] Refresh site deployment workflow: remove unused events

[tests] Fix python_encoding_repo/yarn_repo not a git repository
Remove _repo suffixed dir before test. This dir may exist if previous tests has been killed for some reason.
[tests] Fix ‘find: unrecognized: -xtype’ in stapel_image/git tests: use ubuntu base image instead of alpine
[tests] Enable docs suite for macOS
[tests] Enable resources adopter tests
[tests] Disable a few git suite tests for windows

Installation

Linux amd64

Darwin amd64

Windows amd64

4.02.2020, 11:03 +0300
3.02.2020, 21:46 +0300
23.01.2020, 19:22 +0300
22.01.2020, 20:04 +0300
14.01.2020, 09:35 +0300
10.01.2020, 20:29 +0300
27.12.2019, 19:23 +0300
26.12.2019, 15:56 +0300
20.12.2019, 15:04 +0300
12.12.2019, 15:25 +0300

Наименее стабильный канал обновлений

Версии этого канала обновлений могут содержать новые возможности, а также быть нестабильными, иметь ошибки. Мы не гарантируем обратную совместимость между версиями канала обновлений Alpha.

v1.0.13
28.02.2020, 17:57 +0300

Load more kubernetes client auth plugins

  • azure;
  • exec;
  • oidc;
  • openstack.

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.12
19.02.2020, 17:26 +0300

[1.0] Fixes related to the “Resource already exists” deploy error

  • fix “resource already exists” error on redeploy when new resource with an error has been added to the chart,
    refs https://github.com/flant/helm/pull/40
  • fix “resource already exists” error message when creating a helm.sh/hook that already exists,
    refs https://github.com/flant/helm/pull/41
  • do not allow resource adoption during initial release installation, fix error messages,
    refs https://github.com/flant/helm/pull/42

Installation

Linux amd64

Darwin amd64

Windows amd64

v1.0.11
17.02.2020, 14:45 +0300

Docs

[docs] Fixed broken links. Links autotest.
[docs] Releases page refactoring. Added buttons to switch between maj.min versions and update channels.
[docs] Dropdown version menu on the sidebar shows version, grouped by maj.min
[docs] Updated footer. Fixed heart icon :)

Bugfixes

Fix werf helm render prints wrong data when printf-like format strings used in the helm templates text.

Werf CI and tests

[ci] Documentation validation workflow: tiny improvements
[ci] Refresh site deployment workflow: remove unused events

[tests] Fix python_encoding_repo/yarn_repo not a git repository
Remove _repo suffixed dir before test. This dir may exist if previous tests has been killed for some reason.
[tests] Fix ‘find: unrecognized: -xtype’ in stapel_image/git tests: use ubuntu base image instead of alpine
[tests] Enable docs suite for macOS
[tests] Enable resources adopter tests
[tests] Disable a few git suite tests for windows

Installation

Linux amd64

Darwin amd64

Windows amd64

3.02.2020, 21:46 +0300
31.01.2020, 17:57 +0300
23.01.2020, 19:22 +0300
22.01.2020, 20:04 +0300
14.01.2020, 09:35 +0300
10.01.2020, 20:29 +0300
27.12.2019, 19:23 +0300
26.12.2019, 15:56 +0300
20.12.2019, 15:04 +0300
12.12.2019, 15:25 +0300