Use flatware to parallelize CI specs (#30284)
This commit is contained in:
		
					parent
					
						
							
								ad53b0ab65
							
						
					
				
			
			
				commit
				
					
						f6390c3326
					
				
			
		
					 5 changed files with 57 additions and 3 deletions
				
			
		
							
								
								
									
										8
									
								
								.github/workflows/test-ruby.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-ruby.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -132,15 +132,17 @@ jobs: | ||||||
|           additional-system-dependencies: ffmpeg libpam-dev |           additional-system-dependencies: ffmpeg libpam-dev | ||||||
| 
 | 
 | ||||||
|       - name: Load database schema |       - name: Load database schema | ||||||
|         run: './bin/rails db:create db:schema:load db:seed' |         run: | | ||||||
|  |           bin/rails db:setup | ||||||
|  |           bin/flatware fan bin/rails db:test:prepare | ||||||
| 
 | 
 | ||||||
|       - run: bin/rspec |       - run: bin/flatware rspec -r ./spec/flatware_helper.rb | ||||||
| 
 | 
 | ||||||
|       - name: Upload coverage reports to Codecov |       - name: Upload coverage reports to Codecov | ||||||
|         if: matrix.ruby-version == '.ruby-version' |         if: matrix.ruby-version == '.ruby-version' | ||||||
|         uses: codecov/codecov-action@v4 |         uses: codecov/codecov-action@v4 | ||||||
|         with: |         with: | ||||||
|           files: coverage/lcov/mastodon.lcov |           files: coverage/lcov/*.lcov | ||||||
|         env: |         env: | ||||||
|           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								Gemfile
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								Gemfile
									
										
									
									
									
								
							|  | @ -121,6 +121,9 @@ group :opentelemetry do | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| group :test do | group :test do | ||||||
|  |   # Enable usage of all available CPUs/cores during spec runs | ||||||
|  |   gem 'flatware-rspec' | ||||||
|  | 
 | ||||||
|   # Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab |   # Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab | ||||||
|   gem 'rspec-github', '~> 2.4', require: false |   gem 'rspec-github', '~> 2.4', require: false | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								Gemfile.lock
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								Gemfile.lock
									
										
									
									
									
								
							|  | @ -264,6 +264,11 @@ GEM | ||||||
|     ffi-compiler (1.3.2) |     ffi-compiler (1.3.2) | ||||||
|       ffi (>= 1.15.5) |       ffi (>= 1.15.5) | ||||||
|       rake |       rake | ||||||
|  |     flatware (2.3.2) | ||||||
|  |       thor (< 2.0) | ||||||
|  |     flatware-rspec (2.3.2) | ||||||
|  |       flatware (= 2.3.2) | ||||||
|  |       rspec (>= 3.6) | ||||||
|     fog-core (2.4.0) |     fog-core (2.4.0) | ||||||
|       builder |       builder | ||||||
|       excon (~> 0.71) |       excon (~> 0.71) | ||||||
|  | @ -700,6 +705,10 @@ GEM | ||||||
|       chunky_png (~> 1.0) |       chunky_png (~> 1.0) | ||||||
|       rqrcode_core (~> 1.0) |       rqrcode_core (~> 1.0) | ||||||
|     rqrcode_core (1.2.0) |     rqrcode_core (1.2.0) | ||||||
|  |     rspec (3.13.0) | ||||||
|  |       rspec-core (~> 3.13.0) | ||||||
|  |       rspec-expectations (~> 3.13.0) | ||||||
|  |       rspec-mocks (~> 3.13.0) | ||||||
|     rspec-core (3.13.0) |     rspec-core (3.13.0) | ||||||
|       rspec-support (~> 3.13.0) |       rspec-support (~> 3.13.0) | ||||||
|     rspec-expectations (3.13.1) |     rspec-expectations (3.13.1) | ||||||
|  | @ -932,6 +941,7 @@ DEPENDENCIES | ||||||
|   faker (~> 3.2) |   faker (~> 3.2) | ||||||
|   fast_blank (~> 1.0) |   fast_blank (~> 1.0) | ||||||
|   fastimage |   fastimage | ||||||
|  |   flatware-rspec | ||||||
|   fog-core (<= 2.4.0) |   fog-core (<= 2.4.0) | ||||||
|   fog-openstack (~> 1.0) |   fog-openstack (~> 1.0) | ||||||
|   fuubar (~> 2.5) |   fuubar (~> 2.5) | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								bin/flatware
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								bin/flatware
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | #!/usr/bin/env ruby | ||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | # | ||||||
|  | # This file was generated by Bundler. | ||||||
|  | # | ||||||
|  | # The application 'flatware' is installed as part of a gem, and | ||||||
|  | # this file is here to facilitate running it. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) | ||||||
|  | 
 | ||||||
|  | bundle_binstub = File.expand_path("bundle", __dir__) | ||||||
|  | 
 | ||||||
|  | if File.file?(bundle_binstub) | ||||||
|  |   if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") | ||||||
|  |     load(bundle_binstub) | ||||||
|  |   else | ||||||
|  |     abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. | ||||||
|  | Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | require "rubygems" | ||||||
|  | require "bundler/setup" | ||||||
|  | 
 | ||||||
|  | load Gem.bin_path("flatware", "flatware") | ||||||
							
								
								
									
										12
									
								
								spec/flatware_helper.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								spec/flatware_helper.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | ||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | if defined?(Flatware) | ||||||
|  |   Flatware.configure do |config| | ||||||
|  |     config.after_fork do |test_env_number| | ||||||
|  |       unless ENV.fetch('DISABLE_SIMPLECOV', nil) == 'true' | ||||||
|  |         require 'simplecov' | ||||||
|  |         SimpleCov.at_fork.call(test_env_number) # Combines parallel coverage results | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue