Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ansible: promote release assets from staging r2 bucket #3620

Merged
merged 1 commit into from
Jul 3, 2024

Conversation

flakey5
Copy link
Member

@flakey5 flakey5 commented Jan 28, 2024

Note: nodejs/node#51394 should land before this does

Reference #3602

cc @targos @MoLow @ovflowd

@flakey5
Copy link
Member Author

flakey5 commented May 6, 2024

Rebased to latest as nodejs/node#51394 has landed

Comment on lines +53 to +55
relativedir=${dstdir/$dist_rootdir/"$site/"}
aws s3 cp ${dstdir}/index.json $staging_bucket/$relativedir/index.json --endpoint-url=$cloudflare_endpoint --profile $cloudflare_profile
aws s3 cp ${dstdir}/index.tab $staging_bucket/$relativedir/index.tab --endpoint-url=$cloudflare_endpoint --profile $cloudflare_profile
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we also copy the two shasum files?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The shasum files are already put into the dist-prod bucket by the release script, https://github.com/nodejs/node/blob/a923fed8743cf787add2a22def0fdbb88d736a42/tools/release.sh#L20C1-L20C18

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_resha.sh is not only called by releasers. Automation for nightly, test, rc, builds also calls it.

Copy link
Member Author

@flakey5 flakey5 May 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I see, should I remove the upload of the .asc and .sig files from the release script then?

Copy link
Member

@targos targos May 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe? I'm not entirely sure about the order in which things happen during a release.
I noticed yesterday when I released v22.2.0 that SHASUMS256.txt wasn't uploaded to R2 (only the .asc and .sig files were).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it so that it will copy the SHASUM256.txt into the staging bucket now. The later call that syncs the version in the staging bucket -> dist bucket recursively copies the entire directory, so no change should be needed there.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI doesn't upload Shasums. For releases it happens when the release script is executed

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SHASUM256.txt is generated on the www machine by the promotion script (specifically _resha.sh, which also regenerates index.json and index.tab). For releases promotion is manually triggered by the releaser. For nightly builds there's a 30 min cron job that runs promote_nightly.sh:

- "*/30 * * * * dist /home/staging/tools/promote/promote_nightly.sh nodejs"

The signed artifacts (SHASUM256.txt.asc and SHASUM256.txt.sig) are only generated for releases as part of the release script. These are generated on the releaser's machine and uploaded as part of that script.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@flakey5 I assume you have updated the code based on the comments above?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From my understanding yes

Copy link
Member

@ovflowd ovflowd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I understand this code, it looks good to me :)

Copy link
Member

@MoLow MoLow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@flakey5
Copy link
Member Author

flakey5 commented Jun 7, 2024

Can this be merged and deployed or is there something blocking it?

@ovflowd
Copy link
Member

ovflowd commented Jun 8, 2024

cc @nodejs/build?

@trivikr
Copy link
Member

trivikr commented Jun 20, 2024

I'm visiting this PR from #3461 (comment)

@flakey5 confirmed that they've incorporated suggestions from comments in #3620 (comment)
Is this ready to merge and deploy?

@targos targos merged commit 0325f2a into nodejs:main Jul 3, 2024
2 checks passed
@richardlau
Copy link
Member

I think this has broken the release workflow. We're getting an error from dist-sign (called from the release.sh script):

ssh  dist@direct.nodejs.org dist-sign nodejs v18.20.4
$dist_rootdir is not set

I've undone the changes to ansible/www-standalone/tools/promote/_resha.sh on the server (I backed up the file as _resha.sh.bak on the server before editing) and this has allowed @RafaelGSS to continue the promotion.

@flakey5
Copy link
Member Author

flakey5 commented Jul 11, 2024

Trying to find the cause and wanted to sanity check - was the change to the settings file also deployed?

@richardlau
Copy link
Member

Yes, the settings file on the server is the same as this PR.

I don't think the values read get passed to _resha.sh:
dist-sign calls resha_release.sh:

/home/staging/tools/promote/resha_release.sh $1 $2

resha_release.sh sources settings, but calls _resha.sh:

. ${__dirname}/settings
dstdir=$release_dstdir
if [ "X${1}" == "X" ]; then
echo "Please provide a version string"
exit 1
fi
${__dirname}/_resha.sh $site $dstdir $2

which errors here

if [ -z ${dist_rootdir+x} ]; then
echo "\$dist_rootdir is not set"
exit 1
fi
(i.e. it doesn't have the settings).

flakey5 added a commit to flakey5/nodejs-build that referenced this pull request Jul 11, 2024
@flakey5 flakey5 mentioned this pull request Jul 11, 2024
@flakey5
Copy link
Member Author

flakey5 commented Jul 11, 2024

Fix up: #3826

targos pushed a commit that referenced this pull request Jul 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants