From 356a4f71916a2f468f41db42dd51241453820bf0 Mon Sep 17 00:00:00 2001 From: Michael Bridgen Date: Fri, 18 Nov 2016 17:57:09 +0000 Subject: [PATCH 1/2] Allow dots and underscores in (yamel) image tags --- platform/kubernetes/update.go | 2 +- platform/kubernetes/update_test.go | 65 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/platform/kubernetes/update.go b/platform/kubernetes/update.go index 603d85dc0..afc876511 100644 --- a/platform/kubernetes/update.go +++ b/platform/kubernetes/update.go @@ -84,7 +84,7 @@ func tryUpdate(def, newImageStr string, trace io.Writer, out io.Writer) error { imageRE := multilineRE( ` containers:.*`, `(?: .*\n)*(?: ){3,4}- name:\s*"?([\w-]+)"?(?:\s.*)?`, - `(?: ){4,5}image:\s*"?(`+newImage.Repository()+`:[\w-]+)"?(\s.*)?`, + `(?: ){4,5}image:\s*"?(`+newImage.Repository()+`:[._\w-]+)"?(\s.*)?`, ) matches = imageRE.FindStringSubmatch(def) diff --git a/platform/kubernetes/update_test.go b/platform/kubernetes/update_test.go index 767d42924..267ad7278 100644 --- a/platform/kubernetes/update_test.go +++ b/platform/kubernetes/update_test.go @@ -27,6 +27,7 @@ func TestUpdates(t *testing.T) { {"new version like number", case2, case2image, case2out}, {"old version like number", case2out, case2reverseImage, case2}, {"name label out of order", case3, case3image, case3out}, + {"version (tag) with dots", case4, case4image, case4out}, } { testUpdate(t, c[0], c[1], c[2], c[3]) } @@ -256,3 +257,67 @@ spec: args: - http://prometheus.monitoring.svc.cluster.local/admin/prometheus ` + +const case4 = `--- +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: front-end + namespace: sock-shop +spec: + replicas: 1 + template: + metadata: + labels: + name: front-end + spec: + containers: + - name: front-end + image: weaveworksdemos/front-end:v_0.2.0 + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 8079 + securityContext: + runAsNonRoot: true + runAsUser: 10001 + capabilities: + drop: + - all + readOnlyRootFilesystem: true +` + +const case4image = "weaveworksdemos/front-end:7f511af2d21fd601b86b3bed7baa6adfa9c8c669" + +const case4out = `--- +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: front-end + namespace: sock-shop +spec: + replicas: 1 + template: + metadata: + labels: + name: front-end + spec: + containers: + - name: front-end + image: weaveworksdemos/front-end:7f511af2d21fd601b86b3bed7baa6adfa9c8c669 + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 8079 + securityContext: + runAsNonRoot: true + runAsUser: 10001 + capabilities: + drop: + - all + readOnlyRootFilesystem: true +` From 98a7386f4cf1c6cad78c7fd51af3eef11f600871 Mon Sep 17 00:00:00 2001 From: Michael Bridgen Date: Mon, 21 Nov 2016 13:04:57 +0000 Subject: [PATCH 2/2] Use Docker's idea of what a tag is --- platform/kubernetes/update.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platform/kubernetes/update.go b/platform/kubernetes/update.go index afc876511..eccf766a8 100644 --- a/platform/kubernetes/update.go +++ b/platform/kubernetes/update.go @@ -84,8 +84,10 @@ func tryUpdate(def, newImageStr string, trace io.Writer, out io.Writer) error { imageRE := multilineRE( ` containers:.*`, `(?: .*\n)*(?: ){3,4}- name:\s*"?([\w-]+)"?(?:\s.*)?`, - `(?: ){4,5}image:\s*"?(`+newImage.Repository()+`:[._\w-]+)"?(\s.*)?`, + `(?: ){4,5}image:\s*"?(`+newImage.Repository()+`:[\w][\w.-]{0,127})"?(\s.*)?`, ) + // tag part of regexp from + // https://github.com/docker/distribution/blob/master/reference/regexp.go#L36 matches = imageRE.FindStringSubmatch(def) if matches == nil || len(matches) < 3 {