diff options
| author | Agorgianitis Loukas <agorg_louk@icloud.com> | 2021-12-16 22:05:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-16 21:05:46 +0100 |
| commit | f1ebca5e02bf1973d80f2aa98cc953e70a3269fe (patch) | |
| tree | 03a190b8c4c18c37a475eaca4d1adf7178092979 /pkg | |
| parent | da58411eea9f98811f55cc10b92c150385e2d9ae (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.go | 2 | ||||
| -rw-r--r-- | pkg/image/image.go | 18 | ||||
| -rw-r--r-- | pkg/image/image_test.go | 10 |
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) |
