Skip to content

Commit 7d507ec

Browse files
committed
Revert "Refactor branch naming strategy for docker dependencies with digests."
1 parent 6968b39 commit 7d507ec

File tree

4 files changed

+41
-124
lines changed

4 files changed

+41
-124
lines changed

common/lib/dependabot/pull_request_creator/branch_namer/solo_strategy.rb

Lines changed: 5 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -142,27 +142,16 @@ def new_version(dependency)
142142
return new_ref(dependency) if ref_changed?(dependency) && new_ref(dependency)
143143

144144
T.must(dependency.version)[0..6]
145-
elsif dependency.version != dependency.previous_version && package_manager == "docker"
146-
handle_docker_version_change(dependency)
145+
elsif dependency.version == dependency.previous_version &&
146+
package_manager == "docker"
147+
dependency.requirements
148+
.filter_map { |r| r.dig(:source, "digest") || r.dig(:source, :digest) }
149+
.first.split(":").last[0..6]
147150
else
148151
dependency.version
149152
end
150153
end
151154

152-
sig { params(dependency: Dependabot::Dependency).returns(T.nilable(String)) }
153-
def handle_docker_version_change(dependency)
154-
current_tag, current_digest = extract_tag_and_digest(dependency.requirements)
155-
previous_tag, previous_digest = extract_tag_and_digest(dependency.previous_requirements)
156-
157-
if current_tag == previous_tag && current_digest != previous_digest
158-
format_digest_branch_name(current_tag, current_digest)
159-
elsif current_tag != previous_tag
160-
current_tag
161-
else
162-
format_digest_branch_name(current_tag, current_digest)
163-
end
164-
end
165-
166155
sig { params(dependency: Dependabot::Dependency).returns(T.nilable(String)) }
167156
def previous_ref(dependency)
168157
previous_refs = T.must(dependency.previous_requirements).filter_map do |r|
@@ -232,30 +221,6 @@ def dependency_digest
232221
T.nilable(String)
233222
)
234223
end
235-
236-
sig do
237-
params(requirements: T.nilable(T::Array[T::Hash[Symbol, T.untyped]]))
238-
.returns([T.nilable(String), T.nilable(String)])
239-
end
240-
def extract_tag_and_digest(requirements)
241-
return [nil, nil] unless requirements
242-
243-
tag = requirements.filter_map { |r| r.dig(:source, "tag") || r.dig(:source, :tag) }.first
244-
digest = requirements.filter_map { |r| r.dig(:source, "digest") || r.dig(:source, :digest) }.first
245-
[tag, digest]
246-
end
247-
248-
sig { params(tag: T.nilable(String), digest: T.nilable(String)).returns(T.nilable(String)) }
249-
def format_digest_branch_name(tag, digest)
250-
return tag if digest.nil?
251-
252-
digest_parts = digest.split(":")
253-
if tag && !tag.empty?
254-
"#{tag}-#{digest_parts.first}-#{digest_parts.last&.slice(0, 6)}"
255-
else
256-
"#{digest_parts.first}-#{digest_parts.last&.slice(0, 6)}"
257-
end
258-
end
259224
end
260225
end
261226
end

common/spec/dependabot/pull_request_creator/branch_namer/solo_strategy_spec.rb

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -487,68 +487,44 @@
487487
end
488488

