fix: ios fingerprint update after pod install only for local builds #648
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.
Background:
The GitHub Provider action uses a file from the directory without a specific name. When we use S3 provider Rock uploads only the file with the name we specify.
You can see it here (the current working solution with the GitHub provider):
https://github.com/Expensify/App/actions/runs/19446647058
The build starts with the fingerprint:
a9d8bff32a07ce665ed3fe689a25d7fbe753ec64.After the build, there's a log entry:
Which means fingerprint was updated after
pod install.But the final uploaded file name is:
rock-ios-simulator-Debug-a9d8bff32a07ce665ed3fe689a25d7fbe753ec64So even though the artifact was uploaded and saved to the cache (runner) with the correct name, GitHub still uploads the file using the primary fingerprint.
With the S3 provider this causes a mismatch when we do
npx rock remote-cache upload --name, where we search for the specific file to upload and its not there.Without this artifactName update after pod install, we don't have a match after first local build (as artifactName is calculated without pods), but in the same time it works for CI builds from the start.
So:
Solution:
I think we could solve this by changing condition to:
if (didInstallPods && args.local) {}so there would be:
/ios(builds that would use cache don't need to waste time forpod install), to use it locally user has to remove local pods or fingerprint will be wrong