summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorAgorgianitis Loukas <agorg_louk@icloud.com>2021-12-16 22:05:46 +0200
committerGitHub <noreply@github.com>2021-12-16 21:05:46 +0100
commitf1ebca5e02bf1973d80f2aa98cc953e70a3269fe (patch)
tree03a190b8c4c18c37a475eaca4d1adf7178092979 /pkg
parentda58411eea9f98811f55cc10b92c150385e2d9ae (diff)
fix: Invalid image reference format when using digest strategy with helm charts (#317)
* fix: Invalid reference format when using digest strategy with helm charts Signed-off-by: Agorgianitis Loukas <agorglouk@gmail.com> * Rename image.GetFullTag() to image.GetTagWithDigest() for clarity * Add unit tests for image.GetTagWithDigest()
Diffstat (limited to 'pkg')
-rw-r--r--pkg/argocd/argocd.go2
-rw-r--r--pkg/image/image.go18
-rw-r--r--pkg/image/image_test.go10
3 files changed, 29 insertions, 1 deletions
diff --git a/pkg/argocd/argocd.go b/pkg/argocd/argocd.go
index 16fde53..4183c0c 100644
--- a/pkg/argocd/argocd.go
+++ b/pkg/argocd/argocd.go
@@ -376,7 +376,7 @@ func SetHelmImage(app *v1alpha1.Application, newImage *image.ContainerImage) err
mergeParams = append(mergeParams, p)
}
if hpImageTag != "" {
- p := v1alpha1.HelmParameter{Name: hpImageTag, Value: newImage.ImageTag.String(), ForceString: true}
+ p := v1alpha1.HelmParameter{Name: hpImageTag, Value: newImage.GetTagWithDigest(), ForceString: true}
mergeParams = append(mergeParams, p)
}
}
diff --git a/pkg/image/image.go b/pkg/image/image.go
index 4dcae8e..24c19f6 100644
--- a/pkg/image/image.go
+++ b/pkg/image/image.go
@@ -105,6 +105,24 @@ func (img *ContainerImage) GetFullNameWithTag() string {
return str
}
+// GetTagWithDigest returns tag name along with any tag digest set for the image
+func (img *ContainerImage) GetTagWithDigest() string {
+ str := ""
+ if img.ImageTag != nil {
+ if img.ImageTag.TagName != "" {
+ str += img.ImageTag.TagName
+ }
+ if img.ImageTag.TagDigest != "" {
+ if str == "" {
+ str += "latest"
+ }
+ str += "@"
+ str += img.ImageTag.TagDigest
+ }
+ }
+ return str
+}
+
func (img *ContainerImage) Original() string {
return img.original
}
diff --git a/pkg/image/image_test.go b/pkg/image/image_test.go
index 4ffc368..5d1abbd 100644
--- a/pkg/image/image_test.go
+++ b/pkg/image/image_test.go
@@ -72,10 +72,20 @@ func Test_ParseImageTags(t *testing.T) {
require.NotNil(t, image.ImageTag)
assert.Empty(t, image.ImageTag.TagName)
assert.Equal(t, "sha256:abcde", image.ImageTag.TagDigest)
+ assert.Equal(t, "latest@sha256:abcde", image.GetTagWithDigest())
assert.Equal(t, "gcr.io/jannfis/test-image@sha256:abcde", image.GetFullNameWithTag())
assert.Equal(t, "gcr.io/jannfis/test-image", image.GetFullNameWithoutTag())
})
+ t.Run("Parse valid image name with tag and digest", func(t *testing.T) {
+ image := NewFromIdentifier("gcr.io/jannfis/test-image:test-tag@sha256:abcde")
+ require.NotNil(t, image.ImageTag)
+ assert.Empty(t, image.ImageTag.TagName)
+ assert.Equal(t, "sha256:abcde", image.ImageTag.TagDigest)
+ assert.Equal(t, "latest@sha256:abcde", image.GetTagWithDigest())
+ assert.Equal(t, "gcr.io/jannfis/test-image:test-tag@sha256:abcde", image.GetFullNameWithTag())
+ })
+
t.Run("Parse valid image name with source name and registry info", func(t *testing.T) {
image := NewFromIdentifier("jannfis/orig-image=gcr.io/jannfis/test-image:0.1")
assert.Equal(t, "gcr.io", image.RegistryURL)