Description Background
Game uploads are currently handled by the ship function in src/utils/ship/index.ts and uploadZip in src/utils/ship/upload.ts
It is a straightforward zip and then upload to a given signed URL. This is going directly to a Digital Ocean space
There is no retry handling, any connection issue would force the user to rerun the command - just a single fetch which can fail
The zip is uploaded in a single PUT request, no multipart or resume
If the user has not change the game code much, rerunning the shipthis game ship command re-uploads all files
Nice to haves
A retry mechanism around the fetch (with an increasing backoff/delay)
Compute the zip hash before upload and only upload if different from last upload?
Allow the user to rerun a build on an old upload? (backend change)
Implement multi-part upload for resilience
Incremental upload - is there some way to determine what changed since last ship command run and only upload those changes?
Estimate and show the upload time before starting?
Reactions are currently unavailable
You can’t perform that action at this time.
Background
shipfunction in src/utils/ship/index.ts anduploadZipin src/utils/ship/upload.tsfetchwhich can failshipthis game shipcommand re-uploads all filesNice to haves
shipcommand run and only upload those changes?