diff --git a/pkg/deploy/helm/extra_annotations_and_labels_post_renderer.go b/pkg/deploy/helm/extra_annotations_and_labels_post_renderer.go index 6de4249585..61e5f8f9a9 100644 --- a/pkg/deploy/helm/extra_annotations_and_labels_post_renderer.go +++ b/pkg/deploy/helm/extra_annotations_and_labels_post_renderer.go @@ -227,6 +227,11 @@ func appendExtraData(node *yaml_v3.Node, key string, data interface{}) error { } else { appendToNode(targetNode, data) } + + if targetNode.Kind != yaml_v3.AliasNode && targetNode.Kind != yaml_v3.MappingNode { + targetNode.Kind = yaml_v3.MappingNode + } + targetNode.Tag = "!!map" } else { appendToNode(node, map[string]interface{}{key: data}) } diff --git a/pkg/deploy/helm/extra_annotations_and_labels_post_renderer_test.go b/pkg/deploy/helm/extra_annotations_and_labels_post_renderer_test.go index 56028b87b4..7c2dd6ef5f 100644 --- a/pkg/deploy/helm/extra_annotations_and_labels_post_renderer_test.go +++ b/pkg/deploy/helm/extra_annotations_and_labels_post_renderer_test.go @@ -232,6 +232,34 @@ spec: `, werf.Version, werf.Version), }), + Entry("should add builtin and extra annotations and labels into resources manifest with empty annotations and labels", + ExtraAnnotationsAndLabelsPostRendererTestData{ + PostRenderer: NewExtraAnnotationsAndLabelsPostRenderer( + map[string]string{"test-annotation-1": "value-1", "test-annotation-2": "value-2"}, + map[string]string{"test-label-1": "value-1", "test-label-2": "value-2"}, + false, + ), + Manifest: `apiVersion: v1 +kind: ConfigMap +metadata: + labels: + annotations: + name: test +`, + ExpectedManifest: fmt.Sprintf(`apiVersion: v1 +kind: ConfigMap +metadata: + labels: + test-label-1: value-1 + test-label-2: value-2 + annotations: + test-annotation-1: value-1 + test-annotation-2: value-2 + werf.io/version: %s + name: test +`, werf.Version), + }), + Entry("should add extra annotations into yaml alias node defined by yaml anchor", ExtraAnnotationsAndLabelsPostRendererTestData{ PostRenderer: NewExtraAnnotationsAndLabelsPostRenderer(