From a9d35cc598d6578d98adb3e843117858abcb20b3 Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Wed, 22 Jan 2020 15:36:02 +0900 Subject: [PATCH 1/7] fix: add braces to image tag match --- api/builtins/ImageTagTransformer.go | 7 +++++-- plugin/builtin/imagetagtransformer/ImageTagTransformer.go | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/api/builtins/ImageTagTransformer.go b/api/builtins/ImageTagTransformer.go index 0ce7bd797..627a45768 100644 --- a/api/builtins/ImageTagTransformer.go +++ b/api/builtins/ImageTagTransformer.go @@ -1,6 +1,8 @@ // Code generated by pluginator on ImageTagTransformer; DO NOT EDIT. // pluginator {unknown 1970-01-01T00:00:00Z } + + package builtins import ( @@ -22,6 +24,7 @@ type ImageTagTransformerPlugin struct { FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` } + func (p *ImageTagTransformerPlugin) Config( _ *resmap.PluginHelpers, c []byte) (err error) { p.ImageTag = types.Image{} @@ -145,7 +148,7 @@ func (p *ImageTagTransformerPlugin) findContainers(obj map[string]interface{}) e func isImageMatched(s, t string) bool { // Tag values are limited to [a-zA-Z0-9_.-]. - pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-]*)?$") + pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-{}]*)?$") return pattern.MatchString(s) } @@ -181,5 +184,5 @@ func split(imageName string) (name string, tag string) { } func NewImageTagTransformerPlugin() resmap.TransformerPlugin { - return &ImageTagTransformerPlugin{} + return &ImageTagTransformerPlugin{} } diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index 2b1b347b6..cbb0f3517 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -149,7 +149,7 @@ func (p *plugin) findContainers(obj map[string]interface{}) error { func isImageMatched(s, t string) bool { // Tag values are limited to [a-zA-Z0-9_.-]. - pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-]*)?$") + pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-{}]*)?$") return pattern.MatchString(s) } From bce9cb571043bab49459e3da6e3852b253bcdc70 Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Wed, 22 Jan 2020 15:36:58 +0900 Subject: [PATCH 2/7] fix: update regex comment --- plugin/builtin/imagetagtransformer/ImageTagTransformer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index cbb0f3517..0da708a2b 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -148,7 +148,7 @@ func (p *plugin) findContainers(obj map[string]interface{}) error { } func isImageMatched(s, t string) bool { - // Tag values are limited to [a-zA-Z0-9_.-]. + // Tag values are limited to [a-zA-Z0-9_.-{}]. pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-{}]*)?$") return pattern.MatchString(s) } From 866303a0d7040e67c0b1e6bf7a730c49ce006583 Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Wed, 22 Jan 2020 15:39:12 +0900 Subject: [PATCH 3/7] fix: update generated file --- api/builtins/ImageTagTransformer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/builtins/ImageTagTransformer.go b/api/builtins/ImageTagTransformer.go index 627a45768..a0d4f8f87 100644 --- a/api/builtins/ImageTagTransformer.go +++ b/api/builtins/ImageTagTransformer.go @@ -147,7 +147,7 @@ func (p *ImageTagTransformerPlugin) findContainers(obj map[string]interface{}) e } func isImageMatched(s, t string) bool { - // Tag values are limited to [a-zA-Z0-9_.-]. + // Tag values are limited to [a-zA-Z0-9_.-{}]. pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-{}]*)?$") return pattern.MatchString(s) } From 2a28b37b3c2cf59b4d13ddd6c7157d699b04da4b Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Wed, 22 Jan 2020 16:57:39 +0900 Subject: [PATCH 4/7] fix: place '-' as last character in regex class --- api/builtins/ImageTagTransformer.go | 9 +++------ .../builtin/imagetagtransformer/ImageTagTransformer.go | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/api/builtins/ImageTagTransformer.go b/api/builtins/ImageTagTransformer.go index a0d4f8f87..4754196c0 100644 --- a/api/builtins/ImageTagTransformer.go +++ b/api/builtins/ImageTagTransformer.go @@ -1,8 +1,6 @@ // Code generated by pluginator on ImageTagTransformer; DO NOT EDIT. // pluginator {unknown 1970-01-01T00:00:00Z } - - package builtins import ( @@ -24,7 +22,6 @@ type ImageTagTransformerPlugin struct { FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` } - func (p *ImageTagTransformerPlugin) Config( _ *resmap.PluginHelpers, c []byte) (err error) { p.ImageTag = types.Image{} @@ -147,8 +144,8 @@ func (p *ImageTagTransformerPlugin) findContainers(obj map[string]interface{}) e } func isImageMatched(s, t string) bool { - // Tag values are limited to [a-zA-Z0-9_.-{}]. - pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-{}]*)?$") + // Tag values are limited to [a-zA-Z0-9_.{}-]. + pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.{}-]*)?$") return pattern.MatchString(s) } @@ -184,5 +181,5 @@ func split(imageName string) (name string, tag string) { } func NewImageTagTransformerPlugin() resmap.TransformerPlugin { - return &ImageTagTransformerPlugin{} + return &ImageTagTransformerPlugin{} } diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index 0da708a2b..54c0c07c9 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -148,8 +148,8 @@ func (p *plugin) findContainers(obj map[string]interface{}) error { } func isImageMatched(s, t string) bool { - // Tag values are limited to [a-zA-Z0-9_.-{}]. - pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.-{}]*)?$") + // Tag values are limited to [a-zA-Z0-9_.{}-]. + pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.{}-]*)?$") return pattern.MatchString(s) } From 80633137a95c4d01e7bcf5b06b85e9e982a3403f Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Fri, 24 Jan 2020 15:10:22 +0900 Subject: [PATCH 5/7] fix: test tags with braces --- .../ImageTagTransformer_test.go | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer_test.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer_test.go index afdbd257b..abdb3a656 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer_test.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer_test.go @@ -388,3 +388,45 @@ spec: initContainers: null `) } + +func TestImageTagTransformerTagWithBraces(t *testing.T) { + th := kusttest_test.MakeEnhancedHarness(t). + PrepBuiltin("ImageTagTransformer") + defer th.Reset() + + rm := th.LoadAndRunTransformer(` +apiVersion: builtin +kind: ImageTagTransformer +metadata: + name: notImportantHere +imageTag: + name: some.registry.io/my-image + newTag: "my-fixed-tag" +`, ` +group: apps +apiVersion: v1 +kind: Deployment +metadata: + name: deploy1 +spec: + template: + spec: + containers: + - image: some.registry.io/my-image:{GENERATED_TAG} + name: my-image +`) + + th.AssertActualEqualsExpected(rm, ` +apiVersion: v1 +group: apps +kind: Deployment +metadata: + name: deploy1 +spec: + template: + spec: + containers: + - image: some.registry.io/my-image:my-fixed-tag + name: my-image +`) +} \ No newline at end of file From a7201a38e49ba886814947ac3edbb271c795ed60 Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Fri, 24 Jan 2020 16:58:10 +0900 Subject: [PATCH 6/7] build: use local repo for test --- plugin/builtin/imagetagtransformer/go.mod | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugin/builtin/imagetagtransformer/go.mod b/plugin/builtin/imagetagtransformer/go.mod index b93a54097..3c5a2f481 100644 --- a/plugin/builtin/imagetagtransformer/go.mod +++ b/plugin/builtin/imagetagtransformer/go.mod @@ -6,3 +6,5 @@ require ( sigs.k8s.io/kustomize/api v0.3.1 sigs.k8s.io/yaml v1.1.0 ) + +replace sigs.k8s.io/kustomize/api => ../../../api From 59ce165355050c4dc1c5ce762c4330ce34863e2d Mon Sep 17 00:00:00 2001 From: Rhomel Chinsio Date: Fri, 24 Jan 2020 17:46:58 +0900 Subject: [PATCH 7/7] docs: comment brace support purpose --- api/builtins/ImageTagTransformer.go | 2 ++ plugin/builtin/imagetagtransformer/ImageTagTransformer.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/api/builtins/ImageTagTransformer.go b/api/builtins/ImageTagTransformer.go index 4754196c0..f7b2f0112 100644 --- a/api/builtins/ImageTagTransformer.go +++ b/api/builtins/ImageTagTransformer.go @@ -145,6 +145,8 @@ func (p *ImageTagTransformerPlugin) findContainers(obj map[string]interface{}) e func isImageMatched(s, t string) bool { // Tag values are limited to [a-zA-Z0-9_.{}-]. + // Some tools like Bazel rules_k8s allow tag patterns with {} characters. + // More info: https://github.com/bazelbuild/rules_k8s/pull/423 pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.{}-]*)?$") return pattern.MatchString(s) } diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index 54c0c07c9..0ed721192 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -149,6 +149,8 @@ func (p *plugin) findContainers(obj map[string]interface{}) error { func isImageMatched(s, t string) bool { // Tag values are limited to [a-zA-Z0-9_.{}-]. + // Some tools like Bazel rules_k8s allow tag patterns with {} characters. + // More info: https://github.com/bazelbuild/rules_k8s/pull/423 pattern, _ := regexp.Compile("^" + t + "(@sha256)?(:[a-zA-Z0-9_.{}-]*)?$") return pattern.MatchString(s) }