dependabot-docker 0.393.0 → 0.394.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2d6cd04e431779b85e8b8c29f061d80e84113a49adfab465d176e187108fbd9
4
- data.tar.gz: 9d9e028be2dcf976e6c1228aa0d982e52fedc621c5eaf7f381871a851dcfbd9c
3
+ metadata.gz: 40871e6fa5bfd72e639398d41c618a392600f4083a884fa5fe9312729978b325
4
+ data.tar.gz: b8aa69d5e13805c63e7355f3161c72b30c8220b369ea099d5bdb7cc05c61664e
5
5
  SHA512:
6
- metadata.gz: 8e8de0cdec3e34bcd3eb9beeed2eaf1294312dcf08a07e87ea8fb678be93296ffe028df5dd84055444e34d5f1031ffc11b85a1e050df300823bc7663f6c91155
7
- data.tar.gz: c4cae276224bf2a2b994f29f34f77babea8dc2562c3779006168b6200dff27d95a34ed34eef53810901d7084bb298aed9fca1daab741c3d957c34ed69b3081de
6
+ metadata.gz: 30654c530493ff9ff60f7fa6599e4018b35b984c75020648aa5a8e8c486c46f7fbf7745a8c73382a9cacd1f746281150d99a46274875e04229b60fbb5f68a158
7
+ data.tar.gz: 59667acd511aaef2640934fccbf22513c75a18e28e43db50eb28ae12039dc7349207905021cc1fa1accd95121680fb4d361a44eaa950e7df1477f0d4333ca42d
@@ -54,6 +54,8 @@ module Dependabot
54
54
 
55
55
  manifest_files.each do |file|
56
56
  dependency_set += workfile_file_dependencies(file)
57
+ rescue Dependabot::DependencyFileNotParseable => e
58
+ Dependabot.logger.warn("Failed to parse YAML file #{file.path}: #{e.message}")
57
59
  end
58
60
 
59
61
  dependency_set.dependencies
@@ -107,7 +109,6 @@ module Dependabot
107
109
 
108
110
  dependency_set
109
111
  rescue Psych::SyntaxError, Psych::DisallowedClass, Psych::BadAlias => e
110
- Dependabot.logger.error("Failed to parse file #{file.path}: #{e.message}")
111
112
  raise Dependabot::DependencyFileNotParseable.new(file.path, e.message)
112
113
  end
113
114
 
@@ -4,6 +4,7 @@
4
4
  require "sorbet-runtime"
5
5
  require "dependabot/file_fetchers"
6
6
  require "dependabot/file_fetchers/base"
7
+ require "dependabot/notices"
7
8
  require "dependabot/shared/shared_file_updater"
8
9
 
9
10
  module Dependabot
@@ -28,6 +29,21 @@ module Dependabot
28
29
  def container_image_regex
