Fix sha issue fully
This commit is contained in:
parent
1f8782a8f9
commit
2ad1a94f4f
5
main.go
5
main.go
|
@ -24,7 +24,8 @@ var (
|
||||||
maxPages = 10
|
maxPages = 10
|
||||||
|
|
||||||
// Regexp used to extract tag information
|
// Regexp used to extract tag information
|
||||||
tagRegexp = regexp.MustCompile(`(.*):[vV]{0,1}([0-9.]+)(-([a-zA-Z0-9_-]*)){0,1}(@([:0-9a-z]+)){0,1}`)
|
// The general format is "(registry/namespace/image):v(version)-(description)@(sha)"
|
||||||
|
tagRegexp = regexp.MustCompile(`([a-zA-Z0-9-_/.]+):[vV]{0,1}([0-9.]+)(-([a-zA-Z0-9_-]*)){0,1}(@([:0-9a-z]+)){0,1}`)
|
||||||
// version of tag checker
|
// version of tag checker
|
||||||
version = "dev"
|
version = "dev"
|
||||||
)
|
)
|
||||||
|
@ -156,6 +157,7 @@ func listTags(current ImageTag) ([]ImageTag, error) {
|
||||||
for url != "" && pageCount <= maxPages {
|
for url != "" && pageCount <= maxPages {
|
||||||
err = getJSON(url, &response)
|
err = getJSON(url, &response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
slog.Error("[%s] Could not get JSON response from url %s: %v", current.ImageTag, url, err)
|
||||||
return results, err
|
return results, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,6 +178,7 @@ func getNewerTags(current ImageTag) ([]ImageTag, error) {
|
||||||
newerTags := []ImageTag{}
|
newerTags := []ImageTag{}
|
||||||
tags, err := listTags(current)
|
tags, err := listTags(current)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
slog.Error("[%s] Could not list tags: %v", current.ImageTag, err)
|
||||||
return newerTags, err
|
return newerTags, err
|
||||||
}
|
}
|
||||||
for _, tag := range tags {
|
for _, tag := range tags {
|
||||||
|
|
34
main_test.go
34
main_test.go
|
@ -21,6 +21,16 @@ func TestTagParsing(t *testing.T) {
|
||||||
ImageTag{},
|
ImageTag{},
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"user/image:v1",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "user/image:v1",
|
||||||
|
Image: "user/image",
|
||||||
|
Version: "1",
|
||||||
|
VersionParts: []int{1},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"image:v1",
|
"image:v1",
|
||||||
ImageTag{
|
ImageTag{
|
||||||
|
@ -63,28 +73,40 @@ func TestTagParsing(t *testing.T) {
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"image:v1.0.0-desc@sha256:abc",
|
"image:v1.0.0-desc@sha256:123abc",
|
||||||
ImageTag{
|
ImageTag{
|
||||||
ImageTag: "image:v1.0.0-desc@sha256:abc",
|
ImageTag: "image:v1.0.0-desc@sha256:123abc",
|
||||||
Image: "library/image",
|
Image: "library/image",
|
||||||
TagDesc: "desc",
|
TagDesc: "desc",
|
||||||
TagSha: "sha256:abc",
|
TagSha: "sha256:123abc",
|
||||||
Version: "1.0.0",
|
Version: "1.0.0",
|
||||||
VersionParts: []int{1, 0, 0},
|
VersionParts: []int{1, 0, 0},
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"image:v1.0.0@sha256:abc",
|
"image:v1.0.0@sha256:123abc",
|
||||||
ImageTag{
|
ImageTag{
|
||||||
ImageTag: "image:v1.0.0@sha256:abc",
|
ImageTag: "image:v1.0.0@sha256:123abc",
|
||||||
Image: "library/image",
|
Image: "library/image",
|
||||||
TagSha: "sha256:abc",
|
TagSha: "sha256:123abc",
|
||||||
Version: "1.0.0",
|
Version: "1.0.0",
|
||||||
VersionParts: []int{1, 0, 0},
|
VersionParts: []int{1, 0, 0},
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
|
// Real world example that had caused issues
|
||||||
|
{
|
||||||
|
"matrixdotorg/synapse:v1.41.0@sha256:75f2b3c35c047693f4f4334d4ceb97951de1ba12bd3c6182c8a2ee624d7c5ab7",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "matrixdotorg/synapse:v1.41.0@sha256:75f2b3c35c047693f4f4334d4ceb97951de1ba12bd3c6182c8a2ee624d7c5ab7",
|
||||||
|
Image: "matrixdotorg/synapse",
|
||||||
|
TagSha: "sha256:75f2b3c35c047693f4f4334d4ceb97951de1ba12bd3c6182c8a2ee624d7c5ab7",
|
||||||
|
Version: "1.41.0",
|
||||||
|
VersionParts: []int{1, 41, 0},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
|
|
Loading…
Reference in New Issue