build icon indicating copy to clipboard operation
build copied to clipboard

Upload dist assets to a staging R2 bucket before a release is promoted

Open flakey5 opened this issue 2 years ago • 7 comments

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-staging bucket on Node.js's Cloudflare account
  • [x] Upload the release binaries and docs to the dist-staging bucket 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-staging to dist-prod instead of from the dist folder in the DO server.

cc @MoLow @ovflowd

flakey5 avatar Jan 02 '24 23:01 flakey5

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.

targos avatar Jan 03 '24 08:01 targos

I created the dist-staging bucket.

targos avatar Jan 03 '24 08:01 targos

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.

targos avatar Jan 03 '24 08:01 targos

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

MoLow avatar Jan 04 '24 15:01 MoLow

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

flakey5 avatar Jan 06 '24 21:01 flakey5

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?

trivikr avatar Jul 03 '24 15:07 trivikr

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.

flakey5 avatar Jul 03 '24 16:07 flakey5