@@ -127,7 +127,7 @@ def short_ruby(ruby)
127127 end
128128end
129129
130- def step_for ( subdirectory , rake_task , ruby : nil , service : "default" )
130+ def step_for ( subdirectory , rake_task , ruby : nil , service : "default" , pre_steps : [ ] )
131131 return unless REPO_ROOT . join ( subdirectory ) . exist?
132132
133133 label = +"#{ subdirectory } #{ rake_task . sub ( /[:_]test|test:/ , "" ) } "
@@ -152,6 +152,9 @@ def step_for(subdirectory, rake_task, ruby: nil, service: "default")
152152 env [ "RUBY_YJIT_ENABLE" ] = "1"
153153 end
154154
155+ if !pre_steps . empty?
156+ env [ "PRE_STEPS" ] = pre_steps . join ( " && " )
157+ end
155158 command = "rake #{ rake_task } "
156159
157160 timeout = 30
@@ -186,6 +189,10 @@ def step_for(subdirectory, rake_task, ruby: nil, service: "default")
186189 } ,
187190 {
188191 DOCKER_COMPOSE_PLUGIN => {
192+ "env" => [
193+ "PRE_STEPS" ,
194+ "RACK"
195+ ] ,
189196 "run" => service ,
190197 "pull" => service ,
191198 "config" => ".buildkite/docker-compose.yml" ,
@@ -206,13 +213,13 @@ def step_for(subdirectory, rake_task, ruby: nil, service: "default")
206213 STEPS << hash
207214end
208215
209- def steps_for ( subdirectory , rake_task , service : "default" , &block )
216+ def steps_for ( subdirectory , rake_task , service : "default" , pre_steps : [ ] , &block )
210217 RUBIES . each do |ruby |
211218 if rake_task == "mysql:test"
212219 next unless ruby =~ /^ruby:(.*)/ && Gem ::Version . new ( $1) < Gem ::Version . new ( "2.4.x" )
213220 end
214221
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 )
216223 end
217224end
218225
@@ -301,6 +308,19 @@ steps_for("railties", "test", service: "railties") do |x|
301308 x [ "parallelism" ] = 12 if REPO_ROOT . join ( "railties/Rakefile" ) . read . include? ( "BUILDKITE_PARALLEL" )
302309end
303310
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+
304324# Ugly hacks to just get the build passing for now
305325STEPS . find { |s | s [ "label" ] == "activestorage (2.2)" } &.tap do |s |
306326 s [ "soft_fail" ] = true
@@ -343,6 +363,10 @@ puts YAML.dump("steps" => [
343363 DOCKER_COMPOSE_PLUGIN => {
344364 "build" => "base" ,
345365 "config" => ".buildkite/docker-compose.yml" ,
366+ "env" => [
367+ "PRE_STEPS" ,
368+ "RACK"
369+ ] ,
346370 "image-name" => image_name_for ( ruby , short : true ) ,
347371 "cache-from" => [
348372 REBUILD_ID && "base:" + image_name_for ( ruby , REBUILD_ID ) ,
0 commit comments