fix: avoid re-uploading downloaded artifacts in sign-cache #263
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The
sign-cachecommand was re-uploading ALL artifacts to the remote cache, including those that were already present (downloaded from cache). This caused several issues:Current Behavior
Expected Behavior (SLSA L3)
Solution
Add a
HasFile()method to theRemoteCacheinterface to check if an artifact already exists before uploading. Thesign-cachecommand now:This aligns with the
buildcommand behavior, which only uploads newly built packages viaGetNewPackagesForCache().Changes
Core Changes
HasFile(ctx, key)method toRemoteCacheinterfaceHasFile()in:S3Cache- usesstorage.HasObject()GSUtilCache- usesgsutil statNoRemoteCache- returnsfalseUploadArtifactWithAttestation()to check before uploading artifactsSupporting Changes
pushOnlyRemoteCache,pullOnlyRemoteCache) to implementHasFile()Testing
New Tests
TestArtifactUploader_SkipsExistingArtifacts- Verifies existing artifacts are not re-uploadedTestArtifactUploader_UploadsNewArtifacts- Verifies new artifacts are uploadedTest Results
$ go test ./pkg/leeway/signing/... -v ✅ All tests passBenefits
Example Log Output
Before (Re-uploads everything)
After (Skips existing)
Related