@@ -24,7 +24,7 @@ Obviously Rails cannot be released when it depends on unreleased code.
24
24
Contact the authors of those particular gems and work out a release date that
25
25
suits them.
26
26
27
- ### Announce your plans to the rest of the team on Campfire
27
+ ### Announce your plans to the rest of the team on Basecamp
28
28
29
29
Let them know of your plans to release.
30
30
@@ -56,58 +56,38 @@ Include an RC number if appropriate, e.g. `6.0.0.rc1`.
56
56
57
57
### Build and test the gem.
58
58
59
- Run ` rake verify ` to generate the gems and install them locally. ` verify ` also
60
- generates a Rails app with a migration and boots it to smoke test with in your
61
- browser .
59
+ Run ` rake install ` to generate the gems and install them locally. You can now
60
+ use the version installed locally to generate a new app and check if everything
61
+ is working as expected .
62
62
63
63
This will stop you from looking silly when you push an RC to rubygems.org and
64
64
then realize it is broken.
65
65
66
- ### Check credentials for RubyGems, npm, and GitHub
67
-
68
- For npm run ` npm whoami ` to check that you are logged in (` npm login ` if not).
69
-
70
- For RubyGems run ` gem login ` . If there's no output you are logged in.
66
+ ### Check credentials for GitHub
71
67
72
68
For GitHub run ` gh auth status ` to check that you are logged in (run ` gh login ` if not).
73
69
74
- npm and RubyGems require MFA. The release task will attempt to use a yubikey if
75
- available, which as we have release several packages at once is strongly
76
- recommended. Check that ` ykman oath accounts list ` has an entry for both
77
- ` npmjs.com ` and ` rubygems.org ` , if not refer to
78
- https://tenderlovemaking.com/2021/10/26/publishing-gems-with-your-yubikey.html
79
- for setup instructions.
80
-
81
- ### Release to RubyGems and npm.
82
-
83
- IMPORTANT: Several gems have JavaScript components that are released as npm
84
- packages, so you must have Node.js installed, have an npm account (npmjs.com),
85
- and be a package owner for ` @rails/actioncable ` , ` @rails/actiontext ` , and
86
- ` @rails/activestorage ` . You can check this by making sure your
87
- npm user (` npm whoami ` ) is listed as an owner (` npm owner ls <pkg> ` ) of each
88
- package. Do not release until you're set up with npm!
89
-
90
70
The release task will sign the release tag. If you haven't got commit signing
91
71
set up, use https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work as a
92
72
guide. You can generate keys with the GPG suite from here: https://gpgtools.org .
93
73
94
- Run ` rake changelog:header ` to put a header with the new version in every
95
- CHANGELOG. Don't commit this, the release task handles it.
74
+ Run ` rake prep_release ` to prepare the release. This will populate the gemspecs and
75
+ npm package.json with the current RAILS_VERSION, add the header to the CHANGELOGs,
76
+ build the gems, and check if bundler can resolve the dependencies.
96
77
97
- Run ` rake release ` . This will populate the gemspecs and npm package.json with
98
- the current RAILS_VERSION, commit the changes, tag it, and push the gems to
99
- rubygems.org.
78
+ You can now inspect the results in the diff and see if you are happy with the
79
+ changes.
100
80
101
- ### Make GitHub Releases from pushed tags
81
+ To release, Run ` rake release ` . This will commit the changes, tag it, and create a GitHub
82
+ release with the proper release notes in draft mode.
102
83
103
- We use GitHub Releases to publish the combined release summary for all gems. We
104
- can use a rake task and [ GitHub cli] ( https://cli.github.com/ ) to do this
105
- (releases can also be created or edited on the web).
84
+ Open the corresponding GitHub release draft and check that the release notes
85
+ are correct. If everything is fine, publish the release.
106
86
107
- ```
108
- bundle exec rake changelog:release_summary > ../6-1-7-release-summary.md
109
- gh release create v6.1.7 -R rails/rails -F ../6-1-7- release-summary.md
110
- ```
87
+ ### Publish the gems
88
+
89
+ To publish the gems approve the [ Release workflow in GitHub Actions ] ( https://github.com/rails/rails/actions/workflows/ release.yml ) ,
90
+ that was created after the release was published.
111
91
112
92
### Send Rails release announcements
113
93
@@ -117,7 +97,6 @@ lists where you should announce:
117
97
118
98
* [ rubyonrails-core] ( https://discuss.rubyonrails.org/c/rubyonrails-core )
119
99
* [ rubyonrails-talk] ( https://discuss.rubyonrails.org/c/rubyonrails-talk )
120
-
121
100
122
101
Use Markdown format for your announcement. Remember to ask people to report
123
102
issues with the release candidate to the rails-core mailing list.
0 commit comments