29
30
  %r{^#{FROM_REGEX}\s+(docker\.io/)?}o
30
31
  end
32
+
33
+ sig { override.returns(T::Array[Dependabot::Notice]) }
34
+ def notices
35
+ return [] unless dependencies.any? { |dependency| dependency.metadata[:docker_cooldown_date_unavailable] }
36
+
37
+ [Dependabot::Notice.new(
38
+ mode: Dependabot::Notice::NoticeMode::WARN,
39
+ type: "docker_cooldown_date_unavailable",
40
+ package_manager_name: "docker",
41
+ title: "Docker cooldown was not applied",
42
+ description: "Cooldown could not be applied because no publication date was available from the registry.",
43
+ show_in_pr: true,
44
+ show_alert: false
45
+ )]
46
+ end
31
47
  end
32
48
  end
33
49
  end
@@ -443,7 +443,10 @@ module Dependabot
443
443
 
444
444
  # If we can't determine publication details, skip cooldown for this tag and use it
445
445
  # rather than blocking the update when the registry doesn't support the required API calls
446
- return [tag] if !details || !details.released_at
446
+ if !details || !details.released_at
447
+ mark_cooldown_date_unavailable if cooldown_days_for(tag).positive?
448
+ return [tag]
449
+ end
447
450
 
448
451
  return [tag] unless cooldown_period?(T.must(details.released_at), tag)
449
452
 
@@ -508,17 +511,14 @@ module Dependabot
508
511
  sig { params(headers: T::Hash[Symbol, String], tag_name: String).returns(T.nilable(Time)) }
509
512
  def published_date_from_response_headers(headers, tag_name)
510
513
  last_modified = headers[:last_modified]
511
- published_date = begin
512
- Time.parse(last_modified) if last_modified
513
- rescue ArgumentError, TypeError => e
514
- Dependabot.logger.info(
515
- "Invalid Last-Modified header for #{docker_repo_name}:#{tag_name}: #{e.message}"
516
- )
517
- nil
518
- end
519
- # Fall back to the image config blob's "created" timestamp when Last-Modified
520
- # is absent (e.g., Docker Hub multi-arch manifest lists).
521
- published_date || fetch_image_config_created(tag_name)
514
+ return nil unless last_modified
515
+
516
+ Time.parse(last_modified)
517
+ rescue ArgumentError, TypeError => e
518
+ Dependabot.logger.info(
519
+ "Invalid Last-Modified header for #{docker_repo_name}:#{tag_name}: #{e.message}"
520
+ )
521
+ nil
522
522
  end
523
523
 
524
524
  sig do
@@ -1051,15 +1051,26 @@ module Dependabot
1051
1051
 
1052
1052
  sig { params(release_date: Time, candidate_tag: Dependabot::Docker::Tag).returns(T::Boolean) }
1053
1053
  def cooldown_period?(release_date, candidate_tag)
1054
+ Dependabot::UpdateCheckers::CooldownCalculation.within_cooldown_window?(
1055
+ release_date, cooldown_days_for(candidate_tag)
1056
+ )
1057
+ end
1058
+
1059
+ sig { params(candidate_tag: Dependabot::Docker::Tag).returns(Integer) }
1060
+ def cooldown_days_for(candidate_tag)
1054
1061
  cooldown = @update_cooldown
1055
- return false unless cooldown
1062
+ return 0 unless cooldown
1056
1063
 
1057
1064
  current_version = dependency.version ? comparable_version_from(version_tag) : nil
1058
1065
  new_version = comparable_version_from(candidate_tag)
1059
- days = Dependabot::UpdateCheckers::CooldownCalculation.cooldown_days_for(
1066
+ Dependabot::UpdateCheckers::CooldownCalculation.cooldown_days_for(
1060
1067
  cooldown, current_version, new_version
1061
1068
  )
1062
- Dependabot::UpdateCheckers::CooldownCalculation.within_cooldown_window?(release_date, days)
1069
+ end
1070
+
1071
+ sig { void }
1072
+ def mark_cooldown_date_unavailable
1073
+ dependency.metadata[:docker_cooldown_date_unavailable] = true
1063
1074
  end
1064
1075
 
1065
1076
  # Builds the PackageRelease version for a tag. Non-comparable tags (e.g.
@@ -1089,7 +1100,10 @@ module Dependabot
1089
1100
  return false unless cooldown
1090
1101
 
1091
1102
  released_at = publication_detail(Tag.new(tag_name))&.released_at
1092
- return false unless released_at
1103
+ unless released_at
1104
+ mark_cooldown_date_unavailable if cooldown.default_days.positive?
1105
+ return false
1106
+ end
1093
1107
 
1094
1108
  Dependabot::UpdateCheckers::CooldownCalculation.within_cooldown_window?(
1095
1109
  released_at, cooldown.default_days
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-docker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.393.0
4
+ version: 0.394.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.393.0
18
+ version: 0.394.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.393.0
25
+ version: 0.394.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: '0.22'
172
+ version: '1.1'
173
173
  type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '0.22'
179
+ version: '1.1'
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: turbo_tests
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -266,7 +266,7 @@ licenses:
266
266
  - MIT
267
267
  metadata:
268
268
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
269
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.393.0
269
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.394.0
270
270
  rdoc_options: []
271
271
  require_paths:
272
272
  - lib