2.1 KiB
		
	
	
	
	
	
			
		
		
	
	
			2.1 KiB
		
	
	
	
	
	
GitLab tests in the Continuous Integration (CI) context
Test suite parallelization on the CI
Our current CI parallelization setup is as follows:
- The retrieve-tests-metadatajob in thepreparestage ensures we have aknapsack/report-master.jsonfile:- The knapsack/report-master.jsonfile is fetched from S3, if it's not here we initialize the file with{}.
 
- The 
- Each [rspec|rspec-ee] [unit|integration|system|geo] n mjob are run withknapsack rspecand should have an evenly distributed share of tests:- It works because the jobs have access to the knapsack/report-master.jsonsince the "artifacts from all previous stages are passed by default".
- the jobs set their own report path to
"knapsack/${TEST_TOOL}_${TEST_LEVEL}_${DATABASE}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json".
- if knapsack is doing its job, test files that are run should be listed under
Report specs, not underLeftover specs.
 
- It works because the jobs have access to the 
- The update-tests-metadatajob (which only runs on scheduled pipelines for the canonical project takes all theknapsack/rspec*_pg_*.jsonfiles and merge them all together into a singleknapsack/report-master.jsonfile that is then uploaded to S3.
After that, the next pipeline will use the up-to-date knapsack/report-master.json file.
Monitoring
The GitLab test suite is monitored for the master branch, and any branch
that includes rspec-profile in their name.
A public dashboard is available for everyone to see. Feel free to look at the slowest test files and try to improve them.
CI setup
- Rails logging to log/test.logis disabled by default in CI for performance reasons. To override this setting, provide theRAILS_ENABLE_TEST_LOGenvironment variable.