Skip to content

Commit 704599c

Browse files
authored
filter out non-version tags in Helm update checker (#12612)
Resolves: #12423
1 parent 7731e36 commit 704599c

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

helm/lib/dependabot/helm/update_checker.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,14 @@ def fetch_oci_tags(chart_name, repo_url)
235235
oci_registry = repo_url.gsub("oci://", "")
236236

237237
release_tags = Helpers.fetch_oci_tags("#{oci_registry}/#{chart_name}").split("\n")
238+
# Filter out tags that are not valid versions (e.g., SHA256 hashes, .sig, .att, .metadata files)
239+
release_tags = release_tags.select do |tag|
240+
# Skip tags that start with "sha256-" or end with .sig, .att, or .metadata
241+
next false if tag.start_with?("sha256-") || tag.end_with?(".sig", ".att", ".metadata")
242+
243+
# Use Version.correct? to check if the tag is a valid version
244+
version_class.correct?(tag)
245+
end
238246
release_tags.map { |tag| tag.tr("_", "+") }
239247
end
240248

helm/spec/dependabot/helm/update_checker_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,28 @@
118118
Dependabot::Helm::Version.new("1.0.124446+3123f85bdf6d8309d3d601938564a996f5cad238")
119119
)
120120
end
121+
122+
context "when tags include non-version tags like SHA256 hashes and metadata files" do
123+
before do
124+
allow(Dependabot::Helm::Helpers).to receive(:fetch_oci_tags)
125+
.with("registry.sweet.security/helm/frontierchart")
126+
.and_return(
127+
"1.0.119807+c2277fddd003556d4982b86ef4e77fc84a41ed79\n" \
128+
"1.0.124446+3123f85bdf6d8309d3d601938564a996f5cad238\n" \
129+
"sha256-bbccb29e4f20037bc6c3319199138172c044d29c514431a11f0f2bfd9b694d6d\n" \
130+
"sha256-bbccb29e4f20037bc6c3319199138172c044d29c514431a11f0f2bfd9b694d6d.att\n" \
131+
"sha256-bbccb29e4f20037bc6c3319199138172c044d29c514431a11f0f2bfd9b694d6d.sig\n" \
132+
"sha256-bbccb29e4f20037bc6c3319199138172c044d29c514431a11f0f2bfd9b694d6d.metadata\n" \
133+
"1.1.0"
134+
)
135+
end
136+
137+
it "filters out non-version tags and returns the latest valid version" do
138+
expect(checker.latest_version).to eq(
139+
Dependabot::Helm::Version.new("1.1.0")
140+
)
141+
end
142+
end
121143
end
122144
end
123145

0 commit comments

Comments
 (0)