Skip to content

feat: new major 2.0 release - #576

Open
ilya-lesikov wants to merge 89 commits into
mainfrom
2
Open

feat: new major 2.0 release#576
ilya-lesikov wants to merge 89 commits into
mainfrom
2

Conversation

@ilya-lesikov

Copy link
Copy Markdown
Member

No description provided.

@ilya-lesikov
ilya-lesikov force-pushed the 2 branch 2 times, most recently from a1c5169 to 09883a0 Compare March 27, 2026 21:12
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Comment thread Taskfile.dist.yaml Outdated
Comment thread Taskfile.dist.yaml Outdated
Comment thread pkg/action/chart_init.go Outdated
Comment thread pkg/action/secret_key_rotate.go Outdated
Comment thread pkg/plan/planned_changes.go Outdated
@dmmordvi
dmmordvi force-pushed the 2 branch 3 times, most recently from 6b65692 to b2bc126 Compare April 7, 2026 08:28
dmmordvi and others added 6 commits April 7, 2026 11:36
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
…werf.io`

Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
…1.10.2 (#591)

Move cobra fork from andremueller/cobra to werf/3p-cobra with
EnableErrorOnUnknownSubcommand patches cherry-picked onto cobra v1.10.2.
Also bumps pflag v1.0.5 -> v1.0.9.

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Comment thread pkg/action/release_history.go Outdated
Comment thread pkg/action/release_history.go Outdated
Comment thread pkg/action/release_history.go Outdated
Comment thread pkg/action/release_history.go Outdated
Comment thread pkg/action/release_history.go Outdated
Comment thread pkg/action/release_history.go Outdated
Comment thread pkg/action/release_history.go
Comment thread pkg/action/release_history.go Outdated
dmmordvi and others added 2 commits April 7, 2026 23:14
…e table date format

Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>

# Conflicts:
#	cmd/nelm/chart_pack.go
#	go.mod
#	go.sum
#	pkg/action/chart_render.go
#	pkg/chart/chart_render.go
#	pkg/common/common.go
#	pkg/helm/pkg/action/package.go
#	pkg/helm/pkg/chart/loader/load.go
#	pkg/helm/pkg/chart/v2/chart.go
#	pkg/helm/pkg/cmd/package.go
#	pkg/helm/pkg/werf/helmopts/helmoptions.go
#	pkg/ts/bundle.go
#	pkg/ts/bundle_ai_test.go
#	pkg/ts/files.go
#	pkg/ts/render.go
#	pkg/ts/render_ai_test.go
#	pkg/ts/render_test.go
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
dmmordvi and others added 30 commits August 4, 2026 11:16
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
- key deno:embed fingerprint per platform via label, otherwise a warm
  workspace regenerates only one platform after a denoVersion bump and
  ships stale deno blobs for the rest
- join user tags with embeddeno by comma: space-joined -tags rejects
  commas in go build
- validate embedded deno checksum as normalized hex in the public
  ExtractEmbeddedDeno (it is used as a cache path component), drop the
  now-redundant TrimSpace at the call site
- gitignore deno.sha256.tmp left behind by a killed generator
- skip the download-cache fallthrough subtest under -tags embeddeno
  where the embedded blob legitimately wins

Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Both integrity checks of the deno binary were circular. The download path
fetched the expected sha256 from the same host, over the same connection,
moments before the archive it was supposed to vouch for, so it could only
catch a broken transfer. The embedded path was worse: embed-deno hashed
whatever it had just downloaded, wrote that digest next to the blob, and
the runtime verified the blob against it, proving only that gzip round
tripped.

Move the trust anchor into the repository. pkg/ts/denolock records the
pinned version and, per platform, the sha256 of the release archive and of
the binary inside it; it is committed and embedded, so what a binary
verifies against went through code review and is in git history. The
download path checks the archive and the unpacked binary against it, and
embed-deno no longer records a digest of its own.

The lock is generated by scripts/denolock, which cross-checks each digest
against the .sha256sum upstream publishes - the one thing that file can
still tell us - and offers -verify (offline, wired into lint) and
-check-upstream, which reports a release asset replaced under an existing
tag. The lock is now the only place the deno version is configured.

wormatter is no longer applied to pkg/ts/embed_*.go: it drops the
//go:embed directive of a single var declaration, which compiles fine and
silently produces a binary with an empty embedded deno.

Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
cmd/ now holds only what ships. embed-deno is build tooling like schemagen
and denolock, and it is invoked as "go run <module>/scripts/embed-deno",
which werf has to follow.

TypeScriptOptions.EmbeddedDenoSHA256 is gone. An embedder can only hand
over the release pkg/ts/denolock pins - it downloads it through nelm's own
embed-deno - so nelm looks the digest up itself instead of trusting one
passed alongside the bytes. That closes the last path where a digest came
from outside the repository, and drops a field embedders had to fill
correctly for the check to mean anything.

ExtractEmbeddedDeno is unexported for the same reason: with the digest no
longer supplied by the caller, nothing outside pkg/ts has a use for it.

Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Dmitry Mordvinov <dmitry.mordvinov@flant.com>
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
…ompat

Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Ilya Drey <ilya.drey@flant.com>
Integrate origin/main (1.28.0 line) into the 2.0 branch, resolving 11
conflicts per the established taxonomy: take 2's side for AGENTS.md,
lookup_ai_test.go and util/manifest.go; keep the legacy uninstall action
deleted; hand-port main's asymmetric commits onto 2's refactored
structure.

Ports: 6707d35 release-get optimization onto 2's Accessor-based
ReleaseStorager (new GetRelease, metadata client on the secret/configmap
drivers); 4c9dd90 deploy-dependency readiness retargeted from
multitrack/InternalDependency to statestore/Dependency, with release
namespace normalisation threaded into dependencyMatcher on the deploy
paths only; da9a86a LegacyNoReleaseLock in release_install plus a new
test; 6092c11 AdoptDeckhouseControllerFields kept as a feature gate.
Also fixes three duplicate-definition mis-merges (engine.go
SetClientProvider, chart_render.go --lookup-resources flag) and
regenerates docs/reference.md.

Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
`forceReadinessTrackingForReadyDependencyTargets` iterated every ready
dependency and matched it against local resource infos. External
dependencies are tracked by their own operation keyed on the dependency
itself (`resolveTrackReadinessOpInStage` never consults local infos for
them), so forcing a same-named local resource served no edge while
silently overriding that resource's chart-authored fail mode with
`FailWholeDeployProcessImmediately`. Upstream had no `External` notion
when this function was written, so the port inherited the gap.

Also extract the triplicated release-lock construction guard into
`newReleaseLockManager` so install/rollback/uninstall share one seam that
tests can exercise, and rename `CompareInternalDependencyOption` to match
the `Dependency` type it actually sorts.

Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Custom resources whose readiness lives in status.conditions were never
tracked by the heuristic, because kubedog built its universal condition
rules from lowercase type names while real resources use CamelCase. Fixing
that makes previously instantly-ready resources start blocking, so it is
opt-in: NELM_FEAT_CASE_INSENSITIVE_CONDITION_TRACKING=true forwards the
option to the readiness tracker, and the gate defaults to off.

The CloudNativePG Cluster fix that prompted this is deliberately not behind
the gate — it is an exact rule in kubedog and applies unconditionally.

Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Protect shared action configuration updates because concurrent Helm command initialization races on its client and storage fields.

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Remove the case-insensitive-condition-tracking feature gate so that matching
custom resource status condition types case-insensitively is unconditional and
cannot be disabled. The gate declaration, its gate-only tests and the readiness
tracker option it fed are gone; the CLI help, generated reference docs and the
unsupported environment variable warning all derive from the gate registry, so
they follow automatically and NELM_FEAT_CASE_INSENSITIVE_CONDITION_TRACKING is
now reported as unsupported.

A custom resource carrying a CamelCase Ready/Available condition previously
matched no rule and was reported ready immediately; it now blocks until that
condition is True, so deployments that appeared to succeed may start timing out.

Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants