Upload dist assets to a staging R2 bucket before a release is promoted
For anyone unfamiliar with what we're trying to do with the R2 migration, see #3461
Due to some issues we've experienced with syncing release assets from the DO server to the dist-prod R2 bucket, we want to look into having a dist-staging R2 bucket that will have the assets before the release is promoted. What we think the issue is is that the DO server simply doesn't have enough resources to handle all of the traffic that comes after a release and handle uploading assets to the prod R2 bucket at the same time. By uploading to a staging bucket before the release is promoted (and thus before cache is purged), we should be able to solve this issue.
Note this will not replace uploading the release assets to the DO server. The assets will still be uploaded there like usual.
TODO:
- [x] Create the
dist-stagingbucket on Node.js's Cloudflare account - [x] Upload the release binaries and docs to the
dist-stagingbucket as soon as they're uploaded to the DO server - [x] Update release tooling in nodejs/node to allow for uploading signed shasums to the staging bucket
- [x] Update release promotion script to copy dist assets from
dist-stagingtodist-prodinstead of from the dist folder in the DO server.
cc @MoLow @ovflowd
Upload the release binaries and docs to the dist-staging bucket as soon as they're uploaded to the DO server
I suggest doing this between the "upload to DO" and "touch .done file" steps in the existing scripts (present in nodejs/node's Makefile and vcbuild.bat files). We can do the upload from the DO server via SSH.
I created the dist-staging bucket.
Give each releaser their own S3 api token to write to the staging bucket (unless we want this step to happen from the DO server as well)
It will be easier to do it from the DO server, as the releaser already has access to it and already copies the shasums to it.
Sounds like a good way to go. see https://github.com/nodejs/build/pull/3501 - I already started implementing the part of uploading the release artifacts to R2
Pr opened here in the node repo to copy both release assets and the signed shasum files to the staging R2 bucket: https://github.com/nodejs/node/pull/51394
PR to promote release assets from staging r2 bucket is merged in https://github.com/nodejs/build/pull/3620
What are the next steps for this issue?
Nightly build was promoted from the looks of it!
https://r2.nodejs.org/download/nightly/v23.0.0-nightly2024070366b76e24e2/ https://nodejs.org/download/nightly/v23.0.0-nightly2024070366b76e24e2/
There is a weird thing with the dates going on in the directory listing, but should be an easy fix. Will take a look later.