We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Describe the bug
Breaking change after new engine (4.35.2 vs 4.40.3). Same eval, different results: new unexpected null values and key merging.
Version of yq: 4.40.3 Operating system: linux Installed via: docker and binary
Input Yaml
helmfile.yaml.gotmpl:
repositories: - name: repo-1 url: https://repo-1.github.io/helm-charts - name: repo-2 url: https://repo-2.github.io/helm-charts templates: default-release: &default-release namespace: k8s_namespace environments: default: values: - kubeContext: MY_CLUSTER releases: chart-1: version: v1 <<: *default-release chart-2: version: v2 <<: *default-release --- templates: default: &default kubeContext: '{{ .Values.kubeContext }}' version: '{{`{{ .Values | get "releases" | get .Release.Name | get "version" }}`}}' namespace: '{{`{{ .Values | get "releases" | get .Release.Name | get "namespace" }}`}}' releases: - chart: repo-1/chart-1 name: chart-1 <<: *default - chart: repo-2/chart-2 name: chart-2 <<: *default
Command The command you ran:
yq eval '.environments[].values[].releases[] | {"name": key, "env": (parent | parent | parent | parent | key), "kubeContext": (parent | parent | .kubeContext), "namespace": .namespace} | [.]' -o json helmfile.yaml.gotmpl
Actual behavior
[ { "name": "chart-1", "env": null, "default": null, "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] [ { "name": "chart-2", "env": null, "default": null, "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] []
Expected behavior
[ { "name": "chart-1", "env": "default", "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] [ { "name": "chart-2", "env": "default", "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] []
Additional context How to reproduce:
yq_breaking_change.sh:
#! /bin/bash set -e echo -e '>>> sample yaml file' FILE=helmfile.yaml.gotmpl cat << 'EOF' | tee $FILE repositories: - name: repo-1 url: https://repo-1.github.io/helm-charts - name: repo-2 url: https://repo-2.github.io/helm-charts templates: default-release: &default-release namespace: k8s_namespace environments: default: values: - kubeContext: MY_CLUSTER releases: chart-1: version: v1 <<: *default-release chart-2: version: v2 <<: *default-release --- templates: default: &default kubeContext: '{{ .Values.kubeContext }}' version: '{{`{{ .Values | get "releases" | get .Release.Name | get "version" }}`}}' namespace: '{{`{{ .Values | get "releases" | get .Release.Name | get "namespace" }}`}}' releases: - chart: repo-1/chart-1 name: chart-1 <<: *default - chart: repo-2/chart-2 name: chart-2 <<: *default EOF YQ_ARGS=$( cat <<EOF eval '.environments[].values[].releases[] | {"name": key, "env": (parent | parent | parent | parent | key), "kubeContext": (parent | parent | .kubeContext), "namespace": .namespace} | [.]' -o json $FILE EOF ) echo -e '\n>>> yq args' echo $YQ_ARGS DOCKER_CMD="docker run --rm -v "${PWD}":/workdir/" echo -e '\n>>> old output 4.35.2' bash -c "$DOCKER_CMD mikefarah/yq:4.35.2 $YQ_ARGS" echo -e '\n>>> new output 4.40.3' bash -c "$DOCKER_CMD mikefarah/yq:4.40.3 $YQ_ARGS"
Output:
$ ./yq_breaking_change.sh >>> sample yaml file repositories: - name: repo-1 url: https://repo-1.github.io/helm-charts - name: repo-2 url: https://repo-2.github.io/helm-charts templates: default-release: &default-release namespace: k8s_namespace environments: default: values: - kubeContext: MY_CLUSTER releases: chart-1: version: v1 <<: *default-release chart-2: version: v2 <<: *default-release --- templates: default: &default kubeContext: '{{ .Values.kubeContext }}' version: '{{`{{ .Values | get "releases" | get .Release.Name | get "version" }}`}}' namespace: '{{`{{ .Values | get "releases" | get .Release.Name | get "namespace" }}`}}' releases: - chart: repo-1/chart-1 name: chart-1 <<: *default - chart: repo-2/chart-2 name: chart-2 <<: *default >>> yq args eval '.environments[].values[].releases[] | {"name": key, "env": (parent | parent | parent | parent | key), "kubeContext": (parent | parent | .kubeContext), "namespace": .namespace} | [.]' -o json helmfile.yaml.gotmpl >>> old output 4.35.2 [ { "name": "chart-1", "env": "default", "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] [ { "name": "chart-2", "env": "default", "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] [] >>> new output 4.40.3 [ { "name": "chart-1", "env": null, "default": null, "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] [ { "name": "chart-2", "env": null, "default": null, "kubeContext": "MY_CLUSTER", "namespace": "k8s_namespace" } ] []
The text was updated successfully, but these errors were encountered:
Thanks for raising - looking into this, it's is actually caused by the same issue as #1886. Will fix in the next release shortly.
Sorry, something went wrong.
Fixed in 4.40.4
No branches or pull requests
Describe the bug
Breaking change after new engine (4.35.2 vs 4.40.3).
Same eval, different results: new unexpected null values and key merging.
Version of yq: 4.40.3
Operating system: linux
Installed via: docker and binary
Input Yaml
helmfile.yaml.gotmpl:
Command
The command you ran:
Actual behavior
Expected behavior
Additional context
How to reproduce:
yq_breaking_change.sh:
Output:
The text was updated successfully, but these errors were encountered: