@@ -127,7 +127,7 @@ def short_ruby(ruby)
127
127
end
128
128
end
129
129
130
- def step_for ( subdirectory , rake_task , ruby : nil , service : "default" )
130
+ def step_for ( subdirectory , rake_task , ruby : nil , service : "default" , pre_steps : [ ] )
131
131
return unless REPO_ROOT . join ( subdirectory ) . exist?
132
132
133
133
label = +"#{ subdirectory } #{ rake_task . sub ( /[:_]test|test:/ , "" ) } "
@@ -152,6 +152,9 @@ def step_for(subdirectory, rake_task, ruby: nil, service: "default")
152
152
env [ "RUBY_YJIT_ENABLE" ] = "1"
153
153
end
154
154
155
+ if !pre_steps . empty?
156
+ env [ "PRE_STEPS" ] = pre_steps . join ( " && " )
157
+ end
155
158
command = "rake #{ rake_task } "
156
159
157
160
timeout = 30
@@ -186,6 +189,10 @@ def step_for(subdirectory, rake_task, ruby: nil, service: "default")
186
189
} ,
187
190
{
188
191
DOCKER_COMPOSE_PLUGIN => {
192
+ "env" => [
193
+ "PRE_STEPS" ,
194
+ "RACK"
195
+ ] ,
189
196
"run" => service ,
190
197
"pull" => service ,
191
198
"config" => ".buildkite/docker-compose.yml" ,
@@ -206,13 +213,13 @@ def step_for(subdirectory, rake_task, ruby: nil, service: "default")
206
213
STEPS << hash
207
214
end
208
215
209
- def steps_for ( subdirectory , rake_task , service : "default" , &block )
216
+ def steps_for ( subdirectory , rake_task , service : "default" , pre_steps : [ ] , &block )
210
217
RUBIES . each do |ruby |
211
218
if rake_task == "mysql:test"
212
219
next unless ruby =~ /^ruby:(.*)/ && Gem ::Version . new ( $1) < Gem ::Version . new ( "2.4.x" )
213
220
end
214
221
215
- step_for ( subdirectory , rake_task , ruby : ruby , service : service , &block )
222
+ step_for ( subdirectory , rake_task , ruby : ruby , service : service , pre_steps : pre_steps , &block )
216
223
end
217
224
end
218
225
@@ -301,6 +308,19 @@ steps_for("railties", "test", service: "railties") do |x|
301
308
x [ "parallelism" ] = 12 if REPO_ROOT . join ( "railties/Rakefile" ) . read . include? ( "BUILDKITE_PARALLEL" )
302
309
end
303
310
311
+ step_for ( "actionpack" , "test" , service : "default" , pre_steps : [ "bundle install" ] ) do |x |
312
+ x [ "label" ] += " [rack-3]"
313
+ x [ "env" ] [ "RACK" ] = "~> 3.0"
314
+ x [ "soft_fail" ] = true
315
+ end
316
+
317
+ step_for ( "railties" , "test" , service : "railties" , pre_steps : [ "bundle install" ] ) do |x |
318
+ x [ "parallelism" ] = 12 if REPO_ROOT . join ( "railties/Rakefile" ) . read . include? ( "BUILDKITE_PARALLEL" )
319
+ x [ "label" ] += " [rack-3]"
320
+ x [ "env" ] [ "RACK" ] = "~> 3.0"
321
+ x [ "soft_fail" ] = true
322
+ end
323
+
304
324
# Ugly hacks to just get the build passing for now
305
325
STEPS . find { |s | s [ "label" ] == "activestorage (2.2)" } &.tap do |s |
306
326
s [ "soft_fail" ] = true
@@ -343,6 +363,10 @@ puts YAML.dump("steps" => [
343
363
DOCKER_COMPOSE_PLUGIN => {
344
364
"build" => "base" ,
345
365
"config" => ".buildkite/docker-compose.yml" ,
366
+ "env" => [
367
+ "PRE_STEPS" ,
368
+ "RACK"
369
+ ] ,
346
370
"image-name" => image_name_for ( ruby , short : true ) ,
347
371
"cache-from" => [
348
372
REBUILD_ID && "base:" + image_name_for ( ruby , REBUILD_ID ) ,
0 commit comments