Details
-
Improvement
-
Status: Open
-
Normal
-
Resolution: Unresolved
-
None
-
None
-
Code Clarity
-
Low Hanging Fruit
-
All
-
None
Description
CircleCI is one of the main tools we use for build and test, but there is also ASF Jenkins and many people run builds in their own companies as well. It would be nice to refactor the existing CircleCI yaml to delegate to a set of scripts which could be reused by other build systems.
I feel that we could do the following directory layout
ci - top level directory containing all scripts
- <test type : unit, distributed> - directory containing the different build steps
- <test name : eg. unit, jvm-dtest, long, etc.> - a single build with the required steps to run it
- split.sh - script which takes in a output file to write to and dumps out all test cases (not partitioned)
- run_partition.sh - script which takes a partitioned list of tests and executes the build (does not move around artifacts)
This would allow CircleCI and Jenkins to run the same way, but also acts as documentation for how to run some of the tests (jvm-dtest and python dtest upgrade tests take more time to figure out how to run).
CircleCI would also be simpler as it would mostly be the circle ci specific logic (partition tests, move code/test results around, etc.) calling these scripts.