attestation: retry on InvalidAttestationError instead

This commit is contained in:
Carlo Cabrera 2024-10-04 12:39:58 +08:00
parent d0e4aea853
commit 6b63660817
No known key found for this signature in database
GPG Key ID: C74D447FC549A1D0

View File

@ -179,6 +179,8 @@ module Homebrew
attestation
end
ATTESTATION_MAX_RETRIES = 5
# Verifies the given bottle against a cryptographic attestation of build provenance
# from homebrew-core's CI, falling back on a "backfill" attestation for older bottles.
#
@ -246,12 +248,15 @@ module Homebrew
end
backfill_attestation
rescue InvalidAttestationError => e
raise if ENV["HOMEBREW_GITHUB_ACTIONS"].blank?
rescue InvalidAttestationError
@attestation_retry_count ||= T.let(Hash.new(0), T.nilable(T::Hash[Bottle, Integer]))
raise if @attestation_retry_count[bottle] >= ATTESTATION_MAX_RETRIES
opoo "Attestation verification failed (please verify that this is not a network error before rebottling): #{e}"
{}
sleep_time = 3 ** @attestation_retry_count[bottle]
opoo "Failed to verify attestation. Retrying in #{sleep_time}..."
sleep sleep_time
@attestation_retry_count[bottle] += 1
retry
end
end
end