Skip to content

Commit

Permalink
When updating digests only, keep PR names consistent
Browse files Browse the repository at this point in the history
Previously we would generate something like

```
bump ubuntu from sha256:817cfe4672284dcbfee885b1a66094fd907630d610cab329114d036716be49ba to sha256:67211c14fa74f070d27cc59d69a7fa9aeff8e28ea118ef3babc295a0428a6d21
```

when updating a Dockerfile like

```
FROM ubuntu@sha256:817cfe4672284dcbfee885b1a66094fd907630d610cab329114d036716be49ba
```

but something like

```
bump ubuntu from `817cfe4` to `67211c1`
```

when updating a Dockerfile like

```
FROM ubuntu:22.04@sha256:817cfe4672284dcbfee885b1a66094fd907630d610cab329114d036716be49ba
```

Now we generate the shortened version consistently.
  • Loading branch information
deivid-rodriguez committed Apr 3, 2023
1 parent e231c8f commit 608e38b
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 53 deletions.
4 changes: 2 additions & 2 deletions common/lib/dependabot/pull_request_creator/message_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ def previous_version(dependency)
return ref_changed?(dependency) ? previous_ref(dependency) : nil
end

if dependency.previous_version.match?(/^[0-9a-f]{40}$/)
if dependency.previous_version.match?(/^[0-9a-f]{40}/)
return previous_ref(dependency) if ref_changed?(dependency) && previous_ref(dependency)

"`#{dependency.previous_version[0..6]}`"
Expand All @@ -484,7 +484,7 @@ def previous_version(dependency)
end

def new_version(dependency)
if dependency.version.match?(/^[0-9a-f]{40}$/)
if dependency.version.match?(/^[0-9a-f]{40}/)
return new_ref(dependency) if ref_changed?(dependency) && new_ref(dependency)

