1
- = Releasing Rails
1
+ # Releasing Rails
2
2
3
3
In this document, we'll cover the steps necessary to release Rails. Each
4
4
section contains steps to take during that time before the release. The times
5
5
suggested in each header are just that: suggestions. However, they should
6
6
really be considered as minimums.
7
7
8
- == 10 Days before release
8
+ ## 10 Days before release
9
9
10
10
Today is mostly coordination tasks. Here are the things you must do today:
11
11
12
- === Is the CI green? If not, make it green. (See "Fixing the CI")
12
+ ### Is the CI green? If not, make it green. (See "Fixing the CI")
13
13
14
14
Do not release with a Red CI. You can find the CI status here:
15
15
16
- http://travis-ci.org/rails/rails
16
+ ```
17
+ http://travis-ci.org/rails/rails
18
+ ```
17
19
18
- === Is Sam Ruby happy? If not, make him happy.
20
+ ### Is Sam Ruby happy? If not, make him happy.
19
21
20
22
Sam Ruby keeps a test suite that makes sure the code samples in his book (Agile
21
23
Web Development with Rails) all work. These are valuable integration tests
22
24
for Rails. You can check the status of his tests here:
23
25
24
- http://intertwingly.net/projects/dashboard.html
26
+ ```
27
+ http://intertwingly.net/projects/dashboard.html
28
+ ```
25
29
26
30
Do not release with Red AWDwR tests.
27
31
28
- === Do we have any Git dependencies? If so, contact those authors.
32
+ ### Do we have any Git dependencies? If so, contact those authors.
29
33
30
34
Having Git dependencies indicates that we depend on unreleased code.
31
35
Obviously Rails cannot be released when it depends on unreleased code.
32
36
Contact the authors of those particular gems and work out a release date that
33
37
suits them.
34
38
35
- === Contact the security team (either Koz or tenderlove)
39
+ ### Contact the security team (either Koz or tenderlove)
36
40
37
41
Let them know of your plans to release. There may be security issues to be
38
42
addressed, and that can impact your release date.
39
43
40
- === Notify implementors.
44
+ ### Notify implementors.
41
45
42
46
Ruby implementors have high stakes in making sure Rails works. Be kind and
43
47
give them a heads up that Rails will be released soonish.
@@ -54,51 +58,55 @@ lists:
54
58
55
59
Implementors will love you and help you.
56
60
57
- == 3 Days before release
61
+ ### 3 Days before release
58
62
59
63
This is when you should release the release candidate. Here are your tasks
60
64
for today:
61
65
62
- === Is the CI green? If not, make it green.
66
+ ### Is the CI green? If not, make it green.
63
67
64
- === Is Sam Ruby happy? If not, make him happy.
68
+ ### Is Sam Ruby happy? If not, make him happy.
65
69
66
- === Contact the security team. CVE emails must be sent on this day.
70
+ ### Contact the security team. CVE emails must be sent on this day.
67
71
68
- === Create a release branch.
72
+ ### Create a release branch.
69
73
70
74
From the stable branch, create a release branch. For example, if you're
71
75
releasing Rails 3.0.10, do this:
72
76
73
- [aaron@higgins rails (3-0-stable)]$ git checkout -b 3-0-10
74
- Switched to a new branch '3-0-10'
75
- [aaron@higgins rails (3-0-10)]$
77
+ ```
78
+ [aaron@higgins rails (3-0-stable)]$ git checkout -b 3-0-10
79
+ Switched to a new branch '3-0-10'
80
+ [aaron@higgins rails (3-0-10)]$
81
+ ```
76
82
77
- === Update each CHANGELOG.
83
+ ### Update each CHANGELOG.
78
84
79
85
Many times commits are made without the CHANGELOG being updated. You should
80
86
review the commits since the last release, and fill in any missing information
81
87
for each CHANGELOG.
82
88
83
89
You can review the commits for the 3.0.10 release like this:
84
90
85
- [aaron@higgins rails (3-0-10)]$ git log v3.0.9..
91
+ ```
92
+ [aaron@higgins rails (3-0-10)]$ git log v3.0.9..
93
+ ```
86
94
87
95
If you're doing a stable branch release, you should also ensure that all of
88
96
the CHANGELOG entries in the stable branch are also synced to the master
89
97
branch.
90
98
91
- === Update the RAILS_VERSION file to include the RC.
99
+ ### Update the RAILS_VERSION file to include the RC.
92
100
93
- === Build and test the gem.
101
+ ### Build and test the gem.
94
102
95
103
Run ` rake install ` to generate the gems and install them locally. Then try
96
104
generating a new app and ensure that nothing explodes.
97
105
98
106
This will stop you from looking silly when you push an RC to rubygems.org and
99
107
then realize it is broken.
100
108
101
- === Release the gem.
109
+ ### Release the gem.
102
110
103
111
IMPORTANT: Due to YAML parse problems on the rubygems.org server, it is safest
104
112
to use Ruby 1.8 when releasing.
@@ -108,14 +116,16 @@ RAILS_VERSION, commit the changes, tag it, and push the gems to rubygems.org.
108
116
Here are the commands that ` rake release ` should use, so you can understand
109
117
what to do in case anything goes wrong:
110
118
111
- $ rake all:build
112
- $ git commit -am'updating RAILS_VERSION'
113
- $ git tag -m 'v3.0.10.rc1 release' v3.0.10.rc1
114
- $ git push
115
- $ git push --tags
116
- $ for i in $(ls pkg); do gem push $i; done
119
+ ```
120
+ $ rake all:build
121
+ $ git commit -am'updating RAILS_VERSION'
122
+ $ git tag -m 'v3.0.10.rc1 release' v3.0.10.rc1
123
+ $ git push
124
+ $ git push --tags
125
+ $ for i in $(ls pkg); do gem push $i; done
126
+ ```
117
127
118
- === Send Rails release announcements
128
+ ### Send Rails release announcements
119
129
120
130
Write a release announcement that includes the version, changes, and links to
121
131
GitHub where people can find the specific commit list. Here are the mailing
@@ -132,16 +142,16 @@ IMPORTANT: If any users experience regressions when using the release
132
142
candidate, you * must* postpone the release. Bugfix releases * should not*
133
143
break existing applications.
134
144
135
- === Post the announcement to the Rails blog.
145
+ ### Post the announcement to the Rails blog.
136
146
137
147
If you used Markdown format for your email, you can just paste it in to the
138
148
blog.
139
149
140
150
* http://weblog.rubyonrails.org
141
151
142
- === Post the announcement to the Rails Twitter account.
152
+ ### Post the announcement to the Rails Twitter account.
143
153
144
- == Time between release candidate and actual release
154
+ ## Time between release candidate and actual release
145
155
146
156
Check the rails-core mailing list and the GitHub issue list for regressions in
147
157
the RC.
@@ -155,7 +165,7 @@ When you fix the regressions, do not create a new branch. Fix them on the
155
165
stable branch, then cherry pick the commit to your release branch. No other
156
166
commits should be added to the release branch besides regression fixing commits.
157
167
158
- == Day of release
168
+ ## Day of release
159
169
160
170
Many of these steps are the same as for the release candidate, so if you need
161
171
more explanation on a particular step, see the RC steps.
@@ -173,7 +183,7 @@ Today, do this stuff in this order:
173
183
* Email security lists
174
184
* Email general announcement lists
175
185
176
- === Emailing the Rails security announce list
186
+ ### Emailing the Rails security announce list
177
187
178
188
Email the security announce list once for each vulnerability fixed.
179
189
@@ -193,13 +203,13 @@ so we need to give them the security fixes in patch form.
193
203
* Merge the release branch to the stable branch.
194
204
* Drink beer (or other cocktail)
195
205
196
- == Misc
206
+ ## Misc
197
207
198
- === Fixing the CI
208
+ ### Fixing the CI
199
209
200
210
There are two simple steps for fixing the CI:
201
211
202
212
1 . Identify the problem
203
213
2 . Fix it
204
214
205
- Repeat these steps until the CI is green.
215
+ Repeat these steps until the CI is green.
0 commit comments