From 500d6319ff07d880e24fb1cc577ca0dcd50d63e2 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Fri, 9 Sep 2022 13:34:27 -0700 Subject: [PATCH] Add more instructions to RELEASING_RAILS --- RELEASING_RAILS.md | 55 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/RELEASING_RAILS.md b/RELEASING_RAILS.md index 8d4fa474d5..25c179c09f 100644 --- a/RELEASING_RAILS.md +++ b/RELEASING_RAILS.md @@ -46,6 +46,10 @@ branch. ## Day of release +If making multiple releases. Publish them in order from oldest to newest, to +ensure that the "greatest" version also shows up in NPM and GitHub Releases as +"latest". + ### Put the new version in the RAILS_VERSION file. Include an RC number if appropriate, e.g. `6.0.0.rc1`. @@ -59,6 +63,21 @@ browser. This will stop you from looking silly when you push an RC to rubygems.org and then realize it is broken. +### Check credentials for RubyGems, npm, and GitHub + +For npm run `npm whoami` to check that you are logged in (`npm login` if not). + +For RubyGems run `gem login`. If there's no output you are logged in. + +For GitHub run `gh auth status` to check that you are logged in (run `gh login` if not). + +npm and RubyGems require MFA. The release task will attempt to use a yubikey if +available, which as we have release several packages at once is strongly +recommended. Check that `ykman oath accounts list` has an entry for both +`npmjs.com` and `rubygems.org`, if not refer to +https://tenderlovemaking.com/2021/10/26/publishing-gems-with-your-yubikey.html +for setup instructions. + ### Release to RubyGems and npm. IMPORTANT: Several gems have JavaScript components that are released as npm @@ -79,6 +98,17 @@ Run `rake release`. This will populate the gemspecs and npm package.json with the current RAILS_VERSION, commit the changes, tag it, and push the gems to rubygems.org. +### Make GitHub Releases from pushed tags + +We use GitHub Releases to publish the combined release summary for all gems. We +can use a rake task and [GitHub cli](https://cli.github.com/) to do this +(releases can also be created or edited on the web). + +``` +bundle exec rake changelog:release_summary > ../6-1-7-release-summary.md +gh release create v6.1.7 -R rails/rails -F ../6-1-7-release-summary.md +``` + ### Send Rails release announcements Write a release announcement that includes the version, changes, and links to @@ -105,10 +135,29 @@ break existing applications. ### Post the announcement to the Rails blog. -If you used Markdown format for your email, you can just paste it into the -blog. +The blog at https://rubyonrails.org/blog is built from +https://github.com/rails/website. -* https://rubyonrails.org/blog +Create a file named like +`_posts/$(date +'%F')-Rails--have-been-released.markdown` + +Add YAML frontmatter +``` +--- +layout: post +title: 'Rails have been released!' +categories: releases +author: +published: true +date: +--- +``` + +Use the markdown generated by `rake announce` earlier as a base for the post. +Add some context for users as to the purpose of this release (bugfix/security). + +If this is a part of the latest release series, update `_data/version.yml` so +that the homepage points to the latest version. ### Post the announcement to the Rails Twitter account.