"`#{dependency.version[0..6]}`"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ def commits_details(base:, head:)
groups: [],
source: {
type: "digest",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8d" \
"fc38288cf73aa07485005"
}
}],
Expand All @@ -441,7 +441,7 @@ def commits_details(base:, head:)
groups: [],
source: {
type: "digest",
digest: "sha256:2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
digest: ":2167a21baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
"aaaaaaaaaaaaaaaaaaaaa"
}
}]
Expand Down
6 changes: 3 additions & 3 deletions docker/lib/dependabot/docker/file_parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ class FileParser < Dependabot::FileParsers::Base
FROM = /FROM/i
PLATFORM = /--platform\=(?<platform>\S+)/
TAG = /:(?<tag>[\w][\w.-]{0,127})/
DIGEST = /(?<digest>sha256:[0-9a-f]{64})/
DIGEST = /(?<digest>[0-9a-f]{64})/
NAME = /\s+AS\s+(?<name>[\w-]+)/
FROM_LINE =
%r{^#{FROM}\s+(#{PLATFORM}\s+)?(#{REGISTRY}/)?
#{IMAGE}#{TAG}?(?:@#{DIGEST})?#{NAME}?}x
#{IMAGE}#{TAG}?(?:@sha256:#{DIGEST})?#{NAME}?}x

AWS_ECR_URL = /dkr\.ecr\.(?<region>[^.]+)\.amazonaws\.com/

IMAGE_SPEC = %r{^(#{REGISTRY}/)?#{IMAGE}#{TAG}?(?:@#{DIGEST})?#{NAME}?}x
IMAGE_SPEC = %r{^(#{REGISTRY}/)?#{IMAGE}#{TAG}?(?:@sha256:#{DIGEST})?#{NAME}?}x

def parse
dependency_set = DependencySet.new
Expand Down
8 changes: 4 additions & 4 deletions docker/lib/dependabot/docker/file_updater.rb
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ def update_digest_and_tag(previous_content, old_source, new_source)
old_tag = old_source[:tag]
new_tag = new_source[:tag]

old_declaration_regex = /^#{FROM_REGEX}\s+.*@#{old_digest}/
old_declaration_regex = /^#{FROM_REGEX}\s+.*@sha256:#{old_digest}/

previous_content.gsub(old_declaration_regex) do |old_dec|
old_dec.
gsub("@#{old_digest}", "@#{new_digest}").
gsub("@sha256:#{old_digest}", "@sha256:#{new_digest}").
gsub(":#{old_tag}", ":#{new_tag}")
end
end
Expand Down Expand Up @@ -181,7 +181,7 @@ def update_image(file, content)
def new_yaml_image(file)
element = dependency.requirements.find { |r| r[:file] == file.name }
prefix = element.fetch(:source)[:registry] ? "#{element.fetch(:source)[:registry]}/" : ""
digest = element.fetch(:source)[:digest] ? "@#{element.fetch(:source)[:digest]}" : ""
digest = element.fetch(:source)[:digest] ? "@sha256:#{element.fetch(:source)[:digest]}" : ""
tag = element.fetch(:source)[:tag] ? ":#{element.fetch(:source)[:tag]}" : ""
"#{prefix}#{dependency.name}#{tag}#{digest}"
end
Expand All @@ -194,7 +194,7 @@ def new_yaml_tag(file)
def old_yaml_images(file)
previous_requirements(file).map do |r|
prefix = r.fetch(:source)[:registry] ? "#{r.fetch(:source)[:registry]}/" : ""
digest = r.fetch(:source)[:digest] ? "@#{r.fetch(:source)[:digest]}" : ""
digest = r.fetch(:source)[:digest] ? "@sha256:#{r.fetch(:source)[:digest]}" : ""
tag = r.fetch(:source)[:tag] ? ":#{r.fetch(:source)[:tag]}" : ""
"#{prefix}#{dependency.name}#{tag}#{digest}"
end
Expand Down
2 changes: 1 addition & 1 deletion docker/lib/dependabot/docker/update_checker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ def digest_of(tag)
end

def fetch_digest_of(tag)
docker_registry_client.digest(docker_repo_name, tag)
docker_registry_client.digest(docker_repo_name, tag)&.delete_prefix("sha256:")
rescue *transient_docker_errors => e
attempt ||= 1
attempt += 1
Expand Down
20 changes: 10 additions & 10 deletions docker/spec/dependabot/docker/file_parser_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,14 @@
requirement: nil,
groups: [],
file: "Dockerfile",
source: { digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
source: { digest: "18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005" }
}]
end

it "has the right details" do
expect(dependency).to be_a(Dependabot::Dependency)
expect(dependency.name).to eq("my-fork/ubuntu")
expect(dependency.version).to eq("sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005")
expect(dependency.version).to eq("18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005")
expect(dependency.requirements).to eq(expected_requirements)
end
end
Expand Down Expand Up @@ -250,7 +250,7 @@
groups: [],
file: "Dockerfile",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8d" \
"fc38288cf73aa07485005"
}
}]
Expand All @@ -259,7 +259,7 @@
it "has the right details" do
expect(dependency).to be_a(Dependabot::Dependency)
expect(dependency.name).to eq("ubuntu")
expect(dependency.version).to eq("sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005")
expect(dependency.version).to eq("18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005")
expect(dependency.requirements).to eq(expected_requirements)
end
end
Expand Down Expand Up @@ -309,7 +309,7 @@
groups: [],
file: "Dockerfile",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8d" \
"fc38288cf73aa07485005"
}
}]
Expand All @@ -318,7 +318,7 @@
it "has the right details" do
expect(dependency).to be_a(Dependabot::Dependency)
expect(dependency.name).to eq("ubuntu")
expect(dependency.version).to eq("sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
expect(dependency.version).to eq("18305429afa14ea462f810146ba44d4363ae76e4c8d" \
"fc38288cf73aa07485005")
expect(dependency.requirements).to eq(expected_requirements)
end
Expand Down Expand Up @@ -361,7 +361,7 @@
file: "Dockerfile",
source: {
tag: "12.04.5",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005"
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005"
}
}])
end
Expand Down Expand Up @@ -756,7 +756,7 @@
groups: [],
file: "digest.yaml",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8d" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8d" \
"fc38288cf73aa07485005"
}
}]
Expand All @@ -765,7 +765,7 @@
it "has the right details" do
expect(dependency).to be_a(Dependabot::Dependency)
expect(dependency.name).to eq("ubuntu")
expect(dependency.version).to eq("sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005")
expect(dependency.version).to eq("18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005")
expect(dependency.requirements).to eq(expected_requirements)
end
end
Expand Down Expand Up @@ -805,7 +805,7 @@
file: "digest_and_tag.yaml",
source: {
tag: "12.04.5",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005"
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005"
}
}])
end
Expand Down
44 changes: 22 additions & 22 deletions docker/spec/dependabot/docker/file_updater_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@
file: "Dockerfile",
source: {
tag: "17.10",
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}],
Expand All @@ -350,7 +350,7 @@
file: "Dockerfile",
source: {
tag: "12.04.5",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}],
Expand Down Expand Up @@ -394,7 +394,7 @@
file: "Dockerfile",
source: {
registry: "registry-host.io:5000",
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}],
Expand All @@ -404,7 +404,7 @@
file: "Dockerfile",
source: {
registry: "registry-host.io:5000",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}],
Expand Down Expand Up @@ -450,15 +450,15 @@
groups: [],
file: "Dockerfile",
source: {
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}, {
requirement: nil,
groups: [],
file: "custom-name",
source: {
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608",
tag: "17.10"
}
Expand All @@ -468,15 +468,15 @@
groups: [],
file: "Dockerfile",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}, {
requirement: nil,
groups: [],
file: "custom-name",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005",
tag: "12.04.5"
}
Expand Down Expand Up @@ -511,7 +511,7 @@
groups: [],
file: "custom-name",
source: {
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608",
tag: "17.10"
}
Expand All @@ -521,7 +521,7 @@
groups: [],
file: "custom-name",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005",
tag: "12.04.5"
}
Expand Down Expand Up @@ -883,7 +883,7 @@
groups: [],
file: "digest.yaml",
source: {
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}],
Expand All @@ -892,7 +892,7 @@
groups: [],
file: "digest.yaml",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}],
Expand Down Expand Up @@ -931,7 +931,7 @@
file: "digest_and_tag.yaml",
source: {
tag: "17.10",
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}],
Expand All @@ -941,7 +941,7 @@
file: "digest_and_tag.yaml",
source: {
tag: "12.04.5",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}],
Expand Down Expand Up @@ -980,7 +980,7 @@
file: "private_digest.yaml",
source: {
registry: "registry-host.io:5000",
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}],
Expand All @@ -990,7 +990,7 @@
file: "private_digest.yaml",
source: {
registry: "registry-host.io:5000",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}],
Expand Down Expand Up @@ -1042,15 +1042,15 @@
groups: [],
file: "digest.yaml",
source: {
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}, {
requirement: nil,
groups: [],
file: "digest_and_tag.yaml",
source: {
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608",
tag: "17.10"
}
Expand All @@ -1060,15 +1060,15 @@
groups: [],
file: "digest.yaml",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}, {
requirement: nil,
groups: [],
file: "digest_and_tag.yaml",
source: {
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005",
tag: "12.04.5"
}
Expand Down Expand Up @@ -1104,7 +1104,7 @@
file: "digest_and_tag.yaml",
source: {
tag: "17.10",
digest: "sha256:3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
digest: "3ea1ca1aa8483a38081750953ad75046e6cc9f6b86" \
"ca97eba880ebf600d68608"
}
}],
Expand All @@ -1114,7 +1114,7 @@
file: "digest_and_tag.yaml",
source: {
tag: "12.04.5",
digest: "sha256:18305429afa14ea462f810146ba44d4363ae76e4c8" \
digest: "18305429afa14ea462f810146ba44d4363ae76e4c8" \
"dfc38288cf73aa07485005"
}
}],
Expand Down
Loading

0 comments on commit 608e38b

Please sign in to comment.