489489
context "with a Docker digest update" do
490-
let(:source) do
491-
{
492-
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005"
493-
}
494-
end
495-
let(:previous_source) do
496-
{
497-
digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
498-
}
499-
end
500490
let(:dependency) do
501491
Dependabot::Dependency.new(
502492
name: "ubuntu",
503-
version: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005",
493+
version: "17.10",
504494
previous_version: previous_version,
505495
package_manager: "docker",
506496
requirements: [{
507497
file: "Dockerfile",
508498
requirement: nil,
509499
groups: [],
510-
source: source
500+
source: {
501+
type: "digest",
502+
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
503+
"fc38288cf73aa07485005"
504+
}
511505
}],
512506
previous_requirements: [{
513507
file: "Dockerfile",
514508
requirement: nil,
515509
groups: [],
516-
source: previous_source
510+
source: {
511+
type: "digest",
512+
digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
513+
"aaaaaaaaaaaaaaaaaaaaa"
514+
}
517515
}]
518516
)
519517
end
520-
let(:previous_version) { "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
521-
522-
it "truncates the version to just the digest when no tag is present" do
523-
expect(new_branch_name).to eq("dependabot/docker/ubuntu-sha256-183054")
524-
end
518+
let(:previous_version) { "17.10" }
525519

526-
context "when there is a tag present with only a digest change" do
527-
let(:version) { "17.10@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
528-
let(:previous_version) { "17.10@sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
529-
let(:source) do
530-
{ tag: "17.10", digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
531-
end
532-
let(:previous_source) do
533-
{ tag: "17.10", digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
534-
end
535-
536-
it "includes the tag and digest" do
537-
expect(new_branch_name).to eq("dependabot/docker/ubuntu-17.10-sha256-183054")
538-
end
520+
it "truncates the version" do
521+
expect(new_branch_name).to eq("dependabot/docker/ubuntu-1830542")
539522
end
540523

541-
context "when there is a tag and digest change" do
542-
let(:version) { "17.10@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
543-
let(:previous_version) { "17.10@sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
544-
let(:source) do
545-
{ tag: "17.10", digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
546-
end
547-
let(:previous_source) do
548-
{ tag: "17.04", digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
549-
end
524+
context "when there is a tag change" do
525+
let(:previous_version) { "17.04" }
550526

551-
it "includes the tag without the digest" do
527+
it "includes the tag rather than the SHA" do
552528
expect(new_branch_name).to eq("dependabot/docker/ubuntu-17.10")
553529
end
554530
end

common/spec/dependabot/pull_request_creator/branch_namer_spec.rb

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -487,68 +487,44 @@
487487
end
488488

489489
context "with a Docker digest update" do
490-
let(:source) do
491-
{
492-
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005"
493-
}
494-
end
495-
let(:previous_source) do
496-
{
497-
digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
498-
}
499-
end
500490
let(:dependency) do
501491
Dependabot::Dependency.new(
502492
name: "ubuntu",
503-
version: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005",
493+
version: "17.10",
504494
previous_version: previous_version,
505495
package_manager: "docker",
506496
requirements: [{
507497
file: "Dockerfile",
508498
requirement: nil,
509499
groups: [],
510-
source: source
500+
source: {
501+
type: "digest",
502+
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
503+
"fc38288cf73aa07485005"
504+
}
511505
}],
512506
previous_requirements: [{
513507
file: "Dockerfile",
514508
requirement: nil,
515509
groups: [],
516-
source: previous_source
510+
source: {
511+
type: "digest",
512+
digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
513+
"aaaaaaaaaaaaaaaaaaaaa"
514+
}
517515
}]
518516
)
519517
end
520-
let(:previous_version) { "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
521-
522-
it "truncates the version to just the digest when no tag is present" do
523-
expect(new_branch_name).to eq("dependabot/docker/ubuntu-sha256-183054")
524-
end
518+
let(:previous_version) { "17.10" }
525519

526-
context "when there is a tag present with only a digest change" do
527-
let(:version) { "17.10@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
528-
let(:previous_version) { "17.10@sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
529-
let(:source) do
530-
{ tag: "17.10", digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
531-
end
532-
let(:previous_source) do
533-
{ tag: "17.10", digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
534-
end
535-
536-
it "includes the tag and digest" do
537-
expect(new_branch_name).to eq("dependabot/docker/ubuntu-17.10-sha256-183054")
538-
end
520+
it "truncates the version" do
521+
expect(new_branch_name).to eq("dependabot/docker/ubuntu-1830542")
539522
end
540523

541-
context "when there is a tag and digest change" do
542-
let(:version) { "17.10@sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
543-
let(:previous_version) { "17.10@sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
544-
let(:source) do
545-
{ tag: "17.10", digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
546-
end
547-
let(:previous_source) do
548-
{ tag: "17.04", digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
549-
end
524+
context "when there is a tag change" do
525+
let(:previous_version) { "17.04" }
550526

551-
it "includes the tag without the digest" do
527+
it "includes the tag rather than the SHA" do
552528
expect(new_branch_name).to eq("dependabot/docker/ubuntu-17.10")
553529
end
554530
end

docker/spec/dependabot/docker/update_checker_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,9 @@ def stub_tag_with_no_digest(tag)
261261
it { is_expected.to eq("artful") }
262262

263263
context "when the version starts with a number" do
264-
let(:version) { "309403913c7f0848e6616446edec909b55d53571" }
264+
let(:version) { "sha256:309403913c7f0848e6616446edec909b55d53571" }
265265

266-
it { is_expected.to eq("309403913c7f0848e6616446edec909b55d53571") }
266+
it { is_expected.to eq("sha256:309403913c7f0848e6616446edec909b55d53571") }
267267
end
268268
end
269269

0 commit comments

Comments
 (0)