What werf/werf shipped
Written by FoxPlug from the repository's own releases; not affiliated with Werf. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/werf/werf; Werf did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Bundle publish and bundle apply now deploy exactly what converge deploys with the same flags, and publish packs the chart unchanged while storing values, secrets and set inputs in a werf data directory instead of merging them into values.yaml. Pull request #8142
- Bundle publish, apply, plan and render now hand registry work to Nelm: publish pushes with ChartUpload and the other commands download bundles with a digest-pinned, verifying DownloadChart that records the release name and namespace. Pull request #8144
- Bundle publish, apply, render, plan and copy now use Nelm for all registry and archive handling, werf's own bundle registry cache, archive format and ORAS v1 fork are removed, and bundle copy keeps all platforms of multi-platform images and writes standard OCI archives. Pull request #8143
- Werf v2 now refuses to render, plan or deploy a chart published by werf v3 with a werf data directory, instead of deploying it without its publish-time values, secrets and annotations. Pull request #8141
- Failed Dockerfile builds with the Buildah backend no longer leave their working container behind in the containers storage, so records stop piling up with every failed build. Pull request #8146
- The Buildah working container leak fix is backported to the 2 branch. Pull request #8148
- Weekly channels were promoted for cycle 20261103: 2/beta moved to 2.84.1, 2/ea to 2.84.0 and 2/rock-solid to 2.83.0, while 2/alpha and 2/stable stayed at 2.84.1 and 2.83.0. Pull request #8145
Why it matters
This week moves bundle registry work onto Nelm, so publish and apply follow the same deploy path as converge and keep publish-time inputs in a werf data directory rather than the chart's values.yaml. Werf v2 also now refuses charts that need v3 instead of deploying them without their publish-time data, and failed Buildah builds no longer accumulate leaked working containers.
Changelog entry
- Bundle publish and apply now deploy exactly like converge, with publish packing the chart unchanged and storing values in a werf data directory Pull request #8142
- Bundle publish, apply, plan and render now use Nelm for registry operations, with digest-pinned verified downloads Pull request #8144
- Bundle commands moved registry and archive handling to Nelm; werf bundle registry cache, archive format and ORAS v1 fork removed Pull request #8143
- Werf v2 now refuses charts published by werf v3 instead of deploying them without publish-time values, secrets and annotations Pull request #8141
- Fixed Buildah builds leaking working containers when a Dockerfile build fails midway Pull request #8146
- Backported the Buildah working container leak fix to the 2 branch Pull request #8148
- Promoted weekly channels for 20261103: beta to 2.84.1, ea to 2.84.0, rock-solid to 2.83.0 Pull request #8145
Bundle commands now use Nelm for registry and archive work, publish and apply deploy like converge, and werf v2 refuses charts published by v3 instead of deploying them without their publish-time values and secrets. Failed Buildah builds no longer leak working containers.
This week's werf changes centre on bundles and build reliability. Bundle publish, apply, plan, render and copy now use Nelm for registry and archive handling, and werf's own bundle registry cache, archive format and ORAS v1 fork are removed. Publish and apply deploy exactly what converge deploys with the same flags: the chart is packed unchanged and values, secret values and set inputs are stored in a werf data directory instead of being merged into values.yaml. Bundle copy keeps all platforms of multi-platform images and writes standard OCI archives. Werf v2 now refuses to render, plan or deploy a chart published by werf v3 with a werf data directory, rather than deploying it without its publish-time values, secrets and annotations. On the build side, failed Dockerfile builds with the Bui
Week of October 26, 2026
What shipped
- Released v3.12.1 on stable and rock-solid, fixing deploy to use saved plans that contain a blind apply. Release
- Released v3.12.2 on alpha and beta with Dockerfile fixes for RUN mounts using a base ENV and rebuilds when a RUN bind-mount source changes, plus a lockgate bump for lock timeouts. Release
- Fixed werf helm dependency update panicking without a Chart.lock when the chart has subcharts. Pull request #8121
- Changed values handling so --values and --set can override secret values, --set key=null can delete a secret value, and export-values and import-values respect CLI values. Pull request #8117
- Fixed werf helm uninstall and werf dismiss hanging while waiting for resources elimination after the resources were already gone. Pull request #8120
- Fixed Docker Hub authentication for build and export after werf cr login by storing credentials where the registry client finds them. Pull request #8119
- Fixed Docker Hub authentication for build and export after werf cr login by storing credentials where the registry client finds them. Pull request #8118
- Werf cleanup --keep-list now accepts custom tags added with --add-custom-tag and keeps the stage a listed custom tag points to. Pull request #8139
- Promoted weekly v2 release channels for cycle 20261027, moving 2/beta to 2.84.0, 2/stable to 2.83.0 and 2/rock-solid to 2.81.4. Pull request #8116
- Prepared release 2.84.1 with a fix preventing empty-body errors when retrying registry uploads. Pull request #8101
Why it matters
This week brought two patch releases, v3.12.1 and v3.12.2, that address deploy and Dockerfile build problems including blind-apply plans, RUN mount options using a base ENV and rebuilds on bind-mount source changes. Helm users get fixes for dependency update panics without Chart.lock and for uninstall or dismiss hangs on elimination, and values handling now lets command-line values override secret values. Registry login for Docker Hub in build and export was restored, and cleanup can now keep stages by custom tag.
Changelog entry
- Release v3.12.1: deploy uses saved plans that contain a blind apply Release
- Release v3.12.2: Dockerfile RUN mount options using a base ENV, rebuilds on RUN bind-mount source changes, lockgate bump Release
- Fix: stop helm dependency update panicking without Chart.lock Pull request #8121
- Fix: let --values and --set override secret values Pull request #8117
- Fix: stop uninstall and dismiss hanging on elimination Pull request #8120
- Fix: restore Docker Hub login for build and export Pull request #8119
- Fix: restore Docker Hub login for build and export Pull request #8118
- Feat: keep a stage via its custom tag in cleanup --keep-list Pull request #8139
- Chore: promote weekly channels for 20261027 Pull request #8116
- Chore: release 2.84.1 with a fix for empty-body errors when retrying registry uploads Pull request #8101
This week: v3.12.1 and v3.12.2 released. helm dependency update no longer panics without Chart.lock, values and set flags now override secret values, uninstall and dismiss no longer hang on elimination, Docker Hub login restored for build and export, cleanup keeps stages by custo
This week in werf: two patch releases, v3.12.1 (stable, rock-solid) and v3.12.2 (alpha, beta). Deploy uses saved plans containing a blind apply, and Dockerfile builds now work when a RUN mount option uses a base ENV and rebuild when a RUN bind-mount source changes. Helm users get fixes for dependency update panicking without Chart.lock and for uninstall or dismiss hanging on elimination. Values handling changed so --values and --set can override secret values, --set key=null can delete one, and export-values and import-values respect CLI values. Docker Hub login works again for build and export after werf cr login, and cleanup --keep-list accepts custom tags. Weekly channels were promoted.
Week of October 19, 2026
What shipped
- Released 3.12.0, which adds publishing of cached images with require-built-images. Release
- Werf build --require-built-images now publishes previously built images and custom tags without running build instructions, and --check-built-images remains the read-only check. Pull request #8095
- Werf build can now publish final images and custom tags to multiple repositories in one invocation, with a flag to promote already built images. Pull request #8087
- Released 3.12.1, fixing deploy to use saved plans that contain a blind apply. Release
- Saved plans containing a blind apply can now be used with converge and bundle apply instead of failing to unmarshal. Pull request #8102
- Full-Dockerfile builds now rebuild when a file used by a RUN bind-mount source changes, instead of reusing the cached image. Pull request #8080
- Builds no longer abort when a RUN mount option references an ENV supplied by the base image. Pull request #8115
- Lockgate was bumped to v0.2.1 so a file lock acquired exactly at the lock timeout no longer causes a deadlock crash. Pull request #8110
- Converge now applies --no-pod-logs when executing saved plans, including readiness tracking for dependencies. Pull request #8092
- Converge and bundle apply with --use-plan now respect --releases-history-max instead of growing release history. Pull request #8085
Why it matters
This week brought several build changes: publishing to multiple final repositories, publishing cached images with require-built-images, and fixes so Dockerfile builds rebuild when bind-mounted inputs change. Deploy also got fixes for saved plans, pod log flags and release history limits on saved-plan deploys. The 3.12.0 and 3.12.1 releases ship these fixes.
Changelog entry
- Release 3.12.0 with publishing of cached images via require-built-images. Release
- Build: publish built images to multiple final repositories. Pull request #8087
- Build: --require-built-images publishes already built images; --check-built-images stays read-only. Pull request #8095
- Release 3.12.1 with the deploy fix for saved plans. Release
- Deploy: saved plans containing a blind apply can be used again. Pull request #8102
- Build: rebuild when a RUN bind-mount source changes. Pull request #8080
- Build: build when a RUN mount option uses a base ENV. Pull request #8115
- Build: bump lockgate to v0.2.1 to avoid deadlock at lock timeout. Pull request #8110
- Deploy: respect --no-pod-logs with --use-plan. Pull request #8092
- Deploy: respect --releases-history-max with --use-plan. Pull request #8085
- Build: avoid panic on cache-repo errors without final-repo. Pull request #8089
- Build: prevent empty-body errors when retrying registry uploads. Pull request #8100
Werf 3.12.0 and 3.12.1 are out: build can publish to multiple final repositories and publish cached images with require-built-images. Also fixed: Dockerfile binds rebuild on change, saved plans with a blind apply work, and --no-pod-logs is honored when executing plans.
Werf 3.12.0 and 3.12.1 are released. Build now publishes final images and custom tags to multiple final repositories in one invocation, and --require-built-images can publish already built images without running build instructions. Full-Dockerfile builds now rebuild when a RUN bind-mount source changes, and builds no longer abort when a RUN mount option references an ENV from the base image. Deploy fixes: saved plans containing a blind apply can be used with converge and bundle apply, --no-pod-logs is honored when executing plans, and --releases-history-max is respected with --use-plan. A lockgate bump removes a deadlock at the lock timeout boundary.
Week of October 12, 2026
What shipped
- Werf v3.9.0 released, exposing git source provenance to build commands and fixing unsuffixed list environment variables and meta-repo handling with local image storage. Release
- Werf v2.82.0 released with git source provenance for build commands, separate metadata repository support in v2, and fixes for unsuffixed list environment variables. Release
- Build can now shallow-clone a missing submodule, fetching only the commit the superproject pins instead of the full history. Pull request #8070
- Werf v2 can store project metadata in a separate registry repository via --meta-repo or WERF_META_REPO, with commands to migrate existing metadata. Pull request #8057
- Stapel build instructions can read git source provenance through WERF_GIT_SOURCES, so projects can embed the resolved source commit without exporting.git. Pull request #8058
- Werf meta-repo migrate now reports progress, inspects and copies records concurrently, supports a timeout and coordinates simultaneous invocations. Pull request #8079
- Docker Stapel builds now recreate an unavailable cached import server and retry an interrupted import-only stage once from a clean destination. Pull request #8076
- Operations statistics now report git worktree preparation and early command initialization, with a new git entry under --build-report-operations. Pull request #8068
- Cache lookup now skips cached stages whose image manifest declares a config size of zero or less, avoiding repeated sha256 checksum errors. Pull request #8066
- Release storage in deploy is now Helm-compatible and owned by Werf, with streamed reads. Pull request #8061
Why it matters
This week brings two releases in parallel, v3.9.0 and v2.82.0, both exposing git source provenance to build commands and fixing unsuffixed list environment variables. Builds get faster and more reliable through shallow submodule clones, retried imports and skipping broken cache entries, while migration and reporting become more visible. Separate metadata repositories in v2 and changes to release storage give teams more control over where project data lives.
Changelog entry
- V3.9.0 released. Release
- V2.82.0 released. Release
- Build, stapel: expose git source provenance to build commands through WERF_GIT_SOURCES. Pull request #8058
- Build: fetch only the pinned commit of a submodule missing locally. Pull request #8070
- Build: support separate metadata repositories in v2. Pull request #8057
- Cleanup: speed up and report metadata migration progress. Pull request #8079
- Build, stapel: recover interrupted file imports. Pull request #8076
- Build: show git preparation in operations statistics. Pull request #8068
- Build: skip cached stages with invalid image config sizes. Pull request #8066
- Deploy: own Helm-compatible release storage with streamed reads. Pull request #8061
- Deploy: read release annotations from storage metadata. Pull request #8084
- Deploy: expose release labels in the v3 release get result. Pull request #8083
Two releases this week: v3.9.0 and v2.82.0, both exposing git source provenance to build commands and fixing unsuffixed list environment variables. Builds fetch only the pinned submodule commit, recover interrupted imports and skip broken cache stages.
This week werf shipped v3.9.0 and v2.82.0. Both expose git source provenance to build commands through WERF_GIT_SOURCES and accept unsuffixed list environment variables. Builds now shallow-clone only the pinned commit of a missing submodule, recover interrupted file imports in Stapel builds, report git preparation in operations statistics and skip cached stages with invalid image config sizes. Werf v2 also supports separate metadata repositories, and meta-repo migrate now reports progress with concurrent copying and a timeout.
Week of October 5, 2026
What shipped
- Builds now automatically include Git LFS object contents in Stapel Git mappings and Dockerfile build contexts, verifying downloaded content against the selected commit's pointers. Pull request #8042
- Werf host cleanup can now remove selected project temporary directories whose container-created files are owned by root. Pull request #8050
- Registry manifest uploads that end in EOF are reported as failures instead of successes, and registry diagnostic errors are retained when a stage lookup fails. Pull request #8047
- Werf v3.8.0 was released, adding automatic Git LFS content in images. Pull request #8048
- Werf v3.7.0 was released with back-end operation and cache outcome reporting in builds. Release
- Commands such as werf managed-images ls, werf cleanup and werf config render no longer fail with submodule not initialized after nested submodules were already checked out from local objects. Pull request #8037
- The SSH command configured for the target repository is preserved when werf initializes Git from another directory. Pull request #8021
- In dev mode werf no longer removes a user git worktree that git worktree list marks prunable when its directory is temporarily unreadable. Pull request #7999
- Kubectl plugins now run only through kubectl, so werf kubectl argo rollouts get rollout demo runs the plugin correctly and unrelated commands no longer execute plugins. Pull request #8030
- Werf no longer exits during startup when WERF_KUBE_CONTEXT or WERF_SKIP_TLS_VERIFY_REGISTRY=true is set and no kubectl plugins are installed. Pull request #8032
Why it matters
This week brought an automatic Git LFS change to builds and several fixes for cleanup, registry publication, submodules, git worktrees and kubectl handling. It also delivered minor releases across the 2 and 3 branches, so users on both lines get the fixes without waiting for a major upgrade.
Changelog entry
- Build: automatically include Git LFS content in Stapel Git mappings and Dockerfile build contexts, verifying downloaded contents against the selected commit's pointers. Pull request #8042
- Host-cleanup: remove selected project temporary directories whose container-created files are owned by root. Pull request #8050
- Build: report registry manifest upload failures that end in EOF and retain registry diagnostic errors on stage lookup failures. Pull request #8047
- Build: stop rejecting initialized nested submodules in commands such as werf managed-images ls, werf cleanup and werf config render. Pull request #8037
- Build: preserve repository-specific core.sshCommand and conditional Git includes when initializing Git from another directory. Pull request #8021
- Giterminism: in dev mode, preserve a user worktree whose directory is temporarily unreadable rather than removing its registration. Pull request #7999
- Deploy: run kubectl plugins only through kubectl and stop executing plugins while constructing the command tree. Pull request #8030
- Deploy: prevent startup failure when WERF_KUBE_CONTEXT or WERF_SKIP_TLS_VERIFY_REGISTRY=true is set and no kubectl plugins are installed. Pull request #8032
- Release: werf 3.8.0 adds automatic Git LFS content in images. Pull request #8048
- Release: werf 3.7.0 adds back-end operation and cache outcome reporting in builds. Release
- Host-cleanup: reclaim abandoned project-data directories from earlier werf releases, including names without versions. Pull request #8033
- Build: prevent intermittent Buildah initialization failures caused by concurrent native overlay probes replacing a directory during scanning. Pull request #8038
Git LFS content is now included automatically in images. Builds verify downloaded contents against the selected commit. Also shipped: host cleanup removes root-owned temporary data, registry upload failures are reported, and submodule, worktree and kubectl fixes landed. Minor rel
This week werf builds include Git LFS object contents automatically in Stapel Git mappings and Dockerfile build contexts, using the selected commit's pointers and verifying downloaded contents so host LFS checkout settings cannot leave pointer files in images. Host cleanup can now remove selected project temporary directories whose container-created files are owned by root, and registry manifest uploads that end in EOF are reported as failures instead of being treated as successful. Commands like werf managed-images ls, werf cleanup and werf config render no longer fail after nested submodules were checked out from local objects, dev mode no longer removes user worktrees that are temporarily unreadable, and kubectl-related startup and plugin handling were fixed. Minor releases shipped acro
Week of September 28, 2026
What shipped
- Werf build --check-built-images and --require-built-images flags now work correctly after being a no-op since v2.55.0, properly failing when a stage is missing from the repository instead of building and publishing it. Pull request #7996
- Docker backend now requires Docker 19.03+ and uses the Moby SDK embedded in Docker CLI for all operations instead of a compatibility adapter. Pull request #7973
- Concurrent builders now synchronize publication to prevent duplicate images for the same build inputs in werf v3. Pull request #7989
- Staged Dockerfile builds with COPY --from on Buildah no longer retain temporary source containers and pin their images. Pull request #7938
- Building multiple Dockerfile images sharing one git context no longer copies the context once per image when temp directories are on different filesystems. Pull request #7980
- Chart-only commands like werf plan, werf lint, and werf bundle publish no longer fail due to Docker daemon version or connectivity issues. Pull request #7988
- Git mapping ownership with Docker now honors owner and group settings even when another mapping populated the shared Git archive first. Pull request #7974
- Werf cleanup no longer deletes newly published final images during concurrent builds by capturing final-repository snapshot before discovering managed images. Pull request #7975
- Builds with remote Docker contexts or SSH hosts now correctly query images on the configured daemon instead of the local one. Pull request #7971
- Invalid.dockerignore patterns ending in backslash now return a descriptive error instead of panicking with syntax error. Pull request #7992
Why it matters
This week brings critical fixes to core build functionality that was broken or missing, from restoring the --check-built-images flag to preventing data loss during concurrent operations. Infrastructure reliability improves with better Docker compatibility handling, git connection reuse, and proper cleanup of temporary resources. Chart-only deployments now work without requiring Docker, expanding werf's usability in container-less CI environments.
Changelog entry
- Build: honor --check-built-images and --require-built-images flags Pull request #7996
- Build, docker: require Docker 19.03+ for Docker backend operations Pull request #7973
- Build: prevent duplicate images from concurrent builders Pull request #7989
- Build: release temporary containers after staged COPY Pull request #7938
- Build, dockerfile: stop copying the build context per image Pull request #7980
- Build, docker: keep chart-only commands independent of Docker Pull request #7988
- Build: honor git mapping ownership with Docker Pull request #7974
- Cleanup: preserve concurrently published final images Pull request #7975
- Build: respect remote Docker contexts and SSH hosts Pull request #7971
- Build: report invalid.dockerignore patterns without panicking Pull request #7992
- Build: report when ssh connection multiplexing cannot be enabled Pull request #7984
- Host-cleanup: purge every stapel container and volume werf owns Pull request #7978
Werf updates: fixed --check-built-images flag, concurrent build synchronization, Dockerfile COPY stability, and chart-only command independence from Docker. Multiple reliability improvements in cleanup, git handling, and registry operations.
This week's werf updates restore critical build features and improve reliability across the board. The --check-built-images flag now works after being a no-op for months. Concurrent builds properly synchronize to prevent duplicate images. Dockerfile staging, git mappings, and cleanup operations all received fixes that prevent data loss and resource leaks. Chart-only commands no longer require Docker, and remote Docker contexts are now properly supported.
Week of September 21, 2026
What shipped
- Werf v3.6.0 released with support for scanning several Kubernetes namespaces for used images during cleanup. Pull request #7914
- Werf v3.5.0 released with build report improvements, version tracking, and deploy resource rendering. Release
- Build preparation before workers start accelerated from 26 minutes 33 seconds to 4 minutes 58 seconds on large configurations by eliminating redundant git and checksum operations. Pull request #7928
- Content anchor resolution now runs concurrently in parallel builds instead of serially, reducing the pre-build phase from 327 seconds to seconds on configurations with thousands of anchors. Pull request #7931
- SSH connections for git requests are now reused instead of creating a new handshake for each request, reducing time spent on fixed overhead from roughly 1 second per call. Pull request #7930
- Registry tag listings are now cached and reused across stage lookups instead of fetching fresh listings for each cache miss. Pull request #7934
- Local submodule reuse now works for nested submodule names containing slashes, eliminating unnecessary re-clones during builds. Pull request #7932
- Empty and partial git stage dependencies are now honored correctly instead of being implicitly expanded to later stages. Pull request #7906
- Operations statistics now cover the entire command run including config render and giterminism initialization, with a single summary printed before exit. Pull request #7856
- V2-to-v3 migration guides published with workflow-based navigation, before/after examples, and concrete upgrade actions in English and Russian. Pull request #7899
Why it matters
Werf v3.6.0 launches with significant performance improvements for builds with many images or remote repositories. Build preparation times dropped dramatically through concurrent processing and connection reuse, while the new branch version scheme allows continued v2 maintenance alongside v3 development.
Changelog entry
- Cleanup: scan several kubernetes namespaces for used images Pull request #7914
- Build: reduce pre-worker-start phase from 26:33 to 4:58 by eliminating per-image git re-preparation and checksumming Pull request #7928
- Build: resolve content anchors concurrently in parallel builds Pull request #7931
- Build, git: reuse one ssh connection for git requests Pull request #7930
- Storage: reuse recent tags listings for stage lookups on cache misses Pull request #7934
- Git: keep local submodule reuse for nested submodule names Pull request #7932
- Build: honor empty and partial git stage dependencies Pull request #7906
- Build: collect operations statistics for the whole command run Pull request #7856
- Git: keep a healthy cached worktree on canceled builds Pull request #7935
- Build: ship missing networking helpers in official images Pull request #7925
Werf v3.6.0: Build prep now 5x faster on large configs through concurrent anchor resolution and SSH connection reuse. v2 maintenance continues on branch 2.
Werf v3.6.0 shipped with substantial performance gains: build preparation dropped from 26 minutes to under 5 minutes on large configurations by processing content anchors concurrently and reusing SSH connections for git requests. Registry tag listings are now cached across stage lookups. The project also transitions to separate v2 and v3 maintenance branches, enabling continued v2 support while advancing v3 with improved Kubernetes namespace scanning and documentation.
Week of September 14, 2026
What shipped
- Cleanup now preserves final images correctly when stages are published to both primary and final repositories. Pull request #7867
- GitLab registry cleanup uses the supported manifest-by-tag API instead of falling back to slower digest deletion. Pull request #7866
- Deploy renders included charts at the project root correctly when deploy.helmChartDir:. is configured. Pull request #7865
- ReleaseInstall now returns rendered resources from the deploy operation. Pull request #7869
- Build reports now include the werf version that produced them for easier tracking across CI runs. Pull request #7859
- Deploy prevents panics when release deletion fails. Pull request #7861
Why it matters
This week addresses cleanup correctness for dual-repository setups, improves registry performance for GitLab users, and fixes deploy rendering with included charts. Build reports are now more traceable with version information included.
Changelog entry
- Feat(deploy): return rendered resources from ReleaseInstall Pull request #7869
- Fix(deploy): render included charts at the project root Pull request #7865
- Fix(cleanup): preserve retained final images when stages are published to both repo and final-repo Pull request #7867
- Fix(cleanup): avoid slow tag deletion in GitLab registries by preferring manifest-by-tag API Pull request #7866
- Feat(build): include werf version in the build report Pull request #7859
- Fix(deploy): prevent panic when release deletion fails Pull request #7861
Werf now preserves final images correctly in cleanup, speeds up GitLab registry operations, and fixes chart rendering for includes. Build reports include version info for better traceability.
This week's werf updates focus on cleanup reliability and registry performance. Final images are now properly retained in dual-repository setups, GitLab cleanup operations are faster with the manifest-by-tag API, and Helm chart rendering works correctly with includes at the project root. Build reports now include version information for improved traceability across CI